| Index: src/IceTranslator.cpp
|
| diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp
|
| index 59403d284e12e9a9e3da62a0ab63236d1df15ed2..05332b4498ba2b4020d06a97c7ba21f652abefbd 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,14 +26,58 @@ using namespace Ice;
|
|
|
| Translator::~Translator() {}
|
|
|
| -void Translator::translateFcn(Ice::Cfg *Fcn) {
|
| +namespace {
|
| +void setValueName(llvm::Value *V, const char *Kind, const IceString &Prefix,
|
| + uint32_t &NameIndex, Ostream &errs) {
|
| + if (V->hasName()) {
|
| + const std::string &Name(V->getName());
|
| + if (Name.find(Prefix) == 0) {
|
| + errs << "Warning: Default " << Kind << " prefix '" << Prefix
|
| + << "' conflicts with name '" << Name << "'.\n";
|
| + }
|
| + return;
|
| + }
|
| + if (NameIndex == 0) {
|
| + V->setName(Prefix);
|
| + ++NameIndex;
|
| + return;
|
| + }
|
| + std::string Buffer;
|
| + llvm::raw_string_ostream StrBuf(Buffer);
|
| + StrBuf << Prefix << NameIndex;
|
| + V->setName(StrBuf.str());
|
| + ++NameIndex;
|
| +}
|
| +} // end of anonymous namespace
|
| +
|
| +void Translator::nameUnnamedGlobalAddresses(llvm::Module *Mod) {
|
| + const IceString &GlobalPrefix = Flags.DefaultGlobalPrefix;
|
| + Ostream &errs = Ctx->getStrDump();
|
| + if (!GlobalPrefix.empty()) {
|
| + uint32_t NameIndex = 0;
|
| + for (llvm::Module::global_iterator I = Mod->global_begin(),
|
| + E = Mod->global_end();
|
| + I != E; ++I) {
|
| + setValueName(I, "global", GlobalPrefix, NameIndex, errs);
|
| + }
|
| + }
|
| + const IceString &FunctionPrefix = Flags.DefaultFunctionPrefix;
|
| + if (FunctionPrefix.empty())
|
| + return;
|
| + uint32_t NameIndex = 0;
|
| + for (llvm::Module::iterator I = Mod->begin(), E = Mod->end(); I != E; ++I) {
|
| + setValueName(I, "function", FunctionPrefix, NameIndex, errs);
|
| + }
|
| +}
|
| +
|
| +void Translator::translateFcn(Cfg *Fcn) {
|
| Func.reset(Fcn);
|
| if (Ctx->getFlags().DisableInternal)
|
| Func->setInternal(false);
|
| if (Ctx->getFlags().DisableTranslation) {
|
| Func->dump();
|
| } else {
|
| - Ice::Timer TTranslate;
|
| + Timer TTranslate;
|
| Func->translate();
|
| if (Ctx->getFlags().SubzeroTimingEnabled) {
|
| std::cerr << "[Subzero timing] Translate function "
|
| @@ -43,7 +89,7 @@ void Translator::translateFcn(Ice::Cfg *Fcn) {
|
| ErrorStatus = true;
|
| }
|
|
|
| - Ice::Timer TEmit;
|
| + Timer TEmit;
|
| Func->emit();
|
| if (Ctx->getFlags().SubzeroTimingEnabled) {
|
| std::cerr << "[Subzero timing] Emit function " << Func->getFunctionName()
|
|
|