summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorGordon Henriksen <gordonhenriksen@mac.com>2008-08-19 17:06:35 +0000
committerGordon Henriksen <gordonhenriksen@mac.com>2008-08-19 17:06:35 +0000
commit72bd9dfdad00bd398ee2a4174fa18cab8f65a30d (patch)
treea7e4fc74c67e63e599e9823f4a427d0e5505eb02 /llvm
parent67102b281e82014414db2c18b64e5e783e316b44 (diff)
downloadbcm5719-llvm-72bd9dfdad00bd398ee2a4174fa18cab8f65a30d.tar.gz
bcm5719-llvm-72bd9dfdad00bd398ee2a4174fa18cab8f65a30d.zip
[PR2327] Leverage TargetRegisterInfo to compute frame offsets for GC metadata.
llvm-svn: 54994
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/CodeGen/GCStrategy.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/GCStrategy.cpp b/llvm/lib/CodeGen/GCStrategy.cpp
index 6ca368240d2..b02d1685ad4 100644
--- a/llvm/lib/CodeGen/GCStrategy.cpp
+++ b/llvm/lib/CodeGen/GCStrategy.cpp
@@ -26,6 +26,7 @@
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Support/Compiler.h"
using namespace llvm;
@@ -356,14 +357,12 @@ void MachineCodeAnalysis::FindSafePoints(MachineFunction &MF) {
}
void MachineCodeAnalysis::FindStackOffsets(MachineFunction &MF) {
- uint64_t StackSize = MFI->getStackSize();
- uint64_t OffsetAdjustment = MFI->getOffsetAdjustment();
- uint64_t OffsetOfLocalArea = TM->getFrameInfo()->getOffsetOfLocalArea();
+ const TargetRegisterInfo *TRI = TM->getRegisterInfo();
+ assert(TRI && "TargetRegisterInfo not available!");
for (GCFunctionInfo::roots_iterator RI = FI->roots_begin(),
RE = FI->roots_end(); RI != RE; ++RI)
- RI->StackOffset = MFI->getObjectOffset(RI->Num) + StackSize
- - OffsetOfLocalArea + OffsetAdjustment;
+ RI->StackOffset = TRI->getFrameIndexOffset(MF, RI->Num);
}
bool MachineCodeAnalysis::runOnMachineFunction(MachineFunction &MF) {
@@ -378,10 +377,9 @@ bool MachineCodeAnalysis::runOnMachineFunction(MachineFunction &MF) {
TM = &MF.getTarget();
MMI = &getAnalysis<MachineModuleInfo>();
TII = TM->getInstrInfo();
- MFI = MF.getFrameInfo();
// Find the size of the stack frame.
- FI->setFrameSize(MFI->getStackSize());
+ FI->setFrameSize(MF.getFrameInfo()->getStackSize());
// Find all safe points.
FindSafePoints(MF);
OpenPOWER on IntegriCloud