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.
///
#include "llvm/ADT/StringExtras.h"
#include <algorithm>
#include <cstdlib>
+#include <sstream>
using namespace llvm;
// Handle the Pass registration stuff necessary to use TargetData's.
}
}
+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*>,