add a new targetdata ctor to create a target data appropriate to the module
authorChris Lattner <sabre@nondot.org>
Thu, 24 Apr 2003 19:09:05 +0000 (19:09 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 24 Apr 2003 19:09:05 +0000 (19:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5903 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetData.cpp

index 96c6ba9bfec365afd36de5feadb3266d3b531623..701b36640ec764423de608c80e6eaace5e5dd7f5 100644 (file)
@@ -11,6 +11,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Target/TargetData.h"
+#include "llvm/Module.h"
 #include "llvm/DerivedTypes.h"
 #include "llvm/Constants.h"
 
@@ -103,6 +104,23 @@ TargetData::TargetData(const std::string &TargetName,
   ByteAlignment    = ByteAl;
 }
 
+TargetData::TargetData(const std::string &ToolName, const Module *M)
+  : AID(AnnotationManager::getID("TargetData::" + ToolName)) {
+  AnnotationManager::registerAnnotationFactory(AID, TypeAnFactory, this);
+
+  LittleEndian     = M->isLittleEndian();
+  SubWordDataSize  = 1;
+  IntegerRegSize   = 8;
+  PointerSize      = M->has32BitPointers() ? 32 : 64;
+  PointerAlignment = PointerSize;
+  DoubleAlignment  = 8;
+  FloatAlignment   = 4;
+  LongAlignment    = 8;
+  IntAlignment     = 4;
+  ShortAlignment   = 2;
+  ByteAlignment    = 1;
+}
+
 TargetData::~TargetData() {
   AnnotationManager::registerAnnotationFactory(AID, 0);   // Deregister factory
 }