|  | ; Simple test of non-fused compare/branch. | 
|  |  | 
|  | ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ | 
|  | ; RUN:   | FileCheck %s | 
|  | ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ | 
|  | ; RUN:   | FileCheck --check-prefix=OPTM1 %s | 
|  |  | 
|  | define void @testBool(i32 %a, i32 %b) { | 
|  | entry: | 
|  | %cmp = icmp slt i32 %a, %b | 
|  | %cmp1 = icmp sgt i32 %a, %b | 
|  | br i1 %cmp, label %if.then, label %if.end | 
|  |  | 
|  | if.then:                                          ; preds = %entry | 
|  | %cmp_ext = zext i1 %cmp to i32 | 
|  | tail call void @use(i32 %cmp_ext) | 
|  | br label %if.end | 
|  |  | 
|  | if.end:                                           ; preds = %if.then, %entry | 
|  | br i1 %cmp1, label %if.then5, label %if.end7 | 
|  |  | 
|  | if.then5:                                         ; preds = %if.end | 
|  | %cmp1_ext = zext i1 %cmp1 to i32 | 
|  | tail call void @use(i32 %cmp1_ext) | 
|  | br label %if.end7 | 
|  |  | 
|  | if.end7:                                          ; preds = %if.then5, %if.end | 
|  | ret void | 
|  | } | 
|  |  | 
|  | declare void @use(i32) | 
|  |  | 
|  | ; CHECK-LABEL: testBool | 
|  | ; Two bool computations | 
|  | ; CHECK:      cmp | 
|  | ; CHECK:      cmp | 
|  | ; Test first bool | 
|  | ; CHECK:      cmp | 
|  | ; CHECK:      call | 
|  | ; Test second bool | 
|  | ; CHECK:      cmp | 
|  | ; CHECK:      call | 
|  | ; CHECK:      ret | 
|  | ; | 
|  | ; OPTM1-LABEL: testBool | 
|  | ; Two bool computations | 
|  | ; OPTM1:      cmp | 
|  | ; OPTM1:      cmp | 
|  | ; Test first bool | 
|  | ; OPTM1:      cmp | 
|  | ; OPTM1:      call | 
|  | ; Test second bool | 
|  | ; OPTM1:      cmp | 
|  | ; OPTM1:      call | 
|  | ; OPTM1:      ret |