[llvm-commits] CVS: llvm/include/llvm/Target/TargetData.h TargetLowering.h TargetMachine.h
Owen Anderson
resistor at mac.com
Tue May 2 18:30:22 PDT 2006
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
More information about the llvm-commits
mailing list