forked from OSchip/llvm-project
				
			[ValueTracking] add tests for known-nonnull-at; NFC
llvm-svn: 290790
This commit is contained in:
		
							parent
							
								
									2177f3ce5f
								
							
						
					
					
						commit
						5865d12e9f
					
				| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
 | 
			
		||||
; RUN: opt -S -instsimplify < %s | FileCheck %s
 | 
			
		||||
 | 
			
		||||
declare void @bar(i8* %a, i8* nonnull %b)
 | 
			
		||||
 | 
			
		||||
; 'y' must be nonnull.
 | 
			
		||||
 | 
			
		||||
define i1 @caller1(i8* %x, i8* %y) {
 | 
			
		||||
; CHECK-LABEL: @caller1(
 | 
			
		||||
; CHECK-NEXT:    call void @bar(i8* %x, i8* %y)
 | 
			
		||||
; CHECK-NEXT:    [[NULL_CHECK:%.*]] = icmp eq i8* %y, null
 | 
			
		||||
; CHECK-NEXT:    ret i1 [[NULL_CHECK]]
 | 
			
		||||
;
 | 
			
		||||
  call void @bar(i8* %x, i8* %y)
 | 
			
		||||
  %null_check = icmp eq i8* %y, null
 | 
			
		||||
  ret i1 %null_check
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
; Don't know anything about 'y'.
 | 
			
		||||
 | 
			
		||||
define i1 @caller2(i8* %x, i8* %y) {
 | 
			
		||||
; CHECK-LABEL: @caller2(
 | 
			
		||||
; CHECK-NEXT:    call void @bar(i8* %y, i8* %x)
 | 
			
		||||
; CHECK-NEXT:    [[NULL_CHECK:%.*]] = icmp eq i8* %y, null
 | 
			
		||||
; CHECK-NEXT:    ret i1 [[NULL_CHECK]]
 | 
			
		||||
;
 | 
			
		||||
  call void @bar(i8* %y, i8* %x)
 | 
			
		||||
  %null_check = icmp eq i8* %y, null
 | 
			
		||||
  ret i1 %null_check
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
; 'y' must be nonnull.
 | 
			
		||||
 | 
			
		||||
define i1 @caller3(i8* %x, i8* %y) {
 | 
			
		||||
; CHECK-LABEL: @caller3(
 | 
			
		||||
; CHECK-NEXT:    call void @bar(i8* %x, i8* %y)
 | 
			
		||||
; CHECK-NEXT:    [[NULL_CHECK:%.*]] = icmp ne i8* %y, null
 | 
			
		||||
; CHECK-NEXT:    ret i1 [[NULL_CHECK]]
 | 
			
		||||
;
 | 
			
		||||
  call void @bar(i8* %x, i8* %y)
 | 
			
		||||
  %null_check = icmp ne i8* %y, null
 | 
			
		||||
  ret i1 %null_check
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
; Don't know anything about 'y'.
 | 
			
		||||
 | 
			
		||||
define i1 @caller4(i8* %x, i8* %y) {
 | 
			
		||||
; CHECK-LABEL: @caller4(
 | 
			
		||||
; CHECK-NEXT:    call void @bar(i8* %y, i8* %x)
 | 
			
		||||
; CHECK-NEXT:    [[NULL_CHECK:%.*]] = icmp ne i8* %y, null
 | 
			
		||||
; CHECK-NEXT:    ret i1 [[NULL_CHECK]]
 | 
			
		||||
;
 | 
			
		||||
  call void @bar(i8* %y, i8* %x)
 | 
			
		||||
  %null_check = icmp ne i8* %y, null
 | 
			
		||||
  ret i1 %null_check
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue