diff options
| author | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-19 17:06:35 +0000 | 
|---|---|---|
| committer | Gordon Henriksen <gordonhenriksen@mac.com> | 2008-08-19 17:06:35 +0000 | 
| commit | 72bd9dfdad00bd398ee2a4174fa18cab8f65a30d (patch) | |
| tree | a7e4fc74c67e63e599e9823f4a427d0e5505eb02 /llvm/lib/CodeGen/GCStrategy.cpp | |
| parent | 67102b281e82014414db2c18b64e5e783e316b44 (diff) | |
| download | llvm-72bd9dfdad00bd398ee2a4174fa18cab8f65a30d.zip llvm-72bd9dfdad00bd398ee2a4174fa18cab8f65a30d.tar.gz llvm-72bd9dfdad00bd398ee2a4174fa18cab8f65a30d.tar.bz2  | |
[PR2327] Leverage TargetRegisterInfo to compute frame offsets for GC metadata.
llvm-svn: 54994
Diffstat (limited to 'llvm/lib/CodeGen/GCStrategy.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/GCStrategy.cpp | 12 | 
1 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/GCStrategy.cpp b/llvm/lib/CodeGen/GCStrategy.cpp index 6ca3682..b02d168 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);  | 
