1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -frame-pointer=all -mtriple=i686-- | FileCheck %s --check-prefix=i686
; RUN: llc < %s -frame-pointer=all -mtriple=x86_64-- | FileCheck %s --check-prefix=x86_64
define i8* @h() nounwind readnone optsize {
; i686-LABEL: h:
; i686: # %bb.0: # %entry
; i686-NEXT: pushl %ebp
; i686-NEXT: movl %esp, %ebp
; i686-NEXT: movl (%ebp), %eax
; i686-NEXT: movl (%eax), %eax
; i686-NEXT: movl 4(%eax), %eax
; i686-NEXT: popl %ebp
; i686-NEXT: retl
;
; x86_64-LABEL: h:
; x86_64: # %bb.0: # %entry
; x86_64-NEXT: pushq %rbp
; x86_64-NEXT: movq %rsp, %rbp
; x86_64-NEXT: movq (%rbp), %rax
; x86_64-NEXT: movq (%rax), %rax
; x86_64-NEXT: movq 8(%rax), %rax
; x86_64-NEXT: popq %rbp
; x86_64-NEXT: retq
entry:
%0 = tail call i8* @llvm.returnaddress(i32 2) ; <i8*> [#uses=1]
ret i8* %0
}
declare i8* @llvm.returnaddress(i32) nounwind readnone
define i8* @g() nounwind readnone optsize {
; i686-LABEL: g:
; i686: # %bb.0: # %entry
; i686-NEXT: pushl %ebp
; i686-NEXT: movl %esp, %ebp
; i686-NEXT: movl (%ebp), %eax
; i686-NEXT: movl 4(%eax), %eax
; i686-NEXT: popl %ebp
; i686-NEXT: retl
;
; x86_64-LABEL: g:
; x86_64: # %bb.0: # %entry
; x86_64-NEXT: pushq %rbp
; x86_64-NEXT: movq %rsp, %rbp
; x86_64-NEXT: movq (%rbp), %rax
; x86_64-NEXT: movq 8(%rax), %rax
; x86_64-NEXT: popq %rbp
; x86_64-NEXT: retq
entry:
%0 = tail call i8* @llvm.returnaddress(i32 1) ; <i8*> [#uses=1]
ret i8* %0
}
define i8* @f() nounwind readnone optsize {
; i686-LABEL: f:
; i686: # %bb.0: # %entry
; i686-NEXT: pushl %ebp
; i686-NEXT: movl %esp, %ebp
; i686-NEXT: movl 4(%ebp), %eax
; i686-NEXT: popl %ebp
; i686-NEXT: retl
;
; x86_64-LABEL: f:
; x86_64: # %bb.0: # %entry
; x86_64-NEXT: pushq %rbp
; x86_64-NEXT: movq %rsp, %rbp
; x86_64-NEXT: movq 8(%rbp), %rax
; x86_64-NEXT: popq %rbp
; x86_64-NEXT: retq
entry:
%0 = tail call i8* @llvm.returnaddress(i32 0) ; <i8*> [#uses=1]
ret i8* %0
}
|