[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