X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=include%2Fllvm%2FLTO%2FLTOModule.h;h=f1b1480ad66416fbee16b24ade621b57e1d6d8a8;hb=dce4a407a24b04eebc6a376f8e62b41aaa7b071f;hp=1e4fa1b7b222f9e4dd3d777a295447f82d14896d;hpb=220b921aed042f9e520c26cffd8282a94c66c3d5;p=android-x86%2Fexternal-llvm.git diff --git a/include/llvm/LTO/LTOModule.h b/include/llvm/LTO/LTOModule.h index 1e4fa1b7b22..f1b1480ad66 100644 --- a/include/llvm/LTO/LTOModule.h +++ b/include/llvm/LTO/LTOModule.h @@ -31,25 +31,24 @@ namespace llvm { class MemoryBuffer; class TargetOptions; class Value; -} //===----------------------------------------------------------------------===// -/// LTOModule - C++ class which implements the opaque lto_module_t type. +/// C++ class which implements the opaque lto_module_t type. /// struct LTOModule { private: - typedef llvm::StringMap StringSet; + typedef StringMap StringSet; struct NameAndAttributes { const char *name; uint32_t attributes; bool isFunction; - const llvm::GlobalValue *symbol; + const GlobalValue *symbol; }; - std::unique_ptr _module; - std::unique_ptr _target; - llvm::MCObjectFileInfo ObjFileInfo; + std::unique_ptr _module; + std::unique_ptr _target; + MCObjectFileInfo ObjFileInfo; StringSet _linkeropt_strings; std::vector _deplibs; std::vector _linkeropts; @@ -57,174 +56,161 @@ private: // _defines and _undefines only needed to disambiguate tentative definitions StringSet _defines; - llvm::StringMap _undefines; + StringMap _undefines; std::vector _asm_undefines; - llvm::MCContext _context; + MCContext _context; // Use mangler to add GlobalPrefix to names to match linker names. - llvm::Mangler _mangler; + Mangler _mangler; + + LTOModule(Module *m, TargetMachine *t); - LTOModule(llvm::Module *m, llvm::TargetMachine *t); public: - /// isBitcodeFile - Returns 'true' if the file or memory contents is LLVM - /// bitcode. + /// Returns 'true' if the file or memory contents is LLVM bitcode. static bool isBitcodeFile(const void *mem, size_t length); static bool isBitcodeFile(const char *path); - /// isBitcodeFileForTarget - Returns 'true' if the file or memory contents - /// is LLVM bitcode for the specified triple. + /// Returns 'true' if the file or memory contents is LLVM bitcode for the + /// specified triple. static bool isBitcodeFileForTarget(const void *mem, size_t length, const char *triplePrefix); static bool isBitcodeFileForTarget(const char *path, const char *triplePrefix); - /// makeLTOModule - Create an LTOModule. N.B. These methods take ownership - /// of the buffer. The caller must have initialized the Targets, the - /// TargetMCs, the AsmPrinters, and the AsmParsers by calling: + /// Create an LTOModule. N.B. These methods take ownership of the buffer. The + /// caller must have initialized the Targets, the TargetMCs, the AsmPrinters, + /// and the AsmParsers by calling: /// /// InitializeAllTargets(); /// InitializeAllTargetMCs(); /// InitializeAllAsmPrinters(); /// InitializeAllAsmParsers(); - static LTOModule *makeLTOModule(const char* path, - llvm::TargetOptions options, + static LTOModule *makeLTOModule(const char *path, TargetOptions options, std::string &errMsg); - static LTOModule *makeLTOModule(int fd, const char *path, - size_t size, llvm::TargetOptions options, + static LTOModule *makeLTOModule(int fd, const char *path, size_t size, + TargetOptions options, std::string &errMsg); + static LTOModule *makeLTOModule(int fd, const char *path, size_t map_size, + off_t offset, TargetOptions options, std::string &errMsg); - static LTOModule *makeLTOModule(int fd, const char *path, - size_t map_size, - off_t offset, llvm::TargetOptions options, - std::string& errMsg); static LTOModule *makeLTOModule(const void *mem, size_t length, - llvm::TargetOptions options, - std::string &errMsg, - llvm::StringRef path = ""); + TargetOptions options, std::string &errMsg, + StringRef path = ""); - /// getTargetTriple - Return the Module's target triple. + /// Return the Module's target triple. const char *getTargetTriple() { return _module->getTargetTriple().c_str(); } - /// setTargetTriple - Set the Module's target triple. + /// Set the Module's target triple. void setTargetTriple(const char *triple) { _module->setTargetTriple(triple); } - /// getSymbolCount - Get the number of symbols + /// Get the number of symbols uint32_t getSymbolCount() { return _symbols.size(); } - /// getSymbolAttributes - Get the attributes for a symbol at the specified - /// index. + /// Get the attributes for a symbol at the specified index. lto_symbol_attributes getSymbolAttributes(uint32_t index) { if (index < _symbols.size()) return lto_symbol_attributes(_symbols[index].attributes); return lto_symbol_attributes(0); } - /// getSymbolName - Get the name of the symbol at the specified index. + /// Get the name of the symbol at the specified index. const char *getSymbolName(uint32_t index) { if (index < _symbols.size()) return _symbols[index].name; - return NULL; + return nullptr; } - /// getDependentLibraryCount - Get the number of dependent libraries + /// Get the number of dependent libraries uint32_t getDependentLibraryCount() { return _deplibs.size(); } - /// getDependentLibrary - Get the dependent library at the specified index. + /// Get the dependent library at the specified index. const char *getDependentLibrary(uint32_t index) { if (index < _deplibs.size()) return _deplibs[index]; - return NULL; + return nullptr; } - /// getLinkerOptCount - Get the number of linker options + /// Get the number of linker options uint32_t getLinkerOptCount() { return _linkeropts.size(); } - /// getLinkerOpt - Get the linker option at the specified index. + /// Get the linker option at the specified index. const char *getLinkerOpt(uint32_t index) { if (index < _linkeropts.size()) return _linkeropts[index]; - return NULL; + return nullptr; } - /// getLLVVMModule - Return the Module. - llvm::Module *getLLVVMModule() { return _module.get(); } + /// Return the Module. + Module *getLLVVMModule() { return _module.get(); } - /// getAsmUndefinedRefs - const std::vector &getAsmUndefinedRefs() { return _asm_undefines; } private: - /// parseMetadata - Parse metadata from the module + /// Parse metadata from the module // FIXME: it only parses "Linker Options" metadata at the moment void parseMetadata(); - /// parseSymbols - Parse the symbols from the module and model-level ASM and - /// add them to either the defined or undefined lists. + /// Parse the symbols from the module and model-level ASM and add them to + /// either the defined or undefined lists. bool parseSymbols(std::string &errMsg); - /// addPotentialUndefinedSymbol - Add a symbol which isn't defined just yet - /// to a list to be resolved later. - void addPotentialUndefinedSymbol(const llvm::GlobalValue *dcl, bool isFunc); + /// Add a symbol which isn't defined just yet to a list to be resolved later. + void addPotentialUndefinedSymbol(const GlobalValue *dcl, bool isFunc); - /// addDefinedSymbol - Add a defined symbol to the list. - void addDefinedSymbol(const llvm::GlobalValue *def, bool isFunction); + /// Add a defined symbol to the list. + void addDefinedSymbol(const GlobalValue *def, bool isFunction); - /// addDefinedFunctionSymbol - Add a function symbol as defined to the list. - void addDefinedFunctionSymbol(const llvm::Function *f); + /// Add a function symbol as defined to the list. + void addDefinedFunctionSymbol(const Function *f); - /// addDefinedDataSymbol - Add a data symbol as defined to the list. - void addDefinedDataSymbol(const llvm::GlobalValue *v); + /// Add a data symbol as defined to the list. + void addDefinedDataSymbol(const GlobalValue *v); - /// addAsmGlobalSymbols - Add global symbols from module-level ASM to the - /// defined or undefined lists. + /// Add global symbols from module-level ASM to the defined or undefined + /// lists. bool addAsmGlobalSymbols(std::string &errMsg); - /// addAsmGlobalSymbol - Add a global symbol from module-level ASM to the - /// defined list. + /// Add a global symbol from module-level ASM to the defined list. void addAsmGlobalSymbol(const char *, lto_symbol_attributes scope); - /// addAsmGlobalSymbolUndef - Add a global symbol from module-level ASM to - /// the undefined list. + /// Add a global symbol from module-level ASM to the undefined list. void addAsmGlobalSymbolUndef(const char *); - /// addObjCClass - Parse i386/ppc ObjC class data structure. - void addObjCClass(const llvm::GlobalVariable *clgv); + /// Parse i386/ppc ObjC class data structure. + void addObjCClass(const GlobalVariable *clgv); - /// addObjCCategory - Parse i386/ppc ObjC category data structure. - void addObjCCategory(const llvm::GlobalVariable *clgv); + /// Parse i386/ppc ObjC category data structure. + void addObjCCategory(const GlobalVariable *clgv); - /// addObjCClassRef - Parse i386/ppc ObjC class list data structure. - void addObjCClassRef(const llvm::GlobalVariable *clgv); + /// Parse i386/ppc ObjC class list data structure. + void addObjCClassRef(const GlobalVariable *clgv); - /// objcClassNameFromExpression - Get string that the data pointer points - /// to. - bool objcClassNameFromExpression(const llvm::Constant* c, std::string &name); + /// Get string that the data pointer points to. + bool objcClassNameFromExpression(const Constant *c, std::string &name); - /// isTargetMatch - Returns 'true' if the memory buffer is for the specified - /// target triple. - static bool isTargetMatch(llvm::MemoryBuffer *memBuffer, - const char *triplePrefix); + /// Returns 'true' if the memory buffer is for the specified target triple. + static bool isTargetMatch(MemoryBuffer *memBuffer, const char *triplePrefix); - /// makeLTOModule - Create an LTOModule (private version). N.B. This - /// method takes ownership of the buffer. - static LTOModule *makeLTOModule(llvm::MemoryBuffer *buffer, - llvm::TargetOptions options, + /// Create an LTOModule (private version). N.B. This method takes ownership of + /// the buffer. + static LTOModule *makeLTOModule(MemoryBuffer *buffer, TargetOptions options, std::string &errMsg); /// Create a MemoryBuffer from a memory range with an optional name. - static llvm::MemoryBuffer *makeBuffer(const void *mem, size_t length, - llvm::StringRef name = ""); + static MemoryBuffer *makeBuffer(const void *mem, size_t length, + StringRef name = ""); }; - +} #endif // LTO_MODULE_H