diff options
author | Chris Lattner <sabre@nondot.org> | 2003-04-22 18:02:04 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-04-22 18:02:04 +0000 |
commit | 678c6a089da468bc20661922cf63deedef2d9b7a (patch) | |
tree | 847e54806e7baed18b3de6cb16387eb1cb4e0e11 /include/llvm/Module.h | |
parent | baf0607cbc4457f66d43789f0500d8fa34ac1770 (diff) |
Add support for tracking whether a module is 64/32 bit and big/little endian
Also add a moduleID field which can be used for diagnostics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5834 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Module.h')
-rw-r--r-- | include/llvm/Module.h | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/include/llvm/Module.h b/include/llvm/Module.h index 0bb23f9d40..bf7cf62be0 100644 --- a/include/llvm/Module.h +++ b/include/llvm/Module.h @@ -50,16 +50,22 @@ public: typedef std::reverse_iterator<iterator> reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator; -private: - GlobalListType GlobalList; // The Global Variables - FunctionListType FunctionList; // The Functions - - GlobalValueRefMap *GVRefMap; + enum Endianness { LittleEndian, BigEndian }; + enum PointerSize { Pointer32, Pointer64 }; - SymbolTable *SymTab; - - // Accessor for the underlying GlobalValRefMap... only through the - // Constant class... +private: + GlobalListType GlobalList; // The Global Variables in the module + FunctionListType FunctionList; // The Functions in the module + GlobalValueRefMap *GVRefMap; // Keep track of GlobalValueRef's + SymbolTable *SymTab; // Symbol Table for the module + std::string ModuleID; // Human readable identifier for the module + + // These flags are probably not the right long-term way to handle this kind of + // target information, but it is sufficient for now. + Endianness Endian; // True if target is little endian + PointerSize PtrSize; // True if target has 32-bit pointers (false = 64-bit) + + // Accessor for the underlying GVRefMap... only through the Constant class... friend class Constant; friend class ConstantPointerRef; void mutateConstantPointerRef(GlobalValue *OldGV, GlobalValue *NewGV); @@ -67,9 +73,23 @@ private: void destroyConstantPointerRef(ConstantPointerRef *CPR); public: - Module(); + Module(const std::string &ModuleID); ~Module(); + const std::string &getModuleIdentifier() const { return ModuleID; } + + /// Target endian information... + bool isLittleEndian() const { return Endian == LittleEndian; } + bool isBigEndian() const { return Endian == BigEndian; } + Endianness getEndianness() const { return Endian; } + void setEndianness(Endianness E) { Endian = E; } + + /// Target Pointer Size information... + bool has32BitPointers() const { return PtrSize == Pointer32; } + bool has64BitPointers() const { return PtrSize == Pointer64; } + PointerSize getPointerSize() const { return PtrSize; } + void setPointerSize(PointerSize PS) { PtrSize = PS; } + /// getOrInsertFunction - Look up the specified function in the module symbol /// table. If it does not exist, add a prototype for the function and return /// it. |