1; Simple test of non-fused compare/branch. 2 3; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ 4; RUN: -allow-externally-defined-symbols | FileCheck %s 5; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ 6; RUN: -allow-externally-defined-symbols | FileCheck --check-prefix=OPTM1 %s 7 8define internal void @testBool(i32 %a, i32 %b) { 9entry: 10 %cmp = icmp slt i32 %a, %b 11 %cmp1 = icmp sgt i32 %a, %b 12 br i1 %cmp, label %if.then, label %if.end 13 14if.then: ; preds = %entry 15 %cmp_ext = zext i1 %cmp to i32 16 tail call void @use(i32 %cmp_ext) 17 br label %if.end 18 19if.end: ; preds = %if.then, %entry 20 br i1 %cmp1, label %if.then5, label %if.end7 21 22if.then5: ; preds = %if.end 23 %cmp1_ext = zext i1 %cmp1 to i32 24 tail call void @use(i32 %cmp1_ext) 25 br label %if.end7 26 27if.end7: ; preds = %if.then5, %if.end 28 ret void 29} 30 31declare void @use(i32) 32 33; CHECK-LABEL: testBool 34; Two bool computations 35; CHECK: cmp 36; CHECK: cmp 37; Test first bool 38; CHECK: cmp 39; CHECK: call 40; Test second bool 41; CHECK: cmp 42; CHECK: call 43; CHECK: ret 44; 45; OPTM1-LABEL: testBool 46; Two bool computations 47; OPTM1: cmp 48; OPTM1: cmp 49; Test first bool 50; OPTM1: cmp 51; OPTM1: call 52; Test second bool 53; OPTM1: cmp 54; OPTM1: call 55; OPTM1: ret 56