[PATCH] D28829: [thumb, framelowering] Reset NoVRegs in Thumb1FrameLowering::emitPrologue.
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 17 14:57:34 PST 2017
fhahn created this revision.
Herald added a subscriber: rengolin.
In this function, virtual registers can be introduced (for example
through calls to emitThumbRegPlusImmInReg). doScavengeFrameVirtualRegs
will replace those virtual registers with concrete registers later on
in PrologEpilogInserter, which sets NoVRegs again.
This patch fixes the Codegen/Thumb/segmented-stacks.ll test case which
failed with expensive checks.
https://llvm.org/bugs/show_bug.cgi?id=27484
https://reviews.llvm.org/D28829
Files:
lib/CodeGen/PrologEpilogInserter.cpp
lib/Target/ARM/Thumb1FrameLowering.cpp
Index: lib/Target/ARM/Thumb1FrameLowering.cpp
===================================================================
--- lib/Target/ARM/Thumb1FrameLowering.cpp
+++ lib/Target/ARM/Thumb1FrameLowering.cpp
@@ -347,6 +347,10 @@
// checks for hasVarSizedObjects.
if (MFI.hasVarSizedObjects())
AFI->setShouldRestoreSPFromFP(true);
+
+ // In some cases, virtual registers have been introduced, e.g. by uses of
+ // emitThumbRegPlusImmInReg.
+ MF.getProperties().reset(MachineFunctionProperties::Property::NoVRegs);
}
static bool isCSRestore(MachineInstr &MI, const MCPhysReg *CSRegs) {
Index: lib/CodeGen/PrologEpilogInserter.cpp
===================================================================
--- lib/CodeGen/PrologEpilogInserter.cpp
+++ lib/CodeGen/PrologEpilogInserter.cpp
@@ -1237,4 +1237,6 @@
++I;
}
}
+
+ MF.getProperties().set(MachineFunctionProperties::Property::NoVRegs);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28829.84752.patch
Type: text/x-patch
Size: 914 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170117/7e839d0e/attachment.bin>
More information about the llvm-commits
mailing list