brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 7083aa2 Raw
88 lines · c
1// RUN: %clang_cc1 -triple %itanium_abi_triple %s -o - -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -fcoverage-mcdc | FileCheck %s -check-prefix=MCDC2// RUN: %clang_cc1 -triple %itanium_abi_triple %s -o - -emit-llvm -fprofile-instrument=clang -fcoverage-mapping | FileCheck %s -check-prefix=NOMCDC3 4int test(int a, int b, int c, int d, int e, int f) {5  return ((!a && b) || ((!c && d) || (e && !f)));6}7 8// NOMCDC-NOT: %mcdc.addr9// NOMCDC-NOT: __profbm_test10 11// MCDC BOOKKEEPING.12// MCDC: @__profbm_test = private global [2 x i8] zeroinitializer13// MCDC: @__profc_test = private global [9 x i64] zeroinitializer14 15// ALLOCATE MCDC TEMP AND ZERO IT.16// MCDC-LABEL: @test(17// MCDC: %mcdc.addr = alloca i32, align 418// MCDC: store i32 0, ptr %mcdc.addr, align 419 20// SHIFT FIRST CONDITION WITH ID = 0.21// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %a.addr, align 422// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 023// MCDC-DAG:  %[[LNOT:lnot[0-9]*]] = xor i1 %[[BOOL]]24// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 425// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 026// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 027// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[LNOT]], i32 %[[LAB2]], i32 %[[LAB3]]28// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 429 30// SHIFT SECOND CONDITION WITH ID = 2.31// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %b.addr, align 432// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 033// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 434// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 1435// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 136// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]37// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 438 39// SHIFT THIRD CONDITION WITH ID = 1.40// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %c.addr, align 441// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 042// MCDC-DAG:  %[[LNOT:lnot[0-9]*]] = xor i1 %[[BOOL]]43// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 444// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 045// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 046// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[LNOT]], i32 %[[LAB2]], i32 %[[LAB3]]47// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 448 49// SHIFT FOURTH CONDITION WITH ID = 4.50// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %d.addr, align 451// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 052// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 453// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 1254// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 255// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]56// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 457 58// SHIFT FIFTH CONDITION WITH ID = 3.59// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %e.addr, align 460// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 061// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 462// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 063// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 064// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]65// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 466 67// SHIFT SIXTH CONDITION WITH ID = 5.68// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %f.addr, align 469// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 070// MCDC-DAG:  %[[LNOT:lnot[0-9]*]] = xor i1 %[[BOOL]]71// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 472// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 873// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 474// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[LNOT]], i32 %[[LAB2]], i32 %[[LAB3]]75// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 476 77// UPDATE FINAL BITMASK WITH RESULT.78// MCDC-DAG:  %[[TEMP0:mcdc.temp[0-9]*]] = load i32, ptr %mcdc.addr, align 479// MCDC:  %[[TEMP:[0-9]+]] = add i32 %[[TEMP0]], 080// MCDC:  %[[LAB1:[0-9]+]] = lshr i32 %[[TEMP]], 381// MCDC:  %[[LAB4:[0-9]+]] = getelementptr inbounds i8, ptr @__profbm_test, i32 %[[LAB1]]82// MCDC:  %[[LAB5:[0-9]+]] = and i32 %[[TEMP]], 783// MCDC:  %[[LAB6:[0-9]+]] = trunc i32 %[[LAB5]] to i884// MCDC:  %[[LAB7:[0-9]+]] = shl i8 1, %[[LAB6]]85// MCDC:  %[[BITS:.+]] = load i8, ptr %[[LAB4]], align 186// MCDC:  %[[LAB8:[0-9]+]] = or i8 %[[BITS]], %[[LAB7]]87// MCDC:  store i8 %[[LAB8]], ptr %[[LAB4]], align 188