Chromium Code Reviews| Index: src/IceTranslator.cpp |
| diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp |
| index 59403d284e12e9a9e3da62a0ab63236d1df15ed2..247eb9b302e03305dabe23b0ab3d6f624c4e1143 100644 |
| --- a/src/IceTranslator.cpp |
| +++ b/src/IceTranslator.cpp |
| @@ -16,7 +16,9 @@ |
| #include "IceCfg.h" |
| #include "IceClFlags.h" |
| +#include "IceDefs.h" |
| #include "IceTargetLowering.h" |
| +#include "llvm/IR/Module.h" |
| #include <iostream> |
| @@ -24,6 +26,41 @@ using namespace Ice; |
| Translator::~Translator() {} |
| +namespace { |
| +static void setValueName(llvm::Value *V, const std::string &Prefix, |
| + uint32_t &NameIndex) { |
| + if (V->hasName()) { |
| + const std::string &Name(V->getName()); |
| + if (Name.find(Prefix) == 0) { |
| + std::string Buffer; |
| + llvm::raw_string_ostream StrBuf(Buffer); |
| + llvm::outs() << "Warning: Default global prefix '" << Prefix |
|
Jim Stichnoth
2014/09/11 22:08:19
Can you use Translator::getGlobalContext()->getStr
Karl
2014/09/12 16:29:06
Done.
|
| + << "' conflicts with name '" << Name << "'."; |
| + } |
| + return; |
| + } |
| + std::string Buffer; |
| + llvm::raw_string_ostream StrBuf(Buffer); |
| + StrBuf << Prefix << NameIndex; |
| + V->setName(StrBuf.str()); |
| + ++NameIndex; |
| +} |
| +} |
| + |
| +void Translator::nameUnnamedGlobalAddresses(llvm::Module *Mod) { |
| + const std::string &Prefix = getFlags().DefaultGlobalPrefix; |
| + if (Prefix.empty()) return; |
| + uint32_t NameIndex = 0; |
| + for (llvm::Module::global_iterator |
| + I = Mod->global_begin(), E = Mod->global_end(); |
| + I != E; ++I) { |
| + setValueName(I, Prefix, NameIndex); |
| + } |
| + for (llvm::Module::iterator I = Mod->begin(), E = Mod->end(); I != E; ++I) { |
| + setValueName(I, Prefix, NameIndex); |
| + } |
| +} |
| + |
| void Translator::translateFcn(Ice::Cfg *Fcn) { |
| Func.reset(Fcn); |
| if (Ctx->getFlags().DisableInternal) |