25 lines
		
	
	
		
			808 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			808 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -o - %s | FileCheck %s
 | |
| target triple="aarch64--"
 | |
| 
 | |
| declare void @somefunc()
 | |
| define preserve_mostcc void @test_ccmismatch_notail() {
 | |
| ; Ensure that no tail call is used here, as the called function somefunc does
 | |
| ; not preserve enough registers for preserve_mostcc.
 | |
| ; CHECK-LABEL: test_ccmismatch_notail:
 | |
| ; CHECK-NOT: b somefunc
 | |
| ; CHECK: bl somefunc
 | |
|   tail call void @somefunc()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| declare preserve_mostcc void @some_preserve_most_func()
 | |
| define void @test_ccmismatch_tail() {
 | |
| ; We can perform a tail call here, because some_preserve_most_func preserves
 | |
| ; all registers necessary for test_ccmismatch_tail.
 | |
| ; CHECK-LABEL: test_ccmismatch_tail:
 | |
| ; CHECK-NOT: bl some_preserve_most_func
 | |
| ; CHECK: b some_preserve_most_func
 | |
|   tail call preserve_mostcc void @some_preserve_most_func()
 | |
|   ret void
 | |
| }
 |