<div dir="ltr">Yikes, I thought check passed, but I forgot to fixup the AMDGPU includes. Done in r335409.</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jun 22, 2018 at 7:07 PM Reid Kleckner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rnk<br>
Date: Fri Jun 22 19:02:38 2018<br>
New Revision: 335407<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=335407&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=335407&view=rev</a><br>
Log:<br>
[IR] Split Intrinsics.inc into enums and implementations<br>
<br>
Implements PR34259<br>
<br>
Intrinsics.h is a very popular header. Most LLVM TUs care about things<br>
like dbg_value, but they don't care how they are implemented. After I<br>
split these out, IntrinsicImpl.inc is 1.7 MB, so this saves each LLVM TU<br>
from scanning 1.7 MB of source that gets pre-processed away.<br>
<br>
It also means we can modify intrinsic properties without triggering a<br>
full rebuild, but that's probably less of a win.<br>
<br>
I think the next best thing to do would be to split out the target<br>
intrinsics into their own header. Very, very few TUs care about<br>
target-specific intrinsics. It's very hard to split up the target<br>
independent intrinsics like llvm.expect, assume, and dbg.value, though.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/IR/CMakeLists.txt<br>
    llvm/trunk/include/llvm/IR/Intrinsics.h<br>
    llvm/trunk/lib/IR/Function.cpp<br>
    llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt<br>
    llvm/trunk/test/TableGen/<a href="http://intrinsic-long-name.td" rel="noreferrer" target="_blank">intrinsic-long-name.td</a><br>
    llvm/trunk/test/TableGen/<a href="http://intrinsic-struct.td" rel="noreferrer" target="_blank">intrinsic-struct.td</a><br>
    llvm/trunk/test/TableGen/<a href="http://intrinsic-varargs.td" rel="noreferrer" target="_blank">intrinsic-varargs.td</a><br>
    llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp<br>
    llvm/trunk/utils/TableGen/TableGen.cpp<br>
    llvm/trunk/utils/TableGen/TableGenBackends.h<br>
<br>
Modified: llvm/trunk/include/llvm/IR/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/CMakeLists.txt?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/CMakeLists.txt?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/CMakeLists.txt (original)<br>
+++ llvm/trunk/include/llvm/IR/CMakeLists.txt Fri Jun 22 19:02:38 2018<br>
@@ -2,5 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Attributes.t<br>
 tablegen(LLVM Attributes.inc -gen-attrs)<br>
<br>
 set(LLVM_TARGET_DEFINITIONS Intrinsics.td)<br>
-tablegen(LLVM Intrinsics.inc -gen-intrinsic)<br>
+tablegen(LLVM IntrinsicEnums.inc -gen-intrinsic-enums)<br>
+tablegen(LLVM IntrinsicImpl.inc -gen-intrinsic-impl)<br>
 add_public_tablegen_target(intrinsics_gen)<br>
<br>
Modified: llvm/trunk/include/llvm/IR/Intrinsics.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.h?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.h?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/Intrinsics.h (original)<br>
+++ llvm/trunk/include/llvm/IR/Intrinsics.h Fri Jun 22 19:02:38 2018<br>
@@ -39,7 +39,7 @@ namespace Intrinsic {<br>
<br>
     // Get the intrinsic enums generated from Intrinsics.td<br>
 #define GET_INTRINSIC_ENUM_VALUES<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicEnums.inc"<br>
 #undef GET_INTRINSIC_ENUM_VALUES<br>
     , num_intrinsics<br>
   };<br>
<br>
Modified: llvm/trunk/lib/IR/Function.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Function.cpp?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Function.cpp?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/IR/Function.cpp (original)<br>
+++ llvm/trunk/lib/IR/Function.cpp Fri Jun 22 19:02:38 2018<br>
@@ -487,13 +487,13 @@ void Function::copyAttributesFrom(const<br>
 static const char * const IntrinsicNameTable[] = {<br>
   "not_intrinsic",<br>
 #define GET_INTRINSIC_NAME_TABLE<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_INTRINSIC_NAME_TABLE<br>
 };<br>
<br>
 /// Table of per-target intrinsic name tables.<br>
 #define GET_INTRINSIC_TARGET_DATA<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_INTRINSIC_TARGET_DATA<br>
<br>
 /// Find the segment of \c IntrinsicNameTable for intrinsics with the same<br>
@@ -840,7 +840,7 @@ static void DecodeIITType(unsigned &Next<br>
 }<br>
<br>
 #define GET_INTRINSIC_GENERATOR_GLOBAL<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_INTRINSIC_GENERATOR_GLOBAL<br>
<br>
 void Intrinsic::getIntrinsicInfoTableEntries(ID id,<br>
@@ -977,7 +977,7 @@ FunctionType *Intrinsic::getType(LLVMCon<br>
<br>
 bool Intrinsic::isOverloaded(ID id) {<br>
 #define GET_INTRINSIC_OVERLOAD_TABLE<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_INTRINSIC_OVERLOAD_TABLE<br>
 }<br>
<br>
@@ -995,7 +995,7 @@ bool Intrinsic::isLeaf(ID id) {<br>
<br>
 /// This defines the "Intrinsic::getAttributes(ID id)" method.<br>
 #define GET_INTRINSIC_ATTRIBUTES<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_INTRINSIC_ATTRIBUTES<br>
<br>
 Function *Intrinsic::getDeclaration(Module *M, ID id, ArrayRef<Type*> Tys) {<br>
@@ -1008,12 +1008,12 @@ Function *Intrinsic::getDeclaration(Modu<br>
<br>
 // This defines the "Intrinsic::getIntrinsicForGCCBuiltin()" method.<br>
 #define GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN<br>
<br>
 // This defines the "Intrinsic::getIntrinsicForMSBuiltin()" method.<br>
 #define GET_LLVM_INTRINSIC_FOR_MS_BUILTIN<br>
-#include "llvm/IR/Intrinsics.inc"<br>
+#include "llvm/IR/IntrinsicImpl.inc"<br>
 #undef GET_LLVM_INTRINSIC_FOR_MS_BUILTIN<br>
<br>
 bool Intrinsic::matchIntrinsicType(Type *Ty, ArrayRef<Intrinsic::IITDescriptor> &Infos,<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/CMakeLists.txt Fri Jun 22 19:02:38 2018<br>
@@ -7,7 +7,8 @@ tablegen(LLVM AMDGPUGenDAGISel.inc -gen-<br>
 tablegen(LLVM AMDGPUGenDFAPacketizer.inc -gen-dfa-packetizer)<br>
 tablegen(LLVM AMDGPUGenDisassemblerTables.inc -gen-disassembler)<br>
 tablegen(LLVM AMDGPUGenInstrInfo.inc -gen-instr-info)<br>
-tablegen(LLVM AMDGPUGenIntrinsics.inc -gen-tgt-intrinsic)<br>
+tablegen(LLVM AMDGPUGenIntrinsicEnums.inc -gen-tgt-intrinsic-enums)<br>
+tablegen(LLVM AMDGPUGenIntrinsicImpl.inc -gen-tgt-intrinsic-impl)<br>
 tablegen(LLVM AMDGPUGenMCCodeEmitter.inc -gen-emitter)<br>
 tablegen(LLVM AMDGPUGenMCPseudoLowering.inc -gen-pseudo-lowering)<br>
 tablegen(LLVM AMDGPUGenRegisterBank.inc -gen-register-bank)<br>
<br>
Modified: llvm/trunk/test/TableGen/<a href="http://intrinsic-long-name.td" rel="noreferrer" target="_blank">intrinsic-long-name.td</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-long-name.td?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-long-name.td?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/TableGen/<a href="http://intrinsic-long-name.td" rel="noreferrer" target="_blank">intrinsic-long-name.td</a> (original)<br>
+++ llvm/trunk/test/TableGen/<a href="http://intrinsic-long-name.td" rel="noreferrer" target="_blank">intrinsic-long-name.td</a> Fri Jun 22 19:02:38 2018<br>
@@ -1,4 +1,4 @@<br>
-// RUN: llvm-tblgen -gen-intrinsic %s | FileCheck %s<br>
+// RUN: llvm-tblgen -gen-intrinsic-enums %s | FileCheck %s<br>
 // XFAIL: vg_leak<br>
<br>
 class IntrinsicProperty;<br>
<br>
Modified: llvm/trunk/test/TableGen/<a href="http://intrinsic-struct.td" rel="noreferrer" target="_blank">intrinsic-struct.td</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-struct.td?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-struct.td?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/TableGen/<a href="http://intrinsic-struct.td" rel="noreferrer" target="_blank">intrinsic-struct.td</a> (original)<br>
+++ llvm/trunk/test/TableGen/<a href="http://intrinsic-struct.td" rel="noreferrer" target="_blank">intrinsic-struct.td</a> Fri Jun 22 19:02:38 2018<br>
@@ -1,4 +1,4 @@<br>
-// RUN: llvm-tblgen -gen-intrinsic %s | FileCheck %s<br>
+// RUN: llvm-tblgen -gen-intrinsic-enums %s | FileCheck %s<br>
 // XFAIL: vg_leak<br>
<br>
 class IntrinsicProperty;<br>
<br>
Modified: llvm/trunk/test/TableGen/<a href="http://intrinsic-varargs.td" rel="noreferrer" target="_blank">intrinsic-varargs.td</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-varargs.td?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/intrinsic-varargs.td?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/TableGen/<a href="http://intrinsic-varargs.td" rel="noreferrer" target="_blank">intrinsic-varargs.td</a> (original)<br>
+++ llvm/trunk/test/TableGen/<a href="http://intrinsic-varargs.td" rel="noreferrer" target="_blank">intrinsic-varargs.td</a> Fri Jun 22 19:02:38 2018<br>
@@ -1,4 +1,4 @@<br>
-// RUN: llvm-tblgen -gen-intrinsic %s | FileCheck %s<br>
+// RUN: llvm-tblgen -gen-intrinsic-impl %s | FileCheck %s<br>
 // XFAIL: vg_leak<br>
<br>
 class IntrinsicProperty;<br>
<br>
Modified: llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp Fri Jun 22 19:02:38 2018<br>
@@ -34,7 +34,7 @@ public:<br>
   IntrinsicEmitter(RecordKeeper &R, bool T)<br>
     : Records(R), TargetOnly(T) {}<br>
<br>
-  void run(raw_ostream &OS);<br>
+  void run(raw_ostream &OS, bool Enums);<br>
<br>
   void EmitPrefix(raw_ostream &OS);<br>
<br>
@@ -56,7 +56,7 @@ public:<br>
 // IntrinsicEmitter Implementation<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-void IntrinsicEmitter::run(raw_ostream &OS) {<br>
+void IntrinsicEmitter::run(raw_ostream &OS, bool Enums) {<br>
   emitSourceFileHeader("Intrinsic Function Source Fragment", OS);<br>
<br>
   CodeGenIntrinsicTable Ints(Records, TargetOnly);<br>
@@ -66,29 +66,31 @@ void IntrinsicEmitter::run(raw_ostream &<br>
<br>
   EmitPrefix(OS);<br>
<br>
-  // Emit the enum information.<br>
-  EmitEnumInfo(Ints, OS);<br>
-<br>
-  // Emit the target metadata.<br>
-  EmitTargetInfo(Ints, OS);<br>
+  if (Enums) {<br>
+    // Emit the enum information.<br>
+    EmitEnumInfo(Ints, OS);<br>
+  } else {<br>
+    // Emit the target metadata.<br>
+    EmitTargetInfo(Ints, OS);<br>
<br>
-  // Emit the intrinsic ID -> name table.<br>
-  EmitIntrinsicToNameTable(Ints, OS);<br>
+    // Emit the intrinsic ID -> name table.<br>
+    EmitIntrinsicToNameTable(Ints, OS);<br>
<br>
-  // Emit the intrinsic ID -> overload table.<br>
-  EmitIntrinsicToOverloadTable(Ints, OS);<br>
+    // Emit the intrinsic ID -> overload table.<br>
+    EmitIntrinsicToOverloadTable(Ints, OS);<br>
<br>
-  // Emit the intrinsic declaration generator.<br>
-  EmitGenerator(Ints, OS);<br>
+    // Emit the intrinsic declaration generator.<br>
+    EmitGenerator(Ints, OS);<br>
<br>
-  // Emit the intrinsic parameter attributes.<br>
-  EmitAttributes(Ints, OS);<br>
+    // Emit the intrinsic parameter attributes.<br>
+    EmitAttributes(Ints, OS);<br>
<br>
-  // Emit code to translate GCC builtins into LLVM intrinsics.<br>
-  EmitIntrinsicToBuiltinMap(Ints, true, OS);<br>
+    // Emit code to translate GCC builtins into LLVM intrinsics.<br>
+    EmitIntrinsicToBuiltinMap(Ints, true, OS);<br>
<br>
-  // Emit code to translate MS builtins into LLVM intrinsics.<br>
-  EmitIntrinsicToBuiltinMap(Ints, false, OS);<br>
+    // Emit code to translate MS builtins into LLVM intrinsics.<br>
+    EmitIntrinsicToBuiltinMap(Ints, false, OS);<br>
+  }<br>
<br>
   EmitSuffix(OS);<br>
 }<br>
@@ -839,6 +841,12 @@ void IntrinsicEmitter::EmitIntrinsicToBu<br>
   OS << "#endif\n\n";<br>
 }<br>
<br>
-void llvm::EmitIntrinsics(RecordKeeper &RK, raw_ostream &OS, bool TargetOnly) {<br>
-  IntrinsicEmitter(RK, TargetOnly).run(OS);<br>
+void llvm::EmitIntrinsicEnums(RecordKeeper &RK, raw_ostream &OS,<br>
+                              bool TargetOnly) {<br>
+  IntrinsicEmitter(RK, TargetOnly).run(OS, /*Enums=*/true);<br>
+}<br>
+<br>
+void llvm::EmitIntrinsicImpl(RecordKeeper &RK, raw_ostream &OS,<br>
+                             bool TargetOnly) {<br>
+  IntrinsicEmitter(RK, TargetOnly).run(OS, /*Enums=*/false);<br>
 }<br>
<br>
Modified: llvm/trunk/utils/TableGen/TableGen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/TableGen/TableGen.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/TableGen.cpp Fri Jun 22 19:02:38 2018<br>
@@ -38,8 +38,10 @@ enum ActionType {<br>
   GenDFAPacketizer,<br>
   GenFastISel,<br>
   GenSubtarget,<br>
-  GenIntrinsic,<br>
-  GenTgtIntrinsic,<br>
+  GenIntrinsicEnums,<br>
+  GenIntrinsicImpl,<br>
+  GenTgtIntrinsicEnums,<br>
+  GenTgtIntrinsicImpl,<br>
   PrintEnums,<br>
   PrintSets,<br>
   GenOptParserDefs,<br>
@@ -85,9 +87,13 @@ namespace {<br>
                                "Generate a \"fast\" instruction selector"),<br>
                     clEnumValN(GenSubtarget, "gen-subtarget",<br>
                                "Generate subtarget enumerations"),<br>
-                    clEnumValN(GenIntrinsic, "gen-intrinsic",<br>
+                    clEnumValN(GenIntrinsicEnums, "gen-intrinsic-enums",<br>
+                               "Generate intrinsic enums"),<br>
+                    clEnumValN(GenIntrinsicImpl, "gen-intrinsic-impl",<br>
                                "Generate intrinsic information"),<br>
-                    clEnumValN(GenTgtIntrinsic, "gen-tgt-intrinsic",<br>
+                    clEnumValN(GenTgtIntrinsicEnums, "gen-tgt-intrinsic-enums",<br>
+                               "Generate target intrinsic enums"),<br>
+                    clEnumValN(GenTgtIntrinsicImpl, "gen-tgt-intrinsic-impl",<br>
                                "Generate target intrinsic information"),<br>
                     clEnumValN(PrintEnums, "print-enums",<br>
                                "Print enum values for a class"),<br>
@@ -162,11 +168,17 @@ bool LLVMTableGenMain(raw_ostream &OS, R<br>
   case GenSubtarget:<br>
     EmitSubtarget(Records, OS);<br>
     break;<br>
-  case GenIntrinsic:<br>
-    EmitIntrinsics(Records, OS);<br>
+  case GenIntrinsicEnums:<br>
+    EmitIntrinsicEnums(Records, OS);<br>
     break;<br>
-  case GenTgtIntrinsic:<br>
-    EmitIntrinsics(Records, OS, true);<br>
+  case GenIntrinsicImpl:<br>
+    EmitIntrinsicImpl(Records, OS);<br>
+    break;<br>
+  case GenTgtIntrinsicEnums:<br>
+    EmitIntrinsicEnums(Records, OS, true);<br>
+    break;<br>
+  case GenTgtIntrinsicImpl:<br>
+    EmitIntrinsicImpl(Records, OS, true);<br>
     break;<br>
   case GenOptParserDefs:<br>
     EmitOptParser(Records, OS);<br>
<br>
Modified: llvm/trunk/utils/TableGen/TableGenBackends.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGenBackends.h?rev=335407&r1=335406&r2=335407&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGenBackends.h?rev=335407&r1=335406&r2=335407&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/TableGen/TableGenBackends.h (original)<br>
+++ llvm/trunk/utils/TableGen/TableGenBackends.h Fri Jun 22 19:02:38 2018<br>
@@ -62,7 +62,10 @@ namespace llvm {<br>
 class raw_ostream;<br>
 class RecordKeeper;<br>
<br>
-void EmitIntrinsics(RecordKeeper &RK, raw_ostream &OS, bool TargetOnly = false);<br>
+void EmitIntrinsicEnums(RecordKeeper &RK, raw_ostream &OS,<br>
+                        bool TargetOnly = false);<br>
+void EmitIntrinsicImpl(RecordKeeper &RK, raw_ostream &OS,<br>
+                       bool TargetOnly = false);<br>
 void EmitAsmMatcher(RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitAsmWriter(RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitCallingConv(RecordKeeper &RK, raw_ostream &OS);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>