Remove ctor with each piece specifyable (which causes overload ambiguities),
authorChris Lattner <sabre@nondot.org>
Fri, 16 Jun 2006 18:11:26 +0000 (18:11 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 16 Jun 2006 18:11:26 +0000 (18:11 +0000)
add a new init method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28828 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetData.h
lib/Target/TargetData.cpp

index 17dc8254e5493355acd91268b6e84ebe9711fda6..30568155e646bcde49f7de9fb8086852bdeb2dc3 100644 (file)
@@ -45,20 +45,16 @@ class TargetData : public ImmutablePass {
   unsigned char PointerAlignment;      // Defaults to 8 bytes
 
 public:
-  TargetData(const std::string &TargetName = "",
-             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);
-
   /// Constructs a TargetData from a string of the following format:
   /// "E-p:64:64-d:64-f:32-l:64-i:32-s:16-b:8-B:8"
   /// The above string is considered the default, and any values not specified
   /// in the string will be assumed to be as above.
-  TargetData(const std::string &TargetName,
-             const std::string &TargetDescription);
+  TargetData(const std::string &TargetName = "",
+             const std::string &TargetDescription = "") {
+    assert(!TargetName.empty() &&
+           "ERROR: Tool did not specify a target data to use!");
+    init(TargetDescription);
+  }
   
   // Copy constructor
   TargetData (const TargetData &TD) :
@@ -78,6 +74,11 @@ public:
   TargetData(const std::string &ToolName, const Module *M);
   ~TargetData();  // Not virtual, do not subclass this class
 
+  /// init - Specify configuration if not available at ctor time.
+  ///
+  void init(const std::string &TargetDescription);
+  
+  
   /// Target endianness...
   bool          isLittleEndian()       const { return     LittleEndian; }
   bool          isBigEndian()          const { return    !LittleEndian; }
index f7b7b4c3e5b4052c2395a093446082683d1ff66f..d2b6a54ecd32efe4e401ed0d7aae1eb19a2e8d40 100644 (file)
@@ -95,38 +95,7 @@ unsigned StructLayout::getElementContainingOffset(uint64_t Offset) const {
 //                       TargetData Class Implementation
 //===----------------------------------------------------------------------===//
 
-TargetData::TargetData(const std::string &TargetName,
-                       bool isLittleEndian, unsigned char PtrSize,
-                       unsigned char PtrAl, unsigned char DoubleAl,
-                       unsigned char FloatAl, unsigned char LongAl,
-                       unsigned char IntAl, unsigned char ShortAl,
-                       unsigned char ByteAl, unsigned char BoolAl) {
-
-  // If this assert triggers, a pass "required" TargetData information, but the
-  // top level tool did not provide one for it.  We do not want to default
-  // construct, or else we might end up using a bad endianness or pointer size!
-  //
-  assert(!TargetName.empty() &&
-         "ERROR: Tool did not specify a target data to use!");
-
-  LittleEndian     = isLittleEndian;
-  PointerSize      = PtrSize;
-  PointerAlignment = PtrAl;
-  DoubleAlignment  = DoubleAl;
-  FloatAlignment   = FloatAl;
-  LongAlignment    = LongAl;
-  IntAlignment     = IntAl;
-  ShortAlignment   = ShortAl;
-  ByteAlignment    = ByteAl;
-  BoolAlignment    = BoolAl;
-}
-
-TargetData::TargetData(const std::string &TargetName,
-                       const std::string &TargetDescription) {
-  assert(!TargetName.empty() &&
-         "ERROR: Tool did not specify a target data to use!");
-
-                       
+void TargetData::init(const std::string &TargetDescription) {
   std::string temp = TargetDescription;
   
   LittleEndian = false;