1. Tidy up jump table info.

2. Allow the jit to handle PIC relocable jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32581 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Laskey
2006-12-14 19:17:33 +00:00
parent 8897a7b02e
commit acd80ac7bb
5 changed files with 85 additions and 61 deletions

View File

@@ -21,6 +21,7 @@
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Function.h"
@@ -117,7 +118,14 @@ MachineFunction::MachineFunction(const Function *F,
MFInfo = 0;
FrameInfo = new MachineFrameInfo();
ConstantPool = new MachineConstantPool(TM.getTargetData());
JumpTableInfo = new MachineJumpTableInfo(TM.getTargetData());
// Set up jump table.
const TargetData &TD = *TM.getTargetData();
bool IsPic = TM.getRelocationModel() == Reloc::PIC_;
unsigned EntrySize = IsPic ? 4 : TD.getPointerSize();
unsigned Alignment = IsPic ? TD.getIntAlignment() : TD.getPointerAlignment();
JumpTableInfo = new MachineJumpTableInfo(EntrySize, Alignment);
BasicBlocks.Parent = this;
}
@@ -380,14 +388,6 @@ void MachineJumpTableInfo::print(std::ostream &OS) const {
}
}
unsigned MachineJumpTableInfo::getEntrySize() const {
return TD->getPointerSize();
}
unsigned MachineJumpTableInfo::getAlignment() const {
return TD->getPointerAlignment();
}
void MachineJumpTableInfo::dump() const { print(*cerr.stream()); }