You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt -mergefunc -S < %s | FileCheck %s
 | |
| 
 | |
| ; CHECK-LABEL: @int_ptr_arg_different
 | |
| ; CHECK-NEXT: call void asm
 | |
| 
 | |
| ; CHECK-LABEL: @int_ptr_arg_same
 | |
| ; CHECK-NEXT: %2 = bitcast i32* %0 to float*
 | |
| ; CHECK-NEXT: tail call void @float_ptr_arg_same(float* %2)
 | |
| 
 | |
| ; CHECK-LABEL: @int_ptr_null
 | |
| ; CHECK-NEXT: tail call void @float_ptr_null()
 | |
| 
 | |
| ; Used to satisfy minimum size limit
 | |
| declare void @stuff()
 | |
| 
 | |
| ; Can be merged
 | |
| define void @float_ptr_null() {
 | |
|   call void asm "nop", "r"(float* null)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @int_ptr_null() {
 | |
|   call void asm "nop", "r"(i32* null)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| ; Can be merged (uses same argument differing by pointer type)
 | |
| define void @float_ptr_arg_same(float*) {
 | |
|   call void asm "nop", "r"(float* %0)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @int_ptr_arg_same(i32*) {
 | |
|   call void asm "nop", "r"(i32* %0)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| ; Can not be merged (uses different arguments)
 | |
| define void @float_ptr_arg_different(float*, float*) {
 | |
|   call void asm "nop", "r"(float* %0)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @int_ptr_arg_different(i32*, i32*) {
 | |
|   call void asm "nop", "r"(i32* %1)
 | |
|   call void @stuff()
 | |
|   ret void
 | |
| }
 |