<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 24, 2015, at 9:26 AM, Eric Christopher <<a href="mailto:echristo@gmail.com" class="">echristo@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">The mach-o ness of this particular code is a little depressing. Any reason why?</div></div></blockquote><div><br class=""></div><div>Because of the universal binaries. As we have fat files with multiple variants of</div><div>ARM, or x86_64, it’s important to get exact triples in the mach-o case. I still check</div><div>that arch in other cases, but it’s just a Triple.getArch() check that isn’t sufficient</div><div>to differentiate the variants.</div><div>Note that the mach-o specific getTriple() helper is used only in the mach-o specific</div><div>debug map parser.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">-eric</div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Thu, Jul 23, 2015 at 11:46 PM Frederic Riss <<a href="mailto:friss@apple.com" class="">friss@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: friss<br class="">
Date: Fri Jul 24 01:41:04 2015<br class="">
New Revision: 243095<br class="">
<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D243095-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=Jq0i_KOprD2O0U1lpNVcxLG2Pp5UB_W4OC5bLt9IiWU&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=243095&view=rev</a><br class="">
Log:<br class="">
[dsymutil] Make the triple detection more strict.<br class="">
<br class="">
MachOObjectFile offers a method for detecting the correct triple, use<br class="">
it instead of the previous approximation. This doesn't matter right<br class="">
now, but it will become important for mach-o universal (fat) binaries.<br class="">
<br class="">
Modified:<br class="">
    llvm/trunk/test/tools/dsymutil/X86/frame-1.test<br class="">
    llvm/trunk/test/tools/dsymutil/X86/frame-2.test<br class="">
    llvm/trunk/test/tools/dsymutil/X86/odr-1.test<br class="">
    llvm/trunk/test/tools/dsymutil/archive-timestamp.test<br class="">
    llvm/trunk/test/tools/dsymutil/debug-map-parsing.test<br class="">
    llvm/trunk/test/tools/dsymutil/yaml-object-address-rewrite.test<br class="">
    llvm/trunk/tools/dsymutil/BinaryHolder.cpp<br class="">
    llvm/trunk/tools/dsymutil/BinaryHolder.h<br class="">
    llvm/trunk/tools/dsymutil/MachODebugMapParser.cpp<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/X86/frame-1.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_X86_frame-2D1.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=HoIN6MjmiHXfr1ST9t0f5RukItBrKj5NmnW-2WajMCY&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/frame-1.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/X86/frame-1.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/X86/frame-1.test Fri Jul 24 01:41:04 2015<br class="">
@@ -9,7 +9,7 @@<br class="">
 # link twice the same file using this made-up debug map:<br class="">
<br class="">
 ---<br class="">
-triple:          'i386-unknown-unknown-macho'<br class="">
+triple:          'i386-apple-darwin'<br class="">
 objects:<br class="">
   - filename: frame-dw2.o<br class="">
     symbols:<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/X86/frame-2.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_X86_frame-2D2.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=1FCkSpIA1i7qI1ZQihGfDEcHBdnBVOZsZHixmdvihYk&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/frame-2.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/X86/frame-2.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/X86/frame-2.test Fri Jul 24 01:41:04 2015<br class="">
@@ -12,7 +12,7 @@<br class="">
 # appears again. This is a behavior we inherited from dsymutil-classic<br class="">
 # but this should be fixed (see comment in patchFrameInfoForObject())<br class="">
 ---<br class="">
-triple:          'i386-unknown-unknown-macho'<br class="">
+triple:          'i386-apple-darwin'<br class="">
 objects:<br class="">
   - filename: frame-dw2.o<br class="">
     symbols:<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/X86/odr-1.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_X86_odr-2D1.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=7BtkE1f9QMWQT1bUwEGnc03Bloi1ZmtSfMWl8RRKbX8&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/odr-1.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/X86/odr-1.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/X86/odr-1.test Fri Jul 24 01:41:04 2015<br class="">
@@ -14,7 +14,7 @@<br class="">
 # Totally made up debug map to test ODR uniquing<br class="">
<br class="">
 ---<br class="">
-triple:          'x86_64-unknown-unknown-macho'<br class="">
+triple:          'x86_64-apple-darwin'<br class="">
 objects:<br class="">
   - filename: odr1.o<br class="">
     symbols:<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/archive-timestamp.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_archive-2Dtimestamp.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=lvz1x8wcgW5uK5dGeno3fMBt0DWtZQdsfFruQjiEZgs&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/archive-timestamp.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/archive-timestamp.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/archive-timestamp.test Fri Jul 24 01:41:04 2015<br class="">
@@ -6,7 +6,7 @@<br class="">
 # CHECK: warning: {{.*}}libbasic.a(basic3.macho.x86_64.o): {{[Nn]o}} such file<br class="">
<br class="">
 ---<br class="">
-triple:          'x86_64-unknown-unknown-macho'<br class="">
+triple:          'x86_64-apple-darwin'<br class="">
 objects:<br class="">
   - filename:        '/Inputs/libbasic.a(basic2.macho.x86_64.o)'<br class="">
     timestamp:       141869239<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/debug-map-parsing.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_debug-2Dmap-2Dparsing.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=T9tCHGyEnXZKEzyCLvOKqmgGHBe1GGnJQ04L82Szt84&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/debug-map-parsing.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/debug-map-parsing.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/debug-map-parsing.test Fri Jul 24 01:41:04 2015<br class="">
@@ -9,7 +9,7 @@ Check that We can parse the debug map of<br class="">
<br class="">
 CHECK-NOT: error<br class="">
 CHECK: ---<br class="">
-CHECK: triple: 'x86_64-unknown-unknown-macho'<br class="">
+CHECK: triple: 'x86_64-apple-darwin'<br class="">
 CHECK: filename:{{.*}}/Inputs/basic1.macho.x86_64.o<br class="">
 CHECK-DAG: sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000EA0, size: 0x00000024<br class="">
 CHECK: filename{{.*}}/Inputs/basic2.macho.x86_64.o<br class="">
@@ -28,7 +28,7 @@ Check that we can parse the debug-map of<br class="">
<br class="">
 CHECK-LTO-NOT: error<br class="">
 CHECK-LTO: ---<br class="">
-CHECK-LTO: triple: 'x86_64-unknown-unknown-macho'<br class="">
+CHECK-LTO: triple: 'x86_64-apple-darwin'<br class="">
 CHECK-LTO: /Inputs/basic-lto.macho.x86_64.o<br class="">
 CHECK-LTO-DAG:         sym: _bar, objAddr: 0x0000000000000050, binAddr: 0x0000000100000F90, size: 0x00000024<br class="">
 CHECK-LTO-DAG:         sym: _baz, objAddr: 0x0000000000000658, binAddr: 0x0000000100001000, size: 0x00000000<br class="">
@@ -51,7 +51,7 @@ CHECK-ARCHIVE-NEXT:   found member in cur<br class="">
 CHECK-ARCHIVE-NEXT: trying to open {{.*}}/libbasic.a(basic3.macho.x86_64.o)'<br class="">
 CHECK-ARCHIVE-NEXT:    found member in current archive.<br class="">
 CHECK-ARCHIVE: ---<br class="">
-CHECK-ARCHIVE: triple: 'x86_64-unknown-unknown-macho'<br class="">
+CHECK-ARCHIVE: triple: 'x86_64-apple-darwin'<br class="">
 CHECK-ARCHIVE: /Inputs/basic1.macho.x86_64.o<br class="">
 CHECK-ARCHIVE-DAG:     sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000EA0, size: 0x00000024<br class="">
 CHECK-ARCHIVE: /Inputs/./libbasic.a(basic2.macho.x86_64.o)<br class="">
@@ -72,7 +72,7 @@ NOT-FOUND: cannot open{{.*}}"/Inputs/bas<br class="">
 NOT-FOUND: cannot open{{.*}}"/Inputs/basic2.macho.x86_64.o": {{[Nn]o}} such file<br class="">
 NOT-FOUND: cannot open{{.*}}"/Inputs/basic3.macho.x86_64.o": {{[Nn]o}} such file<br class="">
 NOT-FOUND: ---<br class="">
-NOT-FOUND-NEXT: triple: 'x86_64-unknown-unknown-macho'<br class="">
+NOT-FOUND-NEXT: triple: 'x86_64-apple-darwin'<br class="">
 NOT-FOUND-NEXT: ...<br class="">
<br class="">
 Check that we correctly error out on invalid executatble.<br class="">
<br class="">
Modified: llvm/trunk/test/tools/dsymutil/yaml-object-address-rewrite.test<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_dsymutil_yaml-2Dobject-2Daddress-2Drewrite.test-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=fTdYFt_t38hBEW_esLaZxq_YdD9Q7VI-IkwwvMrRI-M&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/yaml-object-address-rewrite.test?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/tools/dsymutil/yaml-object-address-rewrite.test (original)<br class="">
+++ llvm/trunk/test/tools/dsymutil/yaml-object-address-rewrite.test Fri Jul 24 01:41:04 2015<br class="">
@@ -5,7 +5,7 @@<br class="">
 # rewrite these addresses to the right values.<br class="">
 #<br class="">
 # CHECK: ---<br class="">
-# CHECK-NEXT: triple:{{.*}}'x86_64-unknown-unknown-macho'<br class="">
+# CHECK-NEXT: triple:{{.*}}'x86_64-apple-darwin'<br class="">
 # CHECK-NEXT: objects:<br class="">
 # CHECK-NEXT: filename:{{.*}}/Inputs/basic1.macho.x86_64.o<br class="">
 # CHECK-NEXT: timestamp: 0<br class="">
@@ -28,7 +28,7 @@<br class="">
 # CHECK-NOT: { sym:<br class="">
 # CHECK-NEXT: ...<br class="">
 ---<br class="">
-triple:          'x86_64-unknown-unknown-macho'<br class="">
+triple:          'x86_64-apple-darwin'<br class="">
 objects:<br class="">
   - filename: /Inputs/basic1.macho.x86_64.o<br class="">
     symbols:<br class="">
<br class="">
Modified: llvm/trunk/tools/dsymutil/BinaryHolder.cpp<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_dsymutil_BinaryHolder.cpp-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=oUS2IF6PES6PWypcYuv_t2Hq1opJW7PmI6-81cPkwz0&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/BinaryHolder.cpp?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/tools/dsymutil/BinaryHolder.cpp (original)<br class="">
+++ llvm/trunk/tools/dsymutil/BinaryHolder.cpp Fri Jul 24 01:41:04 2015<br class="">
@@ -13,11 +13,21 @@<br class="">
 //===----------------------------------------------------------------------===//<br class="">
<br class="">
 #include "BinaryHolder.h"<br class="">
+#include "llvm/Object/MachO.h"<br class="">
 #include "llvm/Support/raw_ostream.h"<br class="">
<br class="">
 namespace llvm {<br class="">
 namespace dsymutil {<br class="">
<br class="">
+Triple BinaryHolder::getTriple(const object::MachOObjectFile &Obj) {<br class="">
+  // If a ThumbTriple is returned, use it instead of the standard<br class="">
+  // one. This is because the thumb triple always allows to create a<br class="">
+  // target, whereas the non-thumb one might not.<br class="">
+  Triple ThumbTriple;<br class="">
+  Triple T = Obj.getArch(nullptr, &ThumbTriple);<br class="">
+  return ThumbTriple.getArch() ? ThumbTriple : T;<br class="">
+}<br class="">
+<br class="">
 void BinaryHolder::changeBackingMemoryBuffer(<br class="">
     std::unique_ptr<MemoryBuffer> &&Buf) {<br class="">
   CurrentArchive.reset();<br class="">
<br class="">
Modified: llvm/trunk/tools/dsymutil/BinaryHolder.h<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_dsymutil_BinaryHolder.h-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=HA4j-plGM8mDlCD-M-BZgZNhDcbDNpqFAz4MSShV0tc&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/BinaryHolder.h?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/tools/dsymutil/BinaryHolder.h (original)<br class="">
+++ llvm/trunk/tools/dsymutil/BinaryHolder.h Fri Jul 24 01:41:04 2015<br class="">
@@ -14,6 +14,7 @@<br class="">
 #ifndef LLVM_TOOLS_DSYMUTIL_BINARYHOLDER_H<br class="">
 #define LLVM_TOOLS_DSYMUTIL_BINARYHOLDER_H<br class="">
<br class="">
+#include "llvm/ADT/Triple.h"<br class="">
 #include "llvm/Object/Archive.h"<br class="">
 #include "llvm/Object/Error.h"<br class="">
 #include "llvm/Object/ObjectFile.h"<br class="">
@@ -108,6 +109,8 @@ public:<br class="">
   template <typename ObjectFileType> const ObjectFileType &GetAs() {<br class="">
     return cast<ObjectFileType>(*CurrentObjectFile);<br class="">
   }<br class="">
+<br class="">
+  static Triple getTriple(const object::MachOObjectFile &Obj);<br class="">
 };<br class="">
 }<br class="">
 }<br class="">
<br class="">
Modified: llvm/trunk/tools/dsymutil/MachODebugMapParser.cpp<br class="">
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_dsymutil_MachODebugMapParser.cpp-3Frev-3D243095-26r1-3D243094-26r2-3D243095-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=gKO6Scznkisg17P-Aa6huSPtidO7WEHPyPCUkxTCpM0&s=-3bar_E6Lvscv3Uc2smY_lrS1gxvUJQQX8RSS6Bwcjc&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/MachODebugMapParser.cpp?rev=243095&r1=243094&r2=243095&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/tools/dsymutil/MachODebugMapParser.cpp (original)<br class="">
+++ llvm/trunk/tools/dsymutil/MachODebugMapParser.cpp Fri Jul 24 01:41:04 2015<br class="">
@@ -103,13 +103,6 @@ void MachODebugMapParser::switchToNewDeb<br class="">
   CurrentDebugMapObject = &Result->addDebugMapObject(Path, Timestamp);<br class="">
 }<br class="">
<br class="">
-static Triple getTriple(const object::MachOObjectFile &Obj) {<br class="">
-  Triple TheTriple("unknown-unknown-unknown");<br class="">
-  TheTriple.setArch(Triple::ArchType(Obj.getArch()));<br class="">
-  TheTriple.setObjectFormat(Triple::MachO);<br class="">
-  return TheTriple;<br class="">
-}<br class="">
-<br class="">
 /// This main parsing routine tries to open the main binary and if<br class="">
 /// successful iterates over the STAB entries. The real parsing is<br class="">
 /// done in handleStabSymbolTableEntry.<br class="">
@@ -120,7 +113,7 @@ ErrorOr<std::unique_ptr<DebugMap>> MachO<br class="">
<br class="">
   const MachOObjectFile &MainBinary = *MainBinOrError;<br class="">
   loadMainBinarySymbols();<br class="">
-  Result = make_unique<DebugMap>(getTriple(MainBinary));<br class="">
+  Result = make_unique<DebugMap>(BinaryHolder::getTriple(MainBinary));<br class="">
   MainBinaryStrings = MainBinary.getStringTableData();<br class="">
   for (const SymbolRef &Symbol : MainBinary.symbols()) {<br class="">
     const DataRefImpl &DRI = Symbol.getRawDataRefImpl();<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" class="">llvm-commits@cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></body></html>