brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 9a56d97 Raw
103 lines · cpp
1// RUN: %clang_cc1 -triple %itanium_abi_triple %s -o - -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -fcoverage-mcdc | FileCheck %s -check-prefix=MCDCCTOR2// RUN: %clang_cc1 -triple %itanium_abi_triple %s -o - -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -fcoverage-mcdc | FileCheck %s -check-prefix=MCDCDTOR3 4extern void foo();5extern void bar();6class Value {7  public:8    void setValue(int len);9    int getValue(void);10    Value();   // This is the constructor declaration11    ~Value();  // This is the destructor declaration12 13  private:14    int value;15};16 17// Member functions definitions including constructor18Value::Value(void) {19  if (value != 2 || value != 6)20    foo();21}22Value::~Value(void) {23  if (value != 2 || value != 3)24    bar();25}26 27// MCDC BOOKKEEPING.28// MCDCCTOR: @__profbm__ZN5ValueC2Ev = private global [1 x i8] zeroinitializer29// MCDCCTOR: @__profc__ZN5ValueC2Ev = private global [4 x i64] zeroinitializer30 31// ALLOCATE MCDC TEMP AND ZERO IT.32// MCDCCTOR-LABEL: @_ZN5ValueC2Ev(33// MCDCCTOR: %mcdc.addr = alloca i32, align 434// MCDCCTOR: store i32 0, ptr %mcdc.addr, align 435 36// SHIFT FIRST CONDITION WITH ID = 0.37// MCDCCTOR:  %[[LAB1:[0-9]+]] = load i32, ptr %value, align 438// MCDCCTOR-DAG:  %[[BOOL:cmp[0-9]*]] = icmp ne i32 %[[LAB1]], 239// MCDCCTOR-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 440// MCDCCTOR-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 041// MCDCCTOR-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 042// MCDCCTOR-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]43// MCDCCTOR-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 444 45// SHIFT SECOND CONDITION WITH ID = 1.46// MCDCCTOR:  %[[LAB1:[0-9]+]] = load i32, ptr %value2, align 447// MCDCCTOR-DAG:  %[[BOOL:cmp[0-9]*]] = icmp ne i32 %[[LAB1]], 648// MCDCCTOR-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 449// MCDCCTOR-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 250// MCDCCTOR-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 151// MCDCCTOR-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]52// MCDCCTOR-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 453 54// UPDATE FINAL BITMASK WITH RESULT.55// MCDCCTOR-DAG:  %[[TEMP0:mcdc.temp[0-9]*]] = load i32, ptr %mcdc.addr, align 456// MCDCCTOR:  %[[TEMP:[0-9]+]] = add i32 %[[TEMP0]], 057// MCDCCTOR:  %[[LAB1:[0-9]+]] = lshr i32 %[[TEMP]], 358// MCDCCTOR:  %[[LAB4:[0-9]+]] = getelementptr inbounds i8, ptr @__profbm__ZN5ValueC2Ev, i32 %[[LAB1]]59// MCDCCTOR:  %[[LAB5:[0-9]+]] = and i32 %[[TEMP]], 760// MCDCCTOR:  %[[LAB6:[0-9]+]] = trunc i32 %[[LAB5]] to i861// MCDCCTOR:  %[[LAB7:[0-9]+]] = shl i8 1, %[[LAB6]]62// MCDCCTOR:  %[[BITS:.+]] = load i8, ptr %[[LAB4]], align 163// MCDCCTOR:  %[[LAB8:[0-9]+]] = or i8 %[[BITS]], %[[LAB7]]64// MCDCCTOR:  store i8 %[[LAB8]], ptr %[[LAB4]], align 165 66// MCDCDTOR: @__profbm__ZN5ValueD2Ev = private global [1 x i8] zeroinitializer67// MCDCDTOR: @__profc__ZN5ValueD2Ev = private global [4 x i64] zeroinitializer68 69// ALLOCATE MCDC TEMP AND ZERO IT.70// MCDCDTOR-LABEL: @_ZN5ValueD2Ev(71// MCDCDTOR: %mcdc.addr = alloca i32, align 472// MCDCDTOR: store i32 0, ptr %mcdc.addr, align 473 74// SHIFT FIRST CONDITION WITH ID = 0.75// MCDCDTOR:  %[[LAB1:[0-9]+]] = load i32, ptr %value, align 476// MCDCDTOR-DAG:  %[[BOOL:cmp[0-9]*]] = icmp ne i32 %[[LAB1]], 277// MCDCDTOR-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 478// MCDCDTOR-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 079// MCDCDTOR-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 080// MCDCDTOR-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]81// MCDCDTOR-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 482 83// SHIFT SECOND CONDITION WITH ID = 1.84// MCDCDTOR:  %[[LAB1:[0-9]+]] = load i32, ptr %value2, align 485// MCDCDTOR-DAG:  %[[BOOL:cmp[0-9]*]] = icmp ne i32 %[[LAB1]], 386// MCDCDTOR-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 487// MCDCDTOR-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 288// MCDCDTOR-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 189// MCDCDTOR-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]90// MCDCDTOR-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 491 92// UPDATE FINAL BITMASK WITH RESULT.93// MCDCDTOR-DAG:  %[[TEMP0:mcdc.temp[0-9]*]] = load i32, ptr %mcdc.addr, align 494// MCDCDTOR:  %[[TEMP:[0-9]+]] = add i32 %[[TEMP0]], 095// MCDCDTOR:  %[[LAB1:[0-9]+]] = lshr i32 %[[TEMP]], 396// MCDCDTOR:  %[[LAB4:[0-9]+]] = getelementptr inbounds i8, ptr @__profbm__ZN5ValueD2Ev, i32 %[[LAB1]]97// MCDCDTOR:  %[[LAB5:[0-9]+]] = and i32 %[[TEMP]], 798// MCDCDTOR:  %[[LAB6:[0-9]+]] = trunc i32 %[[LAB5]] to i899// MCDCDTOR:  %[[LAB7:[0-9]+]] = shl i8 1, %[[LAB6]]100// MCDCDTOR:  %[[BITS:.+]] = load i8, ptr %[[LAB4]], align 1101// MCDCDTOR:  %[[LAB8:[0-9]+]] = or i8 %[[BITS]], %[[LAB7]]102// MCDCDTOR:  store i8 %[[LAB8]], ptr %[[LAB4]], align 1103