<div dir="ltr"><div>Rafael,</div><div><br></div>FWIW this commit appears to change the name mangling behavior for a Module with the default DataLayout, by removing the leading underscore in the symbol name, when constructing an object file through TargetMachine::addPassesToEmitFile.<div><br></div><div>I noticed this because this commit exposed a bug in my own code where I hadn't explicitly set the DataLayout. Just wanted to give a heads up in case this wasn't intended!</div><div><br></div><div>v/r,</div><div>Josh</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 23, 2015 at 9:59 AM, Rafael Espindola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br>
Date: Tue Jun 23 08:59:29 2015<br>
New Revision: 240405<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240405-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=eccJ1HQM5YCBv8ci3bnMtu4vtDhaSB7mKRHfJgVl5Xg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=240405&view=rev</a><br>
Log:<br>
Simplify the Mangler interface now that DataLayout is mandatory.<br>
<br>
We only need to pass in a DataLayout when mangling a raw string, not when<br>
constructing the mangler.<br>
<br>
Modified:<br>
llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp<br>
llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp<br>
llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp<br>
llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp<br>
llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h<br>
llvm/trunk/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h<br>
llvm/trunk/include/llvm/IR/Mangler.h<br>
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
llvm/trunk/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp<br>
llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp<br>
llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp<br>
llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h<br>
llvm/trunk/lib/IR/Mangler.cpp<br>
llvm/trunk/lib/LTO/LTOCodeGenerator.cpp<br>
llvm/trunk/lib/Object/IRObjectFile.cpp<br>
llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp<br>
llvm/trunk/lib/Target/PowerPC/PPCMCInstLower.cpp<br>
llvm/trunk/lib/Target/X86/X86MCInstLower.cpp<br>
llvm/trunk/tools/lli/OrcLazyJIT.h<br>
<br>
Modified: llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_fully-5Flazy_toy.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=gmHZ2GBtXZ9sDPiLeVhtdR6qvZfu3UarmMVUCeoQHsU&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp (original)<br>
+++ llvm/trunk/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp Tue Jun 23 08:59:29 2015<br>
@@ -1168,7 +1168,6 @@ public:<br>
<br>
KaleidoscopeJIT(SessionContext &Session)<br>
: Session(Session),<br>
- Mang(Session.getTarget().getDataLayout()),<br>
CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())),<br>
LazyEmitLayer(CompileLayer),<br>
CompileCallbacks(LazyEmitLayer, CCMgrMemMgr, Session.getLLVMContext(),<br>
@@ -1179,7 +1178,8 @@ public:<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name,<br>
+ *Session.getTarget().getDataLayout());<br>
}<br>
return MangledName;<br>
}<br>
@@ -1306,7 +1306,6 @@ private:<br>
}<br>
<br>
SessionContext &Session;<br>
- Mangler Mang;<br>
SectionMemoryManager CCMgrMemMgr;<br>
ObjLayerT ObjectLayer;<br>
CompileLayerT CompileLayer;<br>
<br>
Modified: llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_initial_toy.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=s2DWJFPbfhbidBG20u2tuORxma4OjGBGD_tTZ77VhZU&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp (original)<br>
+++ llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp Tue Jun 23 08:59:29 2015<br>
@@ -1160,14 +1160,14 @@ public:<br>
typedef CompileLayerT::ModuleSetHandleT ModuleHandleT;<br>
<br>
KaleidoscopeJIT(SessionContext &Session)<br>
- : Mang(Session.getTarget().getDataLayout()),<br>
- CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())) {}<br>
+ : DL(*Session.getTarget().getDataLayout()),<br>
+ CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())) {}<br>
<br>
std::string mangle(const std::string &Name) {<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name, DL);<br>
}<br>
return MangledName;<br>
}<br>
@@ -1201,8 +1201,7 @@ public:<br>
}<br>
<br>
private:<br>
-<br>
- Mangler Mang;<br>
+ const DataLayout &DL;<br>
ObjLayerT ObjectLayer;<br>
CompileLayerT CompileLayer;<br>
};<br>
<br>
Modified: llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_lazy-5Fcodegen_toy.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=AmyGP_SFTNlcmxXw4JksfcxigJv97dmMg7IsHVqIABc&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp (original)<br>
+++ llvm/trunk/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp Tue Jun 23 08:59:29 2015<br>
@@ -1162,15 +1162,15 @@ public:<br>
typedef LazyEmitLayerT::ModuleSetHandleT ModuleHandleT;<br>
<br>
KaleidoscopeJIT(SessionContext &Session)<br>
- : Mang(Session.getTarget().getDataLayout()),<br>
- CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())),<br>
- LazyEmitLayer(CompileLayer) {}<br>
+ : DL(*Session.getTarget().getDataLayout()),<br>
+ CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())),<br>
+ LazyEmitLayer(CompileLayer) {}<br>
<br>
std::string mangle(const std::string &Name) {<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name, DL);<br>
}<br>
return MangledName;<br>
}<br>
@@ -1204,8 +1204,7 @@ public:<br>
}<br>
<br>
private:<br>
-<br>
- Mangler Mang;<br>
+ const DataLayout &DL;<br>
ObjLayerT ObjectLayer;<br>
CompileLayerT CompileLayer;<br>
LazyEmitLayerT LazyEmitLayer;<br>
<br>
Modified: llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_examples_Kaleidoscope_Orc_lazy-5Firgen_toy.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=jTk2swIDFGigco_zS-fmiVcosGyXqS-w8cutW0psVVI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp (original)<br>
+++ llvm/trunk/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp Tue Jun 23 08:59:29 2015<br>
@@ -1162,7 +1162,6 @@ public:<br>
<br>
KaleidoscopeJIT(SessionContext &Session)<br>
: Session(Session),<br>
- Mang(Session.getTarget().getDataLayout()),<br>
CompileLayer(ObjectLayer, SimpleCompiler(Session.getTarget())),<br>
LazyEmitLayer(CompileLayer) {}<br>
<br>
@@ -1170,7 +1169,8 @@ public:<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name,<br>
+ *Session.getTarget().getDataLayout());<br>
}<br>
return MangledName;<br>
}<br>
@@ -1236,7 +1236,6 @@ private:<br>
}<br>
<br>
SessionContext &Session;<br>
- Mangler Mang;<br>
ObjLayerT ObjectLayer;<br>
CompileLayerT CompileLayer;<br>
LazyEmitLayerT LazyEmitLayer;<br>
<br>
Modified: llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_ExecutionEngine_Orc_CompileOnDemandLayer.h-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=iYLeEhF_NkhsXgN46RqKqPrecJQculiUkFuVtBXdIZA&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h (original)<br>
+++ llvm/trunk/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h Tue Jun 23 08:59:29 2015<br>
@@ -241,11 +241,10 @@ private:<br>
}<br>
<br>
static std::string Mangle(StringRef Name, const DataLayout &DL) {<br>
- Mangler M(&DL);<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- M.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name, DL);<br>
}<br>
return MangledName;<br>
}<br>
<br>
Modified: llvm/trunk/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_ExecutionEngine_Orc_LazyEmittingLayer.h-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=BJWXUdgj0K0EbA7X5RBVGGCm3GcQthg_MCJRZ6_3WHQ&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h (original)<br>
+++ llvm/trunk/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Tue Jun 23 08:59:29 2015<br>
@@ -193,7 +193,7 @@ private:<br>
auto Symbols = llvm::make_unique<StringMap<const GlobalValue*>>();<br>
<br>
for (const auto &M : Ms) {<br>
- Mangler Mang(&M->getDataLayout());<br>
+ Mangler Mang;<br>
<br>
for (const auto &V : M->globals())<br>
if (auto GV = addGlobalValue(*Symbols, V, Mang, SearchName,<br>
<br>
Modified: llvm/trunk/include/llvm/IR/Mangler.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_include_llvm_IR_Mangler.h-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=_-dDAopn8ViTVyjJWKi1ZeTWrYhdHQnrhBFylIOUrGw&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Mangler.h?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/Mangler.h (original)<br>
+++ llvm/trunk/include/llvm/IR/Mangler.h Tue Jun 23 08:59:29 2015<br>
@@ -33,8 +33,6 @@ public:<br>
};<br>
<br>
private:<br>
- const DataLayout *DL;<br>
-<br>
/// We need to give global values the same name every time they are mangled.<br>
/// This keeps track of the number we give to anonymous ones.<br>
mutable DenseMap<const GlobalValue*, unsigned> AnonGlobalIDs;<br>
@@ -43,15 +41,11 @@ private:<br>
mutable unsigned NextAnonGlobalID;<br>
<br>
public:<br>
- Mangler(const DataLayout *DL) : DL(DL), NextAnonGlobalID(1) {}<br>
+ Mangler() : NextAnonGlobalID(1) {}<br>
<br>
/// Print the appropriate prefix and the specified global variable's name.<br>
/// If the global variable doesn't have a name, this fills in a unique name<br>
/// for the global.<br>
-<br>
- static void getNameWithPrefix(SmallVectorImpl<char> &OutName,<br>
- const Twine &GVName, const DataLayout &DL);<br>
-<br>
void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV,<br>
bool CannotUsePrivateLabel) const;<br>
void getNameWithPrefix(SmallVectorImpl<char> &OutName, const GlobalValue *GV,<br>
@@ -59,10 +53,12 @@ public:<br>
<br>
/// Print the appropriate prefix and the specified name as the global variable<br>
/// name. GVName must not be empty.<br>
- void getNameWithPrefix(raw_ostream &OS, const Twine &GVName,<br>
- ManglerPrefixTy PrefixTy = Mangler::Default) const;<br>
- void getNameWithPrefix(SmallVectorImpl<char> &OutName, const Twine &GVName,<br>
- ManglerPrefixTy PrefixTy = Mangler::Default) const;<br>
+ static void getNameWithPrefix(raw_ostream &OS, const Twine &GVName,<br>
+ const DataLayout &DL,<br>
+ ManglerPrefixTy PrefixTy = Mangler::Default);<br>
+ static void getNameWithPrefix(SmallVectorImpl<char> &OutName,<br>
+ const Twine &GVName, const DataLayout &DL,<br>
+ ManglerPrefixTy PrefixTy = Mangler::Default);<br>
};<br>
<br>
} // End llvm namespace<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_AsmPrinter.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=0HiZwc_pPZ5-oaPQwuoTmcCVdhsDo1_IJL0PAnyoW5I&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Tue Jun 23 08:59:29 2015<br>
@@ -179,7 +179,7 @@ bool AsmPrinter::doInitialization(Module<br>
<br>
OutStreamer->InitSections(false);<br>
<br>
- Mang = new Mangler(TM.getDataLayout());<br>
+ Mang = new Mangler();<br>
<br>
// Emit the version-min deplyment target directive if needed.<br>
//<br>
@@ -2292,11 +2292,10 @@ MCSymbol *AsmPrinter::getSymbolWithGloba<br>
TM);<br>
}<br>
<br>
-/// GetExternalSymbolSymbol - Return the MCSymbol for the specified<br>
-/// ExternalSymbol.<br>
+/// Return the MCSymbol for the specified ExternalSymbol.<br>
MCSymbol *AsmPrinter::GetExternalSymbolSymbol(StringRef Sym) const {<br>
SmallString<60> NameStr;<br>
- Mang->getNameWithPrefix(NameStr, Sym);<br>
+ Mangler::getNameWithPrefix(NameStr, Sym, *TM.getDataLayout());<br>
return OutContext.getOrCreateSymbol(NameStr);<br>
}<br>
<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_CodeGen_AsmPrinter_OcamlGCPrinter.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=7XuY1RION9wDQ_Ko7_ESi5ohObQhKHhg6jWSWzAC_E8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp Tue Jun 23 08:59:29 2015<br>
@@ -58,7 +58,7 @@ static void EmitCamlGlobal(const Module<br>
SymName[Letter] = toupper(SymName[Letter]);<br>
<br>
SmallString<128> TmpStr;<br>
- AP.Mang->getNameWithPrefix(TmpStr, SymName);<br>
+ Mangler::getNameWithPrefix(TmpStr, SymName, M.getDataLayout());<br>
<br>
MCSymbol *Sym = AP.OutContext.getOrCreateSymbol(TmpStr);<br>
<br>
<br>
Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_ExecutionEngine.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=8za8R5JVfNN0M_yBYKq-N-dmLHYOui1qUQYGMXSdUjg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp (original)<br>
+++ llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp Tue Jun 23 08:59:29 2015<br>
@@ -181,9 +181,9 @@ uint64_t ExecutionEngineState::RemoveMap<br>
<br>
std::string ExecutionEngine::getMangledName(const GlobalValue *GV) {<br>
MutexGuard locked(lock);<br>
- Mangler Mang(DL);<br>
+ Mangler Mang;<br>
SmallString<128> FullName;<br>
- Mang.getNameWithPrefix(FullName, GV->getName());<br>
+ Mang.getNameWithPrefix(FullName, GV, false);<br>
return FullName.str();<br>
}<br>
<br>
<br>
Modified: llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_MCJIT_MCJIT.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=wG5gOD-z5FQV7PisO98h1GI-GL9DvZCXG2bzG7oL1XQ&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp (original)<br>
+++ llvm/trunk/lib/ExecutionEngine/MCJIT/MCJIT.cpp Tue Jun 23 08:59:29 2015<br>
@@ -264,9 +264,8 @@ void MCJIT::finalizeModule(Module *M) {<br>
}<br>
<br>
RuntimeDyld::SymbolInfo MCJIT::findExistingSymbol(const std::string &Name) {<br>
- Mangler Mang(TM->getDataLayout());<br>
SmallString<128> FullName;<br>
- Mang.getNameWithPrefix(FullName, Name);<br>
+ Mangler::getNameWithPrefix(FullName, Name, *TM->getDataLayout());<br>
return Dyld.getSymbol(FullName);<br>
}<br>
<br>
@@ -369,7 +368,7 @@ uint64_t MCJIT::getFunctionAddress(const<br>
void *MCJIT::getPointerToFunction(Function *F) {<br>
MutexGuard locked(lock);<br>
<br>
- Mangler Mang(TM->getDataLayout());<br>
+ Mangler Mang;<br>
SmallString<128> Name;<br>
TM->getNameWithPrefix(Name, F, Mang);<br>
<br>
<br>
Modified: llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_ExecutionEngine_Orc_OrcMCJITReplacement.h-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=8AVFgzR2oPrfiohqpdd4EC6-SVyyof-OPANdKIWDL_Q&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h (original)<br>
+++ llvm/trunk/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h Tue Jun 23 08:59:29 2015<br>
@@ -142,7 +142,6 @@ public:<br>
std::unique_ptr<TargetMachine> TM)<br>
: TM(std::move(TM)), MemMgr(*this, std::move(MemMgr)),<br>
Resolver(*this), ClientResolver(std::move(ClientResolver)),<br>
- Mang(this->TM->getDataLayout()),<br>
NotifyObjectLoaded(*this), NotifyFinalized(*this),<br>
ObjectLayer(NotifyObjectLoaded, NotifyFinalized),<br>
CompileLayer(ObjectLayer, SimpleCompiler(*this->TM)),<br>
@@ -311,7 +310,7 @@ private:<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mang.getNameWithPrefix(MangledNameStream, Name, *TM->getDataLayout());<br>
}<br>
return MangledName;<br>
}<br>
<br>
Modified: llvm/trunk/lib/IR/Mangler.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_IR_Mangler.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=wpEvf0kLyNgW1FxvBr6VPNEq3Faa039_8yCn0LYBf_8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Mangler.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/IR/Mangler.cpp (original)<br>
+++ llvm/trunk/lib/IR/Mangler.cpp Tue Jun 23 08:59:29 2015<br>
@@ -17,6 +17,7 @@<br>
#include "llvm/IR/DataLayout.h"<br>
#include "llvm/IR/DerivedTypes.h"<br>
#include "llvm/IR/Function.h"<br>
+#include "llvm/IR/Module.h"<br>
#include "llvm/Support/raw_ostream.h"<br>
using namespace llvm;<br>
<br>
@@ -47,24 +48,18 @@ static void getNameWithPrefixImpl(raw_os<br>
}<br>
<br>
void Mangler::getNameWithPrefix(raw_ostream &OS, const Twine &GVName,<br>
- ManglerPrefixTy PrefixTy) const {<br>
- char Prefix = DL->getGlobalPrefix();<br>
- return getNameWithPrefixImpl(OS, GVName, PrefixTy, *DL, Prefix);<br>
-}<br>
-<br>
-void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,<br>
- const Twine &GVName, const DataLayout &DL) {<br>
- raw_svector_ostream OS(OutName);<br>
+ const DataLayout &DL,<br>
+ ManglerPrefixTy PrefixTy) {<br>
char Prefix = DL.getGlobalPrefix();<br>
- return getNameWithPrefixImpl(OS, GVName, Mangler::Default, DL, Prefix);<br>
+ return getNameWithPrefixImpl(OS, GVName, PrefixTy, DL, Prefix);<br>
}<br>
<br>
void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,<br>
- const Twine &GVName,<br>
- ManglerPrefixTy PrefixTy) const {<br>
+ const Twine &GVName, const DataLayout &DL,<br>
+ ManglerPrefixTy PrefixTy) {<br>
raw_svector_ostream OS(OutName);<br>
- char Prefix = DL->getGlobalPrefix();<br>
- return getNameWithPrefixImpl(OS, GVName, PrefixTy, *DL, Prefix);<br>
+ char Prefix = DL.getGlobalPrefix();<br>
+ return getNameWithPrefixImpl(OS, GVName, PrefixTy, DL, Prefix);<br>
}<br>
<br>
static bool hasByteCountSuffix(CallingConv::ID CC) {<br>
@@ -108,6 +103,7 @@ void Mangler::getNameWithPrefix(raw_ostr<br>
PrefixTy = Mangler::Private;<br>
}<br>
<br>
+ const DataLayout &DL = GV->getParent()->getDataLayout();<br>
if (!GV->hasName()) {<br>
// Get the ID for the global, assigning a new one if we haven't got one<br>
// already.<br>
@@ -116,12 +112,12 @@ void Mangler::getNameWithPrefix(raw_ostr<br>
ID = NextAnonGlobalID++;<br>
<br>
// Must mangle the global into a unique ID.<br>
- getNameWithPrefix(OS, "__unnamed_" + Twine(ID), PrefixTy);<br>
+ getNameWithPrefix(OS, "__unnamed_" + Twine(ID), DL, PrefixTy);<br>
return;<br>
}<br>
<br>
StringRef Name = GV->getName();<br>
- char Prefix = DL->getGlobalPrefix();<br>
+ char Prefix = DL.getGlobalPrefix();<br>
<br>
// Mangle functions with Microsoft calling conventions specially. Only do<br>
// this mangling for x86_64 vectorcall and 32-bit x86.<br>
@@ -130,7 +126,7 @@ void Mangler::getNameWithPrefix(raw_ostr<br>
MSFunc = nullptr; // Don't mangle when \01 is present.<br>
CallingConv::ID CC =<br>
MSFunc ? MSFunc->getCallingConv() : (unsigned)CallingConv::C;<br>
- if (!DL->hasMicrosoftFastStdCallMangling() &&<br>
+ if (!DL.hasMicrosoftFastStdCallMangling() &&<br>
CC != CallingConv::X86_VectorCall)<br>
MSFunc = nullptr;<br>
if (MSFunc) {<br>
@@ -140,7 +136,7 @@ void Mangler::getNameWithPrefix(raw_ostr<br>
Prefix = '\0'; // vectorcall functions have no prefix.<br>
}<br>
<br>
- getNameWithPrefixImpl(OS, Name, PrefixTy, *DL, Prefix);<br>
+ getNameWithPrefixImpl(OS, Name, PrefixTy, DL, Prefix);<br>
<br>
if (!MSFunc)<br>
return;<br>
@@ -155,7 +151,7 @@ void Mangler::getNameWithPrefix(raw_ostr<br>
// "Pure" variadic functions do not receive @0 suffix.<br>
(!FT->isVarArg() || FT->getNumParams() == 0 ||<br>
(FT->getNumParams() == 1 && MSFunc->hasStructRetAttr())))<br>
- addByteCountSuffix(OS, MSFunc, *DL);<br>
+ addByteCountSuffix(OS, MSFunc, DL);<br>
}<br>
<br>
void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,<br>
<br>
Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_LTO_LTOCodeGenerator.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=52q64TRMh5kjG_hp9kFjAPnhRnrUdHXMK3YFk-XsIaI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)<br>
+++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Tue Jun 23 08:59:29 2015<br>
@@ -453,7 +453,7 @@ void LTOCodeGenerator::applyScopeRestric<br>
passes.add(createVerifierPass());<br>
<br>
// mark which symbols can not be internalized<br>
- Mangler Mangler(TargetMach->getDataLayout());<br>
+ Mangler Mangler;<br>
std::vector<const char*> MustPreserveList;<br>
SmallPtrSet<GlobalValue*, 8> AsmUsed;<br>
std::vector<StringRef> Libcalls;<br>
<br>
Modified: llvm/trunk/lib/Object/IRObjectFile.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Object_IRObjectFile.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=UuVRWjt06AhFEmd_qhYfDWyNQ0RCzbkUnIQcdTUMBG8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/IRObjectFile.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Object/IRObjectFile.cpp (original)<br>
+++ llvm/trunk/lib/Object/IRObjectFile.cpp Tue Jun 23 08:59:29 2015<br>
@@ -37,9 +37,7 @@ using namespace object;<br>
<br>
IRObjectFile::IRObjectFile(MemoryBufferRef Object, std::unique_ptr<Module> Mod)<br>
: SymbolicFile(Binary::ID_IR, Object), M(std::move(Mod)) {<br>
- // Setup a mangler with the DataLayout.<br>
- const DataLayout &DL = M->getDataLayout();<br>
- Mang.reset(new Mangler(&DL));<br>
+ Mang.reset(new Mangler());<br>
<br>
const std::string &InlineAsm = M->getModuleInlineAsm();<br>
if (InlineAsm.empty())<br>
<br>
Modified: llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_NVPTX_NVPTXAsmPrinter.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=hviXlnV4vFStXNgAlF3nmSAJN7nqrtxg3KWAii3r0vY&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp (original)<br>
+++ llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp Tue Jun 23 08:59:29 2015<br>
@@ -826,7 +826,7 @@ bool NVPTXAsmPrinter::doInitialization(M<br>
const_cast<TargetLoweringObjectFile &>(getObjFileLowering())<br>
.Initialize(OutContext, TM);<br>
<br>
- Mang = new Mangler(TM.getDataLayout());<br>
+ Mang = new Mangler();<br>
<br>
// Emit header before any dwarf directives are emitted below.<br>
emitHeader(M, OS1, STI);<br>
<br>
Modified: llvm/trunk/lib/Target/PowerPC/PPCMCInstLower.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_PowerPC_PPCMCInstLower.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=teL_thfZz8tLxj7QQneQHij573q4uMXLyAJrRrTMP38&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCMCInstLower.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/PowerPC/PPCMCInstLower.cpp (original)<br>
+++ llvm/trunk/lib/Target/PowerPC/PPCMCInstLower.cpp Tue Jun 23 08:59:29 2015<br>
@@ -57,7 +57,7 @@ static MCSymbol *GetSymbolFromOperand(co<br>
<br>
if (!MO.isGlobal()) {<br>
assert(MO.isSymbol() && "Isn't a symbol reference");<br>
- Mang->getNameWithPrefix(Name, MO.getSymbolName());<br>
+ Mangler::getNameWithPrefix(Name, MO.getSymbolName(), *DL);<br>
} else {<br>
const GlobalValue *GV = MO.getGlobal();<br>
TM.getNameWithPrefix(Name, GV, *Mang);<br>
<br>
Modified: llvm/trunk/lib/Target/X86/X86MCInstLower.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Target_X86_X86MCInstLower.cpp-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=W8niY9UclPWGQIjTjM4Zh2zZGv_eN7vAi7nCC7blrZc&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MCInstLower.cpp?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/X86/X86MCInstLower.cpp (original)<br>
+++ llvm/trunk/lib/Target/X86/X86MCInstLower.cpp Tue Jun 23 08:59:29 2015<br>
@@ -159,7 +159,7 @@ GetSymbolFromOperand(const MachineOperan<br>
const GlobalValue *GV = MO.getGlobal();<br>
AsmPrinter.getNameWithPrefix(Name, GV);<br>
} else if (MO.isSymbol()) {<br>
- getMang()->getNameWithPrefix(Name, MO.getSymbolName());<br>
+ Mangler::getNameWithPrefix(Name, MO.getSymbolName(), *DL);<br>
} else if (MO.isMBB()) {<br>
assert(Suffix.empty());<br>
Sym = MO.getMBB()->getSymbol();<br>
<br>
Modified: llvm/trunk/tools/lli/OrcLazyJIT.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_lli_OrcLazyJIT.h-3Frev-3D240405-26r1-3D240404-26r2-3D240405-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=KHDtXZgGZuSSjkHYrQrTwlASqozqwdG1UUZcYY4jpUA&s=YLs9SAeagySbpTmRv8Bi_9K7pxDj_8RVqd25M1Px9kk&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/OrcLazyJIT.h?rev=240405&r1=240404&r2=240405&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/lli/OrcLazyJIT.h (original)<br>
+++ llvm/trunk/tools/lli/OrcLazyJIT.h Tue Jun 23 08:59:29 2015<br>
@@ -50,7 +50,6 @@ public:<br>
OrcLazyJIT(std::unique_ptr<TargetMachine> TM, LLVMContext &Context,<br>
CallbackManagerBuilder &BuildCallbackMgr)<br>
: TM(std::move(TM)),<br>
- Mang(this->TM->getDataLayout()),<br>
ObjectLayer(),<br>
CompileLayer(ObjectLayer, orc::SimpleCompiler(*this->TM)),<br>
IRDumpLayer(CompileLayer, createDebugDumper()),<br>
@@ -137,7 +136,7 @@ private:<br>
std::string MangledName;<br>
{<br>
raw_string_ostream MangledNameStream(MangledName);<br>
- Mang.getNameWithPrefix(MangledNameStream, Name);<br>
+ Mangler::getNameWithPrefix(MangledNameStream, Name, *TM->getDataLayout());<br>
}<br>
return MangledName;<br>
}<br>
@@ -145,7 +144,6 @@ private:<br>
static TransformFtor createDebugDumper();<br>
<br>
std::unique_ptr<TargetMachine> TM;<br>
- Mangler Mang;<br>
SectionMemoryManager CCMgrMemMgr;<br>
<br>
ObjLayerT ObjectLayer;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>