Add a method to generate a string representation from a TargetData.
authorOwen Anderson <resistor@mac.com>
Fri, 12 May 2006 07:01:44 +0000 (07:01 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 12 May 2006 07:01:44 +0000 (07:01 +0000)
This continues the work on PR 761.

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

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

index 26821bd8a7b0f19460969eb2830249b32fdde9b6..428d05fdd5c120b5b6c6dab01a03181981bed955 100644 (file)
@@ -94,6 +94,11 @@ public:
   unsigned char getPointerSize()       const { return      PointerSize; }
   unsigned char getPointerSizeInBits() const { return    8*PointerSize; }
 
+  /// getStringRepresentation - Return the string representation of the
+  /// TargetData.  This representation is in the same format accepted by the
+  /// string constructor above.
+  std::string getStringRepresentation() const;
+
   /// getTypeSize - Return the number of bytes necessary to hold the specified
   /// type.
   ///
index 14ce6e89de7cd4c08a86c2e8a93ed742a020e251..f7c0d7800b74cb669bc3122d3a9b9739af87679c 100644 (file)
@@ -25,6 +25,7 @@
 #include "llvm/ADT/StringExtras.h"
 #include <algorithm>
 #include <cstdlib>
+#include <sstream>
 using namespace llvm;
 
 // Handle the Pass registration stuff necessary to use TargetData's.
@@ -218,6 +219,26 @@ TargetData::~TargetData() {
   }
 }
 
+std::string TargetData::getStringRepresentation() const {
+  std::stringstream repr;
+  
+  if (LittleEndian)
+    repr << "e";
+  else
+    repr << "E";
+  
+  repr << "-p:" << (PointerSize * 8) << ":" << (PointerAlignment * 8);
+  repr << "-d:64:" << (DoubleAlignment * 8);
+  repr << "-f:32:" << (FloatAlignment * 8);
+  repr << "-l:64:" << (LongAlignment * 8);
+  repr << "-i:32:" << (IntAlignment * 8);
+  repr << "-s:16:" << (ShortAlignment * 8);
+  repr << "-b:8:" << (ByteAlignment * 8);
+  repr << "-B:8:" << (BoolAlignment * 8);
+  
+  return repr.str();
+}
+
 const StructLayout *TargetData::getStructLayout(const StructType *Ty) const {
   if (Layouts == 0)
     Layouts = new std::map<std::pair<const TargetData*,const StructType*>,