mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 13:46:13 +00:00
d96428597b
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)
|
|
|