diff options
author | Owen Anderson <resistor@mac.com> | 2006-05-03 01:29:57 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2006-05-03 01:29:57 +0000 |
commit | a69571c7991813c93cba64e88eced6899ce93d81 (patch) | |
tree | 06bc81338c35527b69a6e8e7434e7c1a824bc4ca /lib/Target/PowerPC | |
parent | 0eb4d6b52e1b5db9a4c86e5a954356ae3507a287 (diff) |
Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.
This fixes PR 759.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC')
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 12 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCTargetMachine.cpp | 3 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCTargetMachine.h | 2 |
3 files changed, 10 insertions, 7 deletions
diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index f3a03114b2..cfcf4dfe2e 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -582,7 +582,7 @@ bool DarwinAsmPrinter::doInitialization(Module &M) { } bool DarwinAsmPrinter::doFinalization(Module &M) { - const TargetData &TD = TM.getTargetData(); + const TargetData *TD = TM.getTargetData(); // Print out module-level global variables here. for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); @@ -595,7 +595,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { std::string name = Mang->getValueName(I); Constant *C = I->getInitializer(); - unsigned Size = TD.getTypeSize(C->getType()); + unsigned Size = TD->getTypeSize(C->getType()); unsigned Align = getPreferredAlignmentLog(I); if (C->isNullValue() && /* FIXME: Verify correct */ @@ -761,7 +761,7 @@ bool AIXAsmPrinter::runOnMachineFunction(MachineFunction &MF) { bool AIXAsmPrinter::doInitialization(Module &M) { SwitchSection("", 0); - const TargetData &TD = TM.getTargetData(); + const TargetData *TD = TM.getTargetData(); O << "\t.machine \"ppc64\"\n" << "\t.toc\n" @@ -810,7 +810,7 @@ bool AIXAsmPrinter::doInitialization(Module &M) { } bool AIXAsmPrinter::doFinalization(Module &M) { - const TargetData &TD = TM.getTargetData(); + const TargetData *TD = TM.getTargetData(); // Print out module-level global variables for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) { @@ -821,8 +821,8 @@ bool AIXAsmPrinter::doFinalization(Module &M) { if (I->hasInternalLinkage()) { O << "\t.lcomm " << Name << ",16,_global.bss_c"; } else { - O << "\t.comm " << Name << "," << TD.getTypeSize(I->getType()) - << "," << Log2_32((unsigned)TD.getTypeAlignment(I->getType())); + O << "\t.comm " << Name << "," << TD->getTypeSize(I->getType()) + << "," << Log2_32((unsigned)TD->getTypeAlignment(I->getType())); } O << "\t\t" << CommentString << " "; WriteAsOperand(O, I, false, true, &M); diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp index d35ceb15f6..fd9df20b77 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -58,7 +58,8 @@ unsigned PPCTargetMachine::getModuleMatchQuality(const Module &M) { } PPCTargetMachine::PPCTargetMachine(const Module &M, const std::string &FS) -: TargetMachine("PowerPC", false, 4, 4, 4, 4, 4, 4, 2, 1, 1), +: TargetMachine("PowerPC"), + DataLayout("PowerPC", false, 4, 4, 4, 4, 4), Subtarget(M, FS), FrameInfo(*this, false), JITInfo(*this), TLInfo(*this), InstrItins(Subtarget.getInstrItineraryData()) { if (TargetDefault == PPCTarget) { diff --git a/lib/Target/PowerPC/PPCTargetMachine.h b/lib/Target/PowerPC/PPCTargetMachine.h index 3b2e481c7b..e4893a86dd 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.h +++ b/lib/Target/PowerPC/PPCTargetMachine.h @@ -26,6 +26,7 @@ class PassManager; class GlobalValue; class PPCTargetMachine : public TargetMachine { + const TargetData DataLayout; // Calculates type size & alignment PPCInstrInfo InstrInfo; PPCSubtarget Subtarget; PPCFrameInfo FrameInfo; @@ -43,6 +44,7 @@ public: virtual const MRegisterInfo *getRegisterInfo() const { return &InstrInfo.getRegisterInfo(); } + virtual const TargetData *getTargetData() const { return &DataLayout; } virtual const InstrItineraryData getInstrItineraryData() const { return InstrItins; } |