39 lines
		
	
	
		
			892 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			892 B
		
	
	
	
		
			LLVM
		
	
	
	
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 | 
						|
; RUN: opt < %s -simplifycfg -S | FileCheck %s
 | 
						|
; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s
 | 
						|
 | 
						|
declare void @foo()
 | 
						|
 | 
						|
; FIXME: We can replace %phi with true.
 | 
						|
define void @test_01(i1 %cond) {
 | 
						|
; CHECK-LABEL: @test_01(
 | 
						|
; CHECK-NEXT:  entry:
 | 
						|
; CHECK-NEXT:    [[DOT:%.*]] = select i1 [[COND:%.*]], i1 true, i1 undef
 | 
						|
; CHECK-NEXT:    br i1 [[DOT]], label [[RET_1:%.*]], label [[COMMON_RET:%.*]]
 | 
						|
; CHECK:       common.ret:
 | 
						|
; CHECK-NEXT:    ret void
 | 
						|
; CHECK:       ret_1:
 | 
						|
; CHECK-NEXT:    call void @foo()
 | 
						|
; CHECK-NEXT:    br label [[COMMON_RET]]
 | 
						|
;
 | 
						|
entry:
 | 
						|
  br i1 %cond, label %if.true, label %if.false
 | 
						|
 | 
						|
if.true:
 | 
						|
  br label %merge
 | 
						|
 | 
						|
if.false:
 | 
						|
  br label %merge
 | 
						|
 | 
						|
merge:
 | 
						|
  %phi = phi i1 [true, %if.true], [undef, %if.false]
 | 
						|
  br i1 %phi, label %ret_1, label %ret_2
 | 
						|
 | 
						|
ret_1:
 | 
						|
  call void @foo()
 | 
						|
  ret void
 | 
						|
 | 
						|
ret_2:
 | 
						|
  ret void
 | 
						|
}
 |