mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	a while ago.  We now produce:
_foo:
	mflr r0
	std r0, 16(r1)
	ld r2, 16(r1)
	std r2, 0(r3)
	ld r0, 16(r1)
	mtlr r0
	blr 
instead of:
_foo:
	mflr r0
	std r0, 16(r1)
	lis r0, 0
	ori r0, r0, 16
	ldx r2, r1, r0
	std r2, 0(r3)
	ld r0, 16(r1)
	mtlr r0
	blr 
for:
void foo(void **X) {
  *X = __builtin_return_address(0);
}
on ppc64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44701 91177308-0d34-0410-b5e6-96231b3b80d8
		
	
		
			
				
	
	
		
			16 lines
		
	
	
		
			395 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			395 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llvm-as < %s | llc -march=ppc32 | grep mflr
 | |
| ; RUN: llvm-as < %s | llc -march=ppc32 | grep lwz
 | |
| ; RUN: llvm-as < %s | llc -march=ppc64 | grep {ld r., 16(r1)}
 | |
| 
 | |
| target triple = "powerpc-apple-darwin8"
 | |
| 
 | |
| define void @foo(i8** %X) {
 | |
| entry:
 | |
| 	%tmp = tail call i8* @llvm.returnaddress( i32 0 )		; <i8*> [#uses=1]
 | |
| 	store i8* %tmp, i8** %X, align 4
 | |
| 	ret void
 | |
| }
 | |
| 
 | |
| declare i8* @llvm.returnaddress(i32)
 | |
| 
 |