Changes in directory llvm/include/llvm/Target:
TargetData.h updated: 1.33 -> 1.34 TargetLowering.h updated: 1.69 -> 1.70 TargetMachine.h updated: 1.63 -> 1.64 --- Log message: 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: http://llvm.cs.uiuc.edu/PR759 . --- Diffs of the changes: (+15 -23) TargetData.h | 22 +++++++++++----------- TargetLowering.h | 4 ++-- TargetMachine.h | 12 ++---------- 3 files changed, 15 insertions(+), 23 deletions(-) Index: llvm/include/llvm/Target/TargetData.h diff -u llvm/include/llvm/Target/TargetData.h:1.33 llvm/include/llvm/Target/TargetData.h:1.34 --- llvm/include/llvm/Target/TargetData.h:1.33 Fri Jan 13 18:06:42 2006 +++ llvm/include/llvm/Target/TargetData.h Tue May 2 20:29:56 2006 @@ -54,18 +54,18 @@ unsigned char ByteAl = 1, unsigned char BoolAl = 1); // Copy constructor - TargetData (const TargetData &TD) : + TargetData (const TargetData *TD) : ImmutablePass(), - LittleEndian(TD.isLittleEndian()), - BoolAlignment(TD.getBoolAlignment()), - ByteAlignment(TD.getByteAlignment()), - ShortAlignment(TD.getShortAlignment()), - IntAlignment(TD.getIntAlignment()), - LongAlignment(TD.getLongAlignment()), - FloatAlignment(TD.getFloatAlignment()), - DoubleAlignment(TD.getDoubleAlignment()), - PointerSize(TD.getPointerSize()), - PointerAlignment(TD.getPointerAlignment()) { + LittleEndian(TD->isLittleEndian()), + BoolAlignment(TD->getBoolAlignment()), + ByteAlignment(TD->getByteAlignment()), + ShortAlignment(TD->getShortAlignment()), + IntAlignment(TD->getIntAlignment()), + LongAlignment(TD->getLongAlignment()), + FloatAlignment(TD->getFloatAlignment()), + DoubleAlignment(TD->getDoubleAlignment()), + PointerSize(TD->getPointerSize()), + PointerAlignment(TD->getPointerAlignment()) { } TargetData(const std::string &ToolName, const Module *M); Index: llvm/include/llvm/Target/TargetLowering.h diff -u llvm/include/llvm/Target/TargetLowering.h:1.69 llvm/include/llvm/Target/TargetLowering.h:1.70 --- llvm/include/llvm/Target/TargetLowering.h:1.69 Thu Apr 20 03:54:13 2006 +++ llvm/include/llvm/Target/TargetLowering.h Tue May 2 20:29:56 2006 @@ -78,7 +78,7 @@ virtual ~TargetLowering(); TargetMachine &getTargetMachine() const { return TM; } - const TargetData &getTargetData() const { return TD; } + const TargetData *getTargetData() const { return TD; } bool isLittleEndian() const { return IsLittleEndian; } MVT::ValueType getPointerTy() const { return PointerTy; } @@ -648,7 +648,7 @@ std::vector<unsigned> LegalAddressScales; TargetMachine &TM; - const TargetData &TD; + const TargetData *TD; /// IsLittleEndian - True if this is a little endian target. /// Index: llvm/include/llvm/Target/TargetMachine.h diff -u llvm/include/llvm/Target/TargetMachine.h:1.63 llvm/include/llvm/Target/TargetMachine.h:1.64 --- llvm/include/llvm/Target/TargetMachine.h:1.63 Thu Apr 20 13:17:21 2006 +++ llvm/include/llvm/Target/TargetMachine.h Tue May 2 20:29:56 2006 @@ -50,19 +50,11 @@ /// class TargetMachine { const std::string Name; - const TargetData DataLayout; // Calculates type size & alignment TargetMachine(const TargetMachine&); // DO NOT IMPLEMENT void operator=(const TargetMachine&); // DO NOT IMPLEMENT protected: // Can only create subclasses... - TargetMachine(const std::string &name, bool LittleEndian = false, - unsigned char PtrSize = 8, unsigned char PtrAl = 8, - unsigned char DoubleAl = 8, unsigned char FloatAl = 4, - unsigned char LongAl = 8, unsigned char IntAl = 4, - unsigned char ShortAl = 2, unsigned char ByteAl = 1, - unsigned char BoolAl = 1); - - TargetMachine(const std::string &name, const TargetData &TD); + TargetMachine(const std::string &name) : Name(name) { }; /// This constructor is used for targets that support arbitrary TargetData /// layouts, like the C backend. It initializes the TargetData to match that @@ -101,7 +93,7 @@ virtual const TargetInstrInfo *getInstrInfo() const { return 0; } virtual const TargetFrameInfo *getFrameInfo() const { return 0; } virtual TargetLowering *getTargetLowering() const { return 0; } - const TargetData &getTargetData() const { return DataLayout; } + virtual const TargetData *getTargetData() const { return 0; } /// getSubtarget - This method returns a pointer to the specified type of /// TargetSubtarget. In debug builds, it verifies that the object being _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits