34 lines
		
	
	
		
			662 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			662 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: opt -bdce -S < %s | FileCheck %s
 | |
| 
 | |
| declare i32 @strlen(i8*) readonly nounwind
 | |
| 
 | |
| define void @test1() {
 | |
|   call i32 @strlen( i8* null )
 | |
|   ret void
 | |
| 
 | |
| ; CHECK-LABEL: @test1
 | |
| ; CHECK-NOT: call
 | |
| ; CHECK: ret void
 | |
| }
 | |
| 
 | |
| define i32 @test2() personality i32 (...)* @__gxx_personality_v0 {
 | |
|   ; invoke of pure function should not be deleted!
 | |
|   invoke i32 @strlen( i8* null ) readnone
 | |
|                   to label %Cont unwind label %Other
 | |
| 
 | |
| Cont:           ; preds = %0
 | |
|   ret i32 0
 | |
| 
 | |
| Other:          ; preds = %0
 | |
|    %exn = landingpad {i8*, i32}
 | |
|             cleanup
 | |
|   ret i32 1
 | |
| 
 | |
| ; CHECK-LABEL: @test2
 | |
| ; CHECK: invoke
 | |
| ; CHECK: ret i32 1
 | |
| }
 | |
| 
 | |
| declare i32 @__gxx_personality_v0(...)
 | |
| 
 |