35 lines
		
	
	
		
			781 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			781 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -march=hexagon -print-after=finalize-isel -o /dev/null 2>&1 < %s | FileCheck %s
 | |
| ; REQUIRES: asserts
 | |
| 
 | |
| ; CHECK: J2_call @f1
 | |
| ; CHECK: PS_call_nr @f2
 | |
| 
 | |
| target triple = "hexagon"
 | |
| 
 | |
| @g0 = external global i32
 | |
| 
 | |
| ; Function Attrs: nounwind
 | |
| define i32 @f0() #0 {
 | |
| b0:
 | |
|   %v0 = load i32, i32* @g0, align 4
 | |
|   %v1 = tail call i32 @f1(i32 %v0) #0
 | |
|   %v2 = icmp eq i32 %v1, 0
 | |
|   br i1 %v2, label %b1, label %b2
 | |
| 
 | |
| b1:                                               ; preds = %b0
 | |
|   tail call void @f2() #2
 | |
|   unreachable
 | |
| 
 | |
| b2:                                               ; preds = %b0
 | |
|   ret i32 0
 | |
| }
 | |
| 
 | |
| declare i32 @f1(i32)
 | |
| 
 | |
| ; Function Attrs: noreturn
 | |
| declare void @f2() #1
 | |
| 
 | |
| attributes #0 = { nounwind "disable-tail-calls"="true" }
 | |
| attributes #1 = { noreturn }
 | |
| attributes #2 = { noreturn nounwind }
 |