brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · e8eadf7 Raw
68 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 b, int c, int d, int e, int f) {5  return ((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 [1 x i8] zeroinitializer13 14// ALLOCATE MCDC TEMP AND ZERO IT.15// MCDC-LABEL: @test(16// MCDC: %mcdc.addr = alloca i32, align 417// MCDC: store i32 0, ptr %mcdc.addr, align 418 19// TERNARY TRUE SHOULD SHIFT ID = 0 FOR CONDITION 'c'.20// MCDC-LABEL: cond.true:21// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %c.addr, align 422// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 023// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 424// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 025// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 026// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]27// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 428 29// TERNARY FALSE SHOULD SHIFT ID = 0 FOR CONDITION 'd'.30// MCDC-LABEL: cond.false:31// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %d.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]], 035// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 036// 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 SECOND CONDITION WITH ID = 2.40// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %e.addr, align 441// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 042// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 443// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 044// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 145// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]46// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 447 48// SHIFT THIRD CONDITION WITH ID = 1.49// MCDC:  %[[LAB1:[0-9]+]] = load i32, ptr %f.addr, align 450// MCDC-DAG:  %[[BOOL:tobool[0-9]*]] = icmp ne i32 %[[LAB1]], 051// MCDC-DAG:  %[[TEMP:mcdc.*]] = load i32, ptr %mcdc.addr, align 452// MCDC-DAG:  %[[LAB2:[0-9]+]] = add i32 %[[TEMP]], 353// MCDC-DAG:  %[[LAB3:[0-9]+]] = add i32 %[[TEMP]], 254// MCDC-DAG:  %[[LAB4:[0-9]+]] = select i1 %[[BOOL]], i32 %[[LAB2]], i32 %[[LAB3]]55// MCDC-DAG:  store i32 %[[LAB4]], ptr %mcdc.addr, align 456 57// UPDATE FINAL BITMASK WITH RESULT.58// MCDC-DAG:  %[[TEMP0:mcdc.temp[0-9]*]] = load i32, ptr %mcdc.addr, align 459// MCDC:  %[[TEMP:[0-9]+]] = add i32 %[[TEMP0]], 060// MCDC:  %[[LAB1:[0-9]+]] = lshr i32 %[[TEMP]], 361// MCDC:  %[[LAB4:[0-9]+]] = getelementptr inbounds i8, ptr @__profbm_test, i32 %[[LAB1]]62// MCDC:  %[[LAB5:[0-9]+]] = and i32 %[[TEMP]], 763// MCDC:  %[[LAB6:[0-9]+]] = trunc i32 %[[LAB5]] to i864// MCDC:  %[[LAB7:[0-9]+]] = shl i8 1, %[[LAB6]]65// MCDC:  %[[BITS:.+]] = load i8, ptr %[[LAB4]], align 166// MCDC:  %[[LAB8:[0-9]+]] = or i8 %[[BITS]], %[[LAB7]]67// MCDC:  store i8 %[[LAB8]], ptr %[[LAB4]], align 168