82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: opt < %s -sccp -S | FileCheck %s
 | 
						|
 | 
						|
define i1 @float.1(i1 %cmp) {
 | 
						|
; CHECK-LABEL: define i1 @float.1(i1 %cmp) {
 | 
						|
 | 
						|
; CHECK-LABEL: end:
 | 
						|
; CHECK-NEXT:    ret i1 true
 | 
						|
;
 | 
						|
entry:
 | 
						|
  br i1 %cmp, label %if.true, label %end
 | 
						|
 | 
						|
if.true:
 | 
						|
  br label %end
 | 
						|
 | 
						|
end:
 | 
						|
  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true]
 | 
						|
  %c = fcmp ueq float %p, 1.0
 | 
						|
  ret i1 %c
 | 
						|
}
 | 
						|
 | 
						|
define i1 @float.2(i1 %cmp) {
 | 
						|
; CHECK-LABEL: define i1 @float.2(i1 %cmp) {
 | 
						|
 | 
						|
; CHECK-LABEL: end:
 | 
						|
; CHECK-NEXT:    %p = phi float [ 1.000000e+00, %entry ], [ 2.000000e+00, %if.true ]
 | 
						|
; CHECK-NEXT:    %c = fcmp ueq float %p, 1.000000e+00
 | 
						|
; CHECK-NEXT:    ret i1 %c
 | 
						|
;
 | 
						|
entry:
 | 
						|
  br i1 %cmp, label %if.true, label %end
 | 
						|
 | 
						|
if.true:
 | 
						|
  br label %end
 | 
						|
 | 
						|
end:
 | 
						|
  %p = phi float [ 1.0, %entry ], [ 2.0, %if.true]
 | 
						|
  %c = fcmp ueq float %p, 1.0
 | 
						|
  ret i1 %c
 | 
						|
}
 | 
						|
 | 
						|
define i1 @float.3(float %f, i1 %cmp) {
 | 
						|
; CHECK-LABEL: define i1 @float.3(float %f, i1 %cmp)
 | 
						|
 | 
						|
; CHECK-LABEL: end:
 | 
						|
; CHECK-NEXT:    %p = phi float [ 1.000000e+00, %entry ], [ %f, %if.true ]
 | 
						|
; CHECK-NEXT:    %c = fcmp ueq float %p, 1.000000e+00
 | 
						|
; CHECK-NEXT:    ret i1 %c
 | 
						|
;
 | 
						|
entry:
 | 
						|
  br i1 %cmp, label %if.true, label %end
 | 
						|
 | 
						|
if.true:
 | 
						|
  br label %end
 | 
						|
 | 
						|
end:
 | 
						|
  %p = phi float [ 1.0, %entry ], [ %f, %if.true]
 | 
						|
  %c = fcmp ueq float %p, 1.0
 | 
						|
  ret i1 %c
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
define i1 @float.4_unreachable(float %f, i1 %cmp) {
 | 
						|
; CHECK-LABEL: define i1 @float.4_unreachable(float %f, i1 %cmp)
 | 
						|
 | 
						|
; CHECK-LABEL: end:
 | 
						|
; CHECK-NEXT:    ret i1 false
 | 
						|
;
 | 
						|
entry:
 | 
						|
  br i1 %cmp, label %if.true, label %end
 | 
						|
 | 
						|
if.true:
 | 
						|
  br label %end
 | 
						|
 | 
						|
dead:
 | 
						|
  br label %end
 | 
						|
 | 
						|
end:
 | 
						|
  %p = phi float [ 1.0, %entry ], [ 1.0, %if.true], [ %f, %dead ]
 | 
						|
  %c = fcmp une float %p, 1.0
 | 
						|
  ret i1 %c
 | 
						|
}
 |