25 lines
		
	
	
		
			746 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			746 B
		
	
	
	
		
			LLVM
		
	
	
	
| ; This test should cause the TargetMaterializeAlloca to be invoked
 | |
| ; RUN: llc -O0 -fast-isel-abort=1 -verify-machineinstrs -mtriple=arm64-apple-darwin -disable-fp-elim < %s | FileCheck %s
 | |
| 
 | |
| %struct.S1Ty = type { i64 }
 | |
| %struct.S2Ty = type { %struct.S1Ty, %struct.S1Ty }
 | |
| 
 | |
| define void @takeS1(%struct.S1Ty* %V) nounwind {
 | |
| entry:
 | |
|   %V.addr = alloca %struct.S1Ty*, align 8
 | |
|   store %struct.S1Ty* %V, %struct.S1Ty** %V.addr, align 8
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @main() nounwind {
 | |
| entry:
 | |
| ; CHECK: main
 | |
| ; CHECK: add x29, sp, #16
 | |
| ; CHECK: mov [[REG:x[0-9]+]], sp
 | |
| ; CHECK-NEXT: add x0, [[REG]], #8
 | |
|   %E = alloca %struct.S2Ty, align 4
 | |
|   %B = getelementptr inbounds %struct.S2Ty, %struct.S2Ty* %E, i32 0, i32 1
 | |
|   call void @takeS1(%struct.S1Ty* %B)
 | |
|   ret void
 | |
| }
 |