75 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -frame-pointer=all -mtriple=i686-- | FileCheck %s --check-prefix=i6863; RUN: llc < %s -frame-pointer=all -mtriple=x86_64-- | FileCheck %s --check-prefix=x86_644 5define ptr @h() nounwind readnone optsize {6; i686-LABEL: h:7; i686: # %bb.0: # %entry8; i686-NEXT: pushl %ebp9; i686-NEXT: movl %esp, %ebp10; i686-NEXT: movl (%ebp), %eax11; i686-NEXT: movl (%eax), %eax12; i686-NEXT: movl 4(%eax), %eax13; i686-NEXT: popl %ebp14; i686-NEXT: retl15;16; x86_64-LABEL: h:17; x86_64: # %bb.0: # %entry18; x86_64-NEXT: pushq %rbp19; x86_64-NEXT: movq %rsp, %rbp20; x86_64-NEXT: movq (%rbp), %rax21; x86_64-NEXT: movq (%rax), %rax22; x86_64-NEXT: movq 8(%rax), %rax23; x86_64-NEXT: popq %rbp24; x86_64-NEXT: retq25entry:26 %0 = tail call ptr @llvm.returnaddress(i32 2) ; <ptr> [#uses=1]27 ret ptr %028}29 30declare ptr @llvm.returnaddress(i32) nounwind readnone31 32define ptr @g() nounwind readnone optsize {33; i686-LABEL: g:34; i686: # %bb.0: # %entry35; i686-NEXT: pushl %ebp36; i686-NEXT: movl %esp, %ebp37; i686-NEXT: movl (%ebp), %eax38; i686-NEXT: movl 4(%eax), %eax39; i686-NEXT: popl %ebp40; i686-NEXT: retl41;42; x86_64-LABEL: g:43; x86_64: # %bb.0: # %entry44; x86_64-NEXT: pushq %rbp45; x86_64-NEXT: movq %rsp, %rbp46; x86_64-NEXT: movq (%rbp), %rax47; x86_64-NEXT: movq 8(%rax), %rax48; x86_64-NEXT: popq %rbp49; x86_64-NEXT: retq50entry:51 %0 = tail call ptr @llvm.returnaddress(i32 1) ; <ptr> [#uses=1]52 ret ptr %053}54 55define ptr @f() nounwind readnone optsize {56; i686-LABEL: f:57; i686: # %bb.0: # %entry58; i686-NEXT: pushl %ebp59; i686-NEXT: movl %esp, %ebp60; i686-NEXT: movl 4(%ebp), %eax61; i686-NEXT: popl %ebp62; i686-NEXT: retl63;64; x86_64-LABEL: f:65; x86_64: # %bb.0: # %entry66; x86_64-NEXT: pushq %rbp67; x86_64-NEXT: movq %rsp, %rbp68; x86_64-NEXT: movq 8(%rbp), %rax69; x86_64-NEXT: popq %rbp70; x86_64-NEXT: retq71entry:72 %0 = tail call ptr @llvm.returnaddress(i32 0) ; <ptr> [#uses=1]73 ret ptr %074}75