Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: src/IceTranslator.cpp

Issue 567703003: Allow ability to name unnamed global addresses in Subzero. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Add tests Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceTranslator.cpp - ICE to machine code ------*- C++ -*-===// 1 //===- subzero/src/IceTranslator.cpp - ICE to machine code ------*- C++ -*-===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file defines the general driver class for translating ICE to 10 // This file defines the general driver class for translating ICE to
11 // machine code. 11 // machine code.
12 // 12 //
13 //===----------------------------------------------------------------------===// 13 //===----------------------------------------------------------------------===//
14 14
15 #include "IceTranslator.h" 15 #include "IceTranslator.h"
16 16
17 #include "IceCfg.h" 17 #include "IceCfg.h"
18 #include "IceClFlags.h" 18 #include "IceClFlags.h"
19 #include "IceDefs.h"
19 #include "IceTargetLowering.h" 20 #include "IceTargetLowering.h"
21 #include "llvm/IR/Module.h"
20 22
21 #include <iostream> 23 #include <iostream>
22 24
23 using namespace Ice; 25 using namespace Ice;
24 26
25 Translator::~Translator() {} 27 Translator::~Translator() {}
26 28
29 namespace {
30 static void setValueName(llvm::Value *V, const std::string &Prefix,
31 uint32_t &NameIndex) {
32 if (V->hasName()) {
33 const std::string &Name(V->getName());
34 if (Name.find(Prefix) == 0) {
35 std::string Buffer;
36 llvm::raw_string_ostream StrBuf(Buffer);
37 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.
38 << "' conflicts with name '" << Name << "'.";
39 }
40 return;
41 }
42 std::string Buffer;
43 llvm::raw_string_ostream StrBuf(Buffer);
44 StrBuf << Prefix << NameIndex;
45 V->setName(StrBuf.str());
46 ++NameIndex;
47 }
48 }
49
50 void Translator::nameUnnamedGlobalAddresses(llvm::Module *Mod) {
51 const std::string &Prefix = getFlags().DefaultGlobalPrefix;
52 if (Prefix.empty()) return;
53 uint32_t NameIndex = 0;
54 for (llvm::Module::global_iterator
55 I = Mod->global_begin(), E = Mod->global_end();
56 I != E; ++I) {
57 setValueName(I, Prefix, NameIndex);
58 }
59 for (llvm::Module::iterator I = Mod->begin(), E = Mod->end(); I != E; ++I) {
60 setValueName(I, Prefix, NameIndex);
61 }
62 }
63
27 void Translator::translateFcn(Ice::Cfg *Fcn) { 64 void Translator::translateFcn(Ice::Cfg *Fcn) {
28 Func.reset(Fcn); 65 Func.reset(Fcn);
29 if (Ctx->getFlags().DisableInternal) 66 if (Ctx->getFlags().DisableInternal)
30 Func->setInternal(false); 67 Func->setInternal(false);
31 if (Ctx->getFlags().DisableTranslation) { 68 if (Ctx->getFlags().DisableTranslation) {
32 Func->dump(); 69 Func->dump();
33 } else { 70 } else {
34 Ice::Timer TTranslate; 71 Ice::Timer TTranslate;
35 Func->translate(); 72 Func->translate();
36 if (Ctx->getFlags().SubzeroTimingEnabled) { 73 if (Ctx->getFlags().SubzeroTimingEnabled) {
(...skipping 12 matching lines...) Expand all
49 std::cerr << "[Subzero timing] Emit function " << Func->getFunctionName() 86 std::cerr << "[Subzero timing] Emit function " << Func->getFunctionName()
50 << ": " << TEmit.getElapsedSec() << " sec\n"; 87 << ": " << TEmit.getElapsedSec() << " sec\n";
51 } 88 }
52 } 89 }
53 } 90 }
54 91
55 void Translator::emitConstants() { 92 void Translator::emitConstants() {
56 if (!Ctx->getFlags().DisableTranslation && Func) 93 if (!Ctx->getFlags().DisableTranslation && Func)
57 Func->getTarget()->emitConstants(); 94 Func->getTarget()->emitConstants();
58 } 95 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698