summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2009-08-15 13:10:46 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2009-08-15 13:10:46 +0000
commit4af3c864bc5e8f66409d78209f25adecdeb5184a (patch)
treedaec43a9f3197f30a944c3b3223104faa661fae1 /llvm/lib/CodeGen/PrologEpilogInserter.cpp
parent766352fbd2d4eea0cdbd69a6b3d438f9943473f0 (diff)
downloadbcm5719-llvm-4af3c864bc5e8f66409d78209f25adecdeb5184a.tar.gz
bcm5719-llvm-4af3c864bc5e8f66409d78209f25adecdeb5184a.zip
Don't setCalleeSavedInfoValid() until spills are interted.
In a naked function, the flag is never set and getPristineRegs() returns an empty list. That means naked functions are able to clobber callee saved registers, but that is the whole point of naked functions. This fixes PR4716. llvm-svn: 79096
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r--llvm/lib/CodeGen/PrologEpilogInserter.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
index 8b05f4c4a3e..608e4c5763a 100644
--- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
@@ -214,8 +214,6 @@ void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
}
}
- FFI->setCalleeSavedInfoValid(true);
-
if (CSI.empty())
return; // Early exit if no callee saved registers are modified!
@@ -274,6 +272,8 @@ void PEI::insertCSRSpillsAndRestores(MachineFunction &Fn) {
MachineFrameInfo *FFI = Fn.getFrameInfo();
const std::vector<CalleeSavedInfo> &CSI = FFI->getCalleeSavedInfo();
+ FFI->setCalleeSavedInfoValid(true);
+
// Early exit if no callee saved registers are modified!
if (CSI.empty())
return;
OpenPOWER on IntegriCloud