brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · e0dd28f Raw
50 lines · c
1//===---- MCDCState.h - Per-Function MC/DC state ----------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9//  Per-Function MC/DC state for PGO10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_LIB_CODEGEN_MCDCSTATE_H14#define LLVM_CLANG_LIB_CODEGEN_MCDCSTATE_H15 16#include "llvm/ADT/DenseMap.h"17#include "llvm/ADT/SmallVector.h"18#include "llvm/ProfileData/Coverage/MCDCTypes.h"19 20namespace clang {21class Stmt;22} // namespace clang23 24namespace clang::CodeGen::MCDC {25 26using namespace llvm::coverage::mcdc;27 28/// Per-Function MC/DC state29struct State {30  unsigned BitmapBits = 0;31 32  struct Decision {33    unsigned BitmapIdx;34    llvm::SmallVector<std::array<int, 2>> Indices;35  };36 37  llvm::DenseMap<const Stmt *, Decision> DecisionByStmt;38 39  struct Branch {40    ConditionID ID;41    const Stmt *DecisionStmt;42  };43 44  llvm::DenseMap<const Stmt *, Branch> BranchByStmt;45};46 47} // namespace clang::CodeGen::MCDC48 49#endif // LLVM_CLANG_LIB_CODEGEN_MCDCSTATE_H50