mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-17 00:50:58 +00:00
Remove some uneeded pseudos in the presence of the naked function attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181072 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3170ad7dd4
commit
2bb955a693
@ -249,12 +249,18 @@ void MipsAsmPrinter::EmitFunctionEntryLabel() {
|
||||
void MipsAsmPrinter::EmitFunctionBodyStart() {
|
||||
MCInstLowering.Initialize(Mang, &MF->getContext());
|
||||
|
||||
emitFrameDirective();
|
||||
bool IsNakedFunction =
|
||||
MF->getFunction()->
|
||||
getAttributes().hasAttribute(AttributeSet::FunctionIndex,
|
||||
Attribute::Naked);
|
||||
if (!IsNakedFunction)
|
||||
emitFrameDirective();
|
||||
|
||||
if (OutStreamer.hasRawTextSupport()) {
|
||||
SmallString<128> Str;
|
||||
raw_svector_ostream OS(Str);
|
||||
printSavedRegsBitmask(OS);
|
||||
if (!IsNakedFunction)
|
||||
printSavedRegsBitmask(OS);
|
||||
OutStreamer.EmitRawText(OS.str());
|
||||
if (!Subtarget->inMips16Mode()) {
|
||||
OutStreamer.EmitRawText(StringRef("\t.set\tnoreorder"));
|
||||
|
29
test/CodeGen/Mips/tnaked.ll
Normal file
29
test/CodeGen/Mips/tnaked.ll
Normal file
@ -0,0 +1,29 @@
|
||||
; RUN: llc -march=mipsel < %s | FileCheck %s
|
||||
|
||||
|
||||
define void @tnaked() #0 {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: .ent tnaked
|
||||
; CHECK: 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: tnonaked:
|
||||
; CHECK: .frame $fp,8,$ra
|
||||
; CHECK: .mask 0x40000000,-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"="true" "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"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
Loading…
Reference in New Issue
Block a user