mirror of
https://github.com/RPCS3/llvm.git
synced 2026-08-27 02:51:23 -04:00
394b2c2817
This ensures that frame-based unwinding will continue to work when calling a noreturn function; there is not much use having the caller's frame pointer saved if you don't also have the caller's program counter. Patch by James Clarke. Differential Revision: https://reviews.llvm.org/D68542 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373907 91177308-0d34-0410-b5e6-96231b3b80d8
30 lines
982 B
LLVM
30 lines
982 B
LLVM
; RUN: llc -march=mipsel < %s -verify-machineinstrs | FileCheck %s
|
|
|
|
|
|
define void @tnaked() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
; CHECK: .ent tnaked
|
|
; CHECK-LABEL: tnaked:
|
|
; CHECK-NOT: .frame {{.*}}
|
|
; CHECK-NOT: .mask {{.*}}
|
|
; CHECK-NOT: .fmask {{.*}}
|
|
; CHECK-NOT: addiu $sp, $sp, -8
|
|
|
|
define void @tnonaked() #1 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
; CHECK: .ent tnonaked
|
|
; CHECK-LABEL: tnonaked:
|
|
; CHECK: .frame $fp,8,$ra
|
|
; CHECK: .mask 0xc0000000,-4
|
|
; CHECK: .fmask 0x00000000,0
|
|
; CHECK: addiu $sp, $sp, -8
|
|
|
|
attributes #0 = { naked noinline nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
|