diff options
author | Chris Lattner <sabre@nondot.org> | 2003-04-24 19:09:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-04-24 19:09:05 +0000 |
commit | 42516baf76f88a8e0d82aae8c7a8a1dfb6c67133 (patch) | |
tree | de0dddb009158dee3b113000f43de16ab9c46227 | |
parent | 02378422a4c95296b0ab82ab0aa121612c552672 (diff) | |
download | bcm5719-llvm-42516baf76f88a8e0d82aae8c7a8a1dfb6c67133.tar.gz bcm5719-llvm-42516baf76f88a8e0d82aae8c7a8a1dfb6c67133.zip |
add a new targetdata ctor to create a target data appropriate to the module
llvm-svn: 5903
-rw-r--r-- | llvm/lib/Target/TargetData.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/TargetData.cpp b/llvm/lib/Target/TargetData.cpp index 96c6ba9bfec..701b36640ec 100644 --- a/llvm/lib/Target/TargetData.cpp +++ b/llvm/lib/Target/TargetData.cpp @@ -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 } |