Remove some uneeded pseudos in the presence of the naked function attribute.

llvm-svn: 181072
This commit is contained in:
Reed Kotler 2013-05-03 23:17:24 +00:00
parent 5b637078e1
commit 0f2b10eb0d
2 changed files with 37 additions and 2 deletions

View File

@ -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"));

View 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" }