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

Side by Side Diff: src/IceTranslator.cpp

Issue 619893002: Subzero: Auto-awesome iterators. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 2 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
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 V->setName(StrBuf.str()); 49 V->setName(StrBuf.str());
50 ++NameIndex; 50 ++NameIndex;
51 } 51 }
52 } // end of anonymous namespace 52 } // end of anonymous namespace
53 53
54 void Translator::nameUnnamedGlobalAddresses(llvm::Module *Mod) { 54 void Translator::nameUnnamedGlobalAddresses(llvm::Module *Mod) {
55 const IceString &GlobalPrefix = Flags.DefaultGlobalPrefix; 55 const IceString &GlobalPrefix = Flags.DefaultGlobalPrefix;
56 Ostream &errs = Ctx->getStrDump(); 56 Ostream &errs = Ctx->getStrDump();
57 if (!GlobalPrefix.empty()) { 57 if (!GlobalPrefix.empty()) {
58 uint32_t NameIndex = 0; 58 uint32_t NameIndex = 0;
59 for (llvm::Module::global_iterator I = Mod->global_begin(), 59 for (auto I = Mod->global_begin(), E = Mod->global_end(); I != E; ++I)
60 E = Mod->global_end();
61 I != E; ++I) {
62 setValueName(I, "global", GlobalPrefix, NameIndex, errs); 60 setValueName(I, "global", GlobalPrefix, NameIndex, errs);
63 }
64 } 61 }
65 const IceString &FunctionPrefix = Flags.DefaultFunctionPrefix; 62 const IceString &FunctionPrefix = Flags.DefaultFunctionPrefix;
66 if (FunctionPrefix.empty()) 63 if (FunctionPrefix.empty())
67 return; 64 return;
68 uint32_t NameIndex = 0; 65 uint32_t NameIndex = 0;
69 for (llvm::Module::iterator I = Mod->begin(), E = Mod->end(); I != E; ++I) { 66 for (auto &I : *Mod)
70 setValueName(I, "function", FunctionPrefix, NameIndex, errs); 67 setValueName(&I, "function", FunctionPrefix, NameIndex, errs);
71 }
72 } 68 }
73 69
74 void Translator::translateFcn(Cfg *Fcn) { 70 void Translator::translateFcn(Cfg *Fcn) {
75 Ctx->resetStats(); 71 Ctx->resetStats();
76 Func.reset(Fcn); 72 Func.reset(Fcn);
77 if (Ctx->getFlags().DisableInternal) 73 if (Ctx->getFlags().DisableInternal)
78 Func->setInternal(false); 74 Func->setInternal(false);
79 if (Ctx->getFlags().DisableTranslation) { 75 if (Ctx->getFlags().DisableTranslation) {
80 Func->dump(); 76 Func->dump();
81 } else { 77 } else {
82 Func->translate(); 78 Func->translate();
83 if (Func->hasError()) { 79 if (Func->hasError()) {
84 std::cerr << "ICE translation error: " << Func->getError() << "\n"; 80 std::cerr << "ICE translation error: " << Func->getError() << "\n";
85 ErrorStatus = true; 81 ErrorStatus = true;
86 } 82 }
87 83
88 Func->emit(); 84 Func->emit();
89 Ctx->dumpStats(Func->getFunctionName()); 85 Ctx->dumpStats(Func->getFunctionName());
90 } 86 }
91 } 87 }
92 88
93 void Translator::emitConstants() { 89 void Translator::emitConstants() {
94 if (!Ctx->getFlags().DisableTranslation && Func) 90 if (!Ctx->getFlags().DisableTranslation && Func)
95 Func->getTarget()->emitConstants(); 91 Func->getTarget()->emitConstants();
96 } 92 }
97 93
98 void Translator::convertGlobals(llvm::Module *Mod) { 94 void Translator::convertGlobals(llvm::Module *Mod) {
99 llvm::OwningPtr<TargetGlobalInitLowering> GlobalLowering( 95 llvm::OwningPtr<TargetGlobalInitLowering> GlobalLowering(
100 TargetGlobalInitLowering::createLowering(Ctx->getTargetArch(), Ctx)); 96 TargetGlobalInitLowering::createLowering(Ctx->getTargetArch(), Ctx));
101 for (llvm::Module::const_global_iterator I = Mod->global_begin(), 97 for (auto I = Mod->global_begin(), E = Mod->global_end(); I != E; ++I) {
102 E = Mod->global_end();
103 I != E; ++I) {
104 if (!I->hasInitializer()) 98 if (!I->hasInitializer())
105 continue; 99 continue;
106 const llvm::Constant *Initializer = I->getInitializer(); 100 const llvm::Constant *Initializer = I->getInitializer();
107 IceString Name = I->getName(); 101 IceString Name = I->getName();
108 unsigned Align = I->getAlignment(); 102 unsigned Align = I->getAlignment();
109 uint64_t NumElements = 0; 103 uint64_t NumElements = 0;
110 const char *Data = NULL; 104 const char *Data = NULL;
111 bool IsInternal = I->hasInternalLinkage(); 105 bool IsInternal = I->hasInternalLinkage();
112 bool IsConst = I->isConstant(); 106 bool IsConst = I->isConstant();
113 bool IsZeroInitializer = false; 107 bool IsZeroInitializer = false;
(...skipping 19 matching lines...) Expand all
133 } else { 127 } else {
134 llvm_unreachable("Unhandled global initializer"); 128 llvm_unreachable("Unhandled global initializer");
135 } 129 }
136 130
137 GlobalLowering->lower(Name, Align, IsInternal, IsConst, IsZeroInitializer, 131 GlobalLowering->lower(Name, Align, IsInternal, IsConst, IsZeroInitializer,
138 NumElements, Data, 132 NumElements, Data,
139 Ctx->getFlags().DisableTranslation); 133 Ctx->getFlags().DisableTranslation);
140 } 134 }
141 GlobalLowering.reset(); 135 GlobalLowering.reset();
142 } 136 }
OLDNEW
« src/IceCfg.cpp ('K') | « src/IceTimerTree.cpp ('k') | src/IceTypeConverter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698