summaryrefslogtreecommitdiff
path: root/tools/lto
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-11-04 09:30:19 +0000
committerBill Wendling <isanbard@gmail.com>2011-11-04 09:30:19 +0000
commita7280fd61933f1268f69045cfbea46edb739726d (patch)
tree43ad372a3dad95408a90459ed4468c72f6d91173 /tools/lto
parentb9bff969e96a24da18d6c5d0d623a7d790d41fa2 (diff)
downloadllvm-a7280fd61933f1268f69045cfbea46edb739726d.tar.gz
llvm-a7280fd61933f1268f69045cfbea46edb739726d.tar.bz2
llvm-a7280fd61933f1268f69045cfbea46edb739726d.tar.xz
Make the Mangler an ivar so that it doesn't have to be passed around everywhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143689 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lto')
-rw-r--r--tools/lto/LTOModule.cpp35
-rw-r--r--tools/lto/LTOModule.h17
2 files changed, 23 insertions, 29 deletions
diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp
index 4d648a5b2d..66dc090595 100644
--- a/tools/lto/LTOModule.cpp
+++ b/tools/lto/LTOModule.cpp
@@ -30,7 +30,6 @@
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/system_error.h"
-#include "llvm/Target/Mangler.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
@@ -82,7 +81,8 @@ bool LTOModule::isTargetMatch(MemoryBuffer *buffer, const char *triplePrefix) {
LTOModule::LTOModule(Module *m, TargetMachine *t)
: _module(m), _target(t),
- _context(*_target->getMCAsmInfo(), *_target->getRegisterInfo(), NULL)
+ _context(*_target->getMCAsmInfo(), *_target->getRegisterInfo(), NULL),
+ _mangler(_context, *_target->getTargetData())
{
}
@@ -182,9 +182,9 @@ void LTOModule::setTargetTriple(const char *triple) {
_module->setTargetTriple(triple);
}
-void LTOModule::addDefinedFunctionSymbol(Function *f, Mangler &mangler) {
+void LTOModule::addDefinedFunctionSymbol(Function *f) {
// add to list of defined symbols
- addDefinedSymbol(f, mangler, true);
+ addDefinedSymbol(f, true);
}
// Get string that data pointer points to.
@@ -280,9 +280,9 @@ void LTOModule::addObjCClassRef(GlobalVariable *clgv) {
}
-void LTOModule::addDefinedDataSymbol(GlobalValue *v, Mangler &mangler) {
+void LTOModule::addDefinedDataSymbol(GlobalValue *v) {
// Add to list of defined symbols.
- addDefinedSymbol(v, mangler, false);
+ addDefinedSymbol(v, false);
// Special case i386/ppc ObjC data structures in magic sections:
// The issue is that the old ObjC object format did some strange
@@ -328,15 +328,14 @@ void LTOModule::addDefinedDataSymbol(GlobalValue *v, Mangler &mangler) {
}
-void LTOModule::addDefinedSymbol(GlobalValue *def, Mangler &mangler,
- bool isFunction) {
+void LTOModule::addDefinedSymbol(GlobalValue *def, bool isFunction) {
// ignore all llvm.* symbols
if (def->getName().startswith("llvm."))
return;
// string is owned by _defines
SmallString<64> Buffer;
- mangler.getNameWithPrefix(Buffer, def, false);
+ _mangler.getNameWithPrefix(Buffer, def, false);
// set alignment part log2() can have rounding errors
uint32_t align = def->getAlignment();
@@ -426,8 +425,7 @@ void LTOModule::addAsmGlobalSymbolUndef(const char *name) {
entry.setValue(info);
}
-void LTOModule::addPotentialUndefinedSymbol(GlobalValue *decl,
- Mangler &mangler) {
+void LTOModule::addPotentialUndefinedSymbol(GlobalValue *decl) {
// ignore all llvm.* symbols
if (decl->getName().startswith("llvm."))
return;
@@ -437,7 +435,7 @@ void LTOModule::addPotentialUndefinedSymbol(GlobalValue *decl,
return;
SmallString<64> name;
- mangler.getNameWithPrefix(name, decl, false);
+ _mangler.getNameWithPrefix(name, decl, false);
StringMap<NameAndAttributes>::value_type &entry =
_undefines.GetOrCreateValue(name);
@@ -671,23 +669,22 @@ static bool isAliasToDeclaration(const GlobalAlias &V) {
bool LTOModule::ParseSymbols(std::string &errMsg) {
// Use mangler to add GlobalPrefix to names to match linker names.
- Mangler mangler(_context, *_target->getTargetData());
// add functions
for (Module::iterator f = _module->begin(); f != _module->end(); ++f) {
if (isDeclaration(*f))
- addPotentialUndefinedSymbol(f, mangler);
+ addPotentialUndefinedSymbol(f);
else
- addDefinedFunctionSymbol(f, mangler);
+ addDefinedFunctionSymbol(f);
}
// add data
for (Module::global_iterator v = _module->global_begin(),
e = _module->global_end(); v != e; ++v) {
if (isDeclaration(*v))
- addPotentialUndefinedSymbol(v, mangler);
+ addPotentialUndefinedSymbol(v);
else
- addDefinedDataSymbol(v, mangler);
+ addDefinedDataSymbol(v);
}
// add asm globals
@@ -698,9 +695,9 @@ bool LTOModule::ParseSymbols(std::string &errMsg) {
for (Module::alias_iterator i = _module->alias_begin(),
e = _module->alias_end(); i != e; ++i) {
if (isAliasToDeclaration(*i))
- addPotentialUndefinedSymbol(i, mangler);
+ addPotentialUndefinedSymbol(i);
else
- addDefinedDataSymbol(i, mangler);
+ addDefinedDataSymbol(i);
}
// make symbols for all undefines
diff --git a/tools/lto/LTOModule.h b/tools/lto/LTOModule.h
index 63e5e37109..c5f83ee302 100644
--- a/tools/lto/LTOModule.h
+++ b/tools/lto/LTOModule.h
@@ -16,6 +16,7 @@
#include "llvm/Module.h"
#include "llvm/MC/MCContext.h"
+#include "llvm/Target/Mangler.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/StringMap.h"
@@ -28,7 +29,6 @@
// forward references to llvm classes
namespace llvm {
- class Mangler;
class MemoryBuffer;
class GlobalValue;
class Value;
@@ -78,15 +78,11 @@ private:
LTOModule(llvm::Module* m, llvm::TargetMachine* t);
bool ParseSymbols(std::string &errMsg);
- void addDefinedSymbol(llvm::GlobalValue* def,
- llvm::Mangler& mangler,
- bool isFunction);
- void addPotentialUndefinedSymbol(llvm::GlobalValue* decl,
- llvm::Mangler &mangler);
- void addDefinedFunctionSymbol(llvm::Function* f,
- llvm::Mangler &mangler);
- void addDefinedDataSymbol(llvm::GlobalValue* v,
- llvm::Mangler &mangler);
+ void addDefinedSymbol(llvm::GlobalValue* def,
+ bool isFunction);
+ void addPotentialUndefinedSymbol(llvm::GlobalValue* decl);
+ void addDefinedFunctionSymbol(llvm::Function* f);
+ void addDefinedDataSymbol(llvm::GlobalValue* v);
bool addAsmGlobalSymbols(std::string &errMsg);
void addAsmGlobalSymbol(const char *,
lto_symbol_attributes scope);
@@ -119,6 +115,7 @@ private:
llvm::StringMap<NameAndAttributes> _undefines;
std::vector<const char*> _asm_undefines;
llvm::MCContext _context;
+ llvm::Mangler _mangler;
};
#endif // LTO_MODULE_H