| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |