forked from OSchip/llvm-project
				
			Add a method to generate a string representation from a TargetData.
This continues the work on PR 761. llvm-svn: 28239
This commit is contained in:
		
							parent
							
								
									8c2c1e90c4
								
							
						
					
					
						commit
						5fea9f0a93
					
				| 
						 | 
				
			
			@ -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.
 | 
			
		||||
  ///
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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*>,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue