<div dir="ltr">Sorry for the noise, should be addressed in r304042</div><br><div class="gmail_quote"><div dir="ltr">On Fri, May 26, 2017 at 2:03 PM Vedant Kumar <<a href="mailto:vsk@apple.com">vsk@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi David,<br>
<br>
I think this change may be causing a test failure on our incremental bot:<br>
<br>
    <a href="http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental_check/36948/" rel="noreferrer" target="_blank">http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental_check/36948/</a><br>
<br>
The affected test started passing after I reverted your commit locally. Is there a chance your change drops the DICompileUnit defined in the test file? It looks like there's a "@debug_info" function which tries to access that information in some way (though I admit, I don't really follow what's happening here).<br>
<br>
Here is the test error:<br>
<br>
******************** TEST 'LLVM :: CodeGen/ARM/arm-shrink-wrapping.ll' FAILED ********************<br>
<br>
Script:<br>
--<br>
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/llc /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll -o - -enable-shrink-wrap=true -ifcvt-fn-start=1 -ifcvt-fn-stop=0 -mtriple=armv7-apple-ios       | /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/FileCheck /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll --check-prefix=CHECK --check-prefix=ARM --check-prefix=ENABLE --check-prefix=ARM-ENABLE<br>
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/llc /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll -o - -enable-shrink-wrap=false -ifcvt-fn-start=1 -ifcvt-fn-stop=0 -mtriple=armv7-apple-ios       | /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/FileCheck /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll --check-prefix=CHECK --check-prefix=ARM --check-prefix=DISABLE --check-prefix=ARM-DISABLE<br>
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/llc /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll -o - -enable-shrink-wrap=true -ifcvt-fn-start=1 -ifcvt-fn-stop=0 -mtriple=thumbv7-apple-ios       | /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/FileCheck /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll --check-prefix=CHECK --check-prefix=THUMB --check-prefix=ENABLE --check-prefix=THUMB-ENABLE<br>
/Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/llc /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll -o - -enable-shrink-wrap=false -ifcvt-fn-start=1 -ifcvt-fn-stop=0 -mtriple=thumbv7-apple-ios       | /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/./bin/FileCheck /Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll --check-prefix=CHECK --check-prefix=THUMB --check-prefix=DISABLE --check-prefix=THUMB-DISABLE<br>
--<br>
Exit Code: 1<br>
<br>
Command Output (stderr):<br>
--<br>
<br>
/Users/buildslave/jenkins/sharedspace/incremental@2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll:659:10: error: expected string not found in input<br>
<br>
; CHECK: bl<br>
         ^<br>
<stdin>:375:7: note: scanning from here<br>
 vldr s0, LCPI12_0<br>
      ^<br>
<stdin>:377:2: note: possible intended match here<br>
 bx lr<br>
<br>
 ^<br>
<br>
best,<br>
vedant<br>
<br>
<br>
> On May 26, 2017, at 11:52 AM, David Blaikie via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: dblaikie<br>
> Date: Fri May 26 13:52:56 2017<br>
> New Revision: 304020<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=304020&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=304020&view=rev</a><br>
> Log:<br>
> DebugInfo: Do not emit empty CUs<br>
><br>
> Consistent with GCC and addresses a shortcoming with ThinLTO where many<br>
> imported CUs may end up being empty (because the functions imported from<br>
> them either ended up not being used (and were then discarded, since<br>
> they're imported as available_externally) or optimized away entirely).<br>
><br>
> Test cases previously testing empty CUs (either intentionally, or<br>
> because they didn't need anything more complicated) had a trivial 'int'<br>
> or similar basic type added to their retained types list.<br>
><br>
> This is a first order approximation - a deeper implementation could do<br>
> things like:<br>
><br>
> 1) Be more lazy about construction of the CU - for example if two CUs<br>
> containing a single identical retained type are linked together, with<br>
> this change one of the two CUs will be produced but empty (since a<br>
> duplicate type won't be produced).<br>
><br>
> 2) Go further and invert all the CU links the same way the subprogram<br>
> link is inverted - keep named CU lists of retained types, macros, etc,<br>
> and have those link back to the CU. Then if they're emitted, the CU is<br>
> emitted, but never otherwise - this would allow the metadata itself to<br>
> be dropped earlier too, though it seems unlikely that's an important<br>
> optimization as there shouldn't be many CUs relative to the number of<br>
> other entities.<br>
><br>
> Added:<br>
>    llvm/trunk/test/DebugInfo/omit-empty.ll<br>
>      - copied, changed from r304018, llvm/trunk/test/DebugInfo/dwo.ll<br>
> Modified:<br>
>    llvm/trunk/include/llvm/IR/Metadata.h<br>
>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br>
>    llvm/trunk/test/DebugInfo/Generic/empty.ll<br>
>    llvm/trunk/test/DebugInfo/Generic/nodebug.ll<br>
>    llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll<br>
>    llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll<br>
>    llvm/trunk/test/DebugInfo/X86/debug-macro.ll<br>
>    llvm/trunk/test/DebugInfo/X86/empty.ll<br>
>    llvm/trunk/test/DebugInfo/X86/fission-hash.ll<br>
>    llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll<br>
>    llvm/trunk/test/DebugInfo/dwo.ll<br>
>    llvm/trunk/test/DebugInfo/skeletoncu.ll<br>
><br>
> Modified: llvm/trunk/include/llvm/IR/Metadata.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Metadata.h?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Metadata.h?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/IR/Metadata.h (original)<br>
> +++ llvm/trunk/include/llvm/IR/Metadata.h Fri May 26 13:52:56 2017<br>
> @@ -1223,6 +1223,7 @@ public:<br>
><br>
>   // FIXME: Fix callers and remove condition on N.<br>
>   unsigned size() const { return N ? N->getNumOperands() : 0u; }<br>
> +  bool empty() const { return N ? N->getNumOperands() == 0 : true; }<br>
>   T *operator[](unsigned I) const { return cast_or_null<T>(N->getOperand(I)); }<br>
><br>
>   // FIXME: Fix callers and remove condition on N.<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri May 26 13:52:56 2017<br>
> @@ -374,7 +374,7 @@ void DwarfDebug::constructAbstractSubpro<br>
><br>
>   // Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram<br>
>   // was inlined from another compile unit.<br>
> -  auto &CU = *CUMap.lookup(SP->getUnit());<br>
> +  auto &CU = getOrCreateDwarfCompileUnit(SP->getUnit());<br>
>   if (auto *SkelCU = CU.getSkeleton()) {<br>
>     (shareAcrossDWOCUs() ? CU : SrcCU)<br>
>         .constructAbstractSubprogramScopeDIE(Scope);<br>
> @@ -407,7 +407,9 @@ void DwarfDebug::addGnuPubAttributes(Dwa<br>
> // Create new DwarfCompileUnit for the given metadata node with tag<br>
> // DW_TAG_compile_unit.<br>
> DwarfCompileUnit &<br>
> -DwarfDebug::constructDwarfCompileUnit(const DICompileUnit *DIUnit) {<br>
> +DwarfDebug::getOrCreateDwarfCompileUnit(const DICompileUnit *DIUnit) {<br>
> +  if (auto *CU = CUMap.lookup(DIUnit))<br>
> +    return *CU;<br>
>   StringRef FN = DIUnit->getFilename();<br>
>   CompilationDir = DIUnit->getDirectory();<br>
><br>
> @@ -540,7 +542,12 @@ void DwarfDebug::beginModule() {<br>
>   }<br>
><br>
>   for (DICompileUnit *CUNode : M->debug_compile_units()) {<br>
> -    DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);<br>
> +    if (CUNode->getEnumTypes().empty() && CUNode->getRetainedTypes().empty() &&<br>
> +        CUNode->getGlobalVariables().empty() &&<br>
> +        CUNode->getImportedEntities().empty() && CUNode->getMacros().empty())<br>
> +      continue;<br>
> +<br>
> +    DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(CUNode);<br>
>     for (auto *IE : CUNode->getImportedEntities())<br>
>       CU.addImportedEntity(IE);<br>
><br>
> @@ -587,11 +594,12 @@ void DwarfDebug::finishVariableDefinitio<br>
> }<br>
><br>
> void DwarfDebug::finishSubprogramDefinitions() {<br>
> -  for (const DISubprogram *SP : ProcessedSPNodes)<br>
> -    if (SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug)<br>
> -      forBothCUs(*CUMap.lookup(SP->getUnit()), [&](DwarfCompileUnit &CU) {<br>
> -        CU.finishSubprogramDefinition(SP);<br>
> -      });<br>
> +  for (const DISubprogram *SP : ProcessedSPNodes) {<br>
> +    assert(SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug);<br>
> +    forBothCUs(<br>
> +        getOrCreateDwarfCompileUnit(SP->getUnit()),<br>
> +        [&](DwarfCompileUnit &CU) { CU.finishSubprogramDefinition(SP); });<br>
> +  }<br>
> }<br>
><br>
> void DwarfDebug::finalizeModuleInfo() {<br>
> @@ -1136,12 +1144,10 @@ void DwarfDebug::beginFunctionImpl(const<br>
><br>
>   auto *SP = MF->getFunction()->getSubprogram();<br>
>   assert(LScopes.empty() || SP == LScopes.getCurrentFunctionScope()->getScopeNode());<br>
> -  DwarfCompileUnit *TheCU = CUMap.lookup(SP->getUnit());<br>
> -  if (!TheCU) {<br>
> -    assert(SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug &&<br>
> -           "DICompileUnit missing from <a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a>?");<br>
> +  if (SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug)<br>
>     return;<br>
> -  }<br>
> +<br>
> +  DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(SP->getUnit());<br>
><br>
>   // Set DwarfDwarfCompileUnitID in MCContext to the Compile Unit this function<br>
>   // belongs to so that we add to the correct per-cu line table in the<br>
> @@ -1150,7 +1156,7 @@ void DwarfDebug::beginFunctionImpl(const<br>
>     // Use a single line table if we are generating assembly.<br>
>     Asm->OutStreamer->getContext().setDwarfCompileUnitID(0);<br>
>   else<br>
> -    Asm->OutStreamer->getContext().setDwarfCompileUnitID(TheCU->getUniqueID());<br>
> +    Asm->OutStreamer->getContext().setDwarfCompileUnitID(CU.getUniqueID());<br>
><br>
>   // Record beginning of function.<br>
>   PrologEndLoc = findPrologueEndLoc(MF);<br>
> @@ -1546,6 +1552,9 @@ void DwarfDebug::emitDebugLocEntryLocati<br>
><br>
> // Emit locations into the debug loc section.<br>
> void DwarfDebug::emitDebugLoc() {<br>
> +  if (DebugLocs.getLists().empty())<br>
> +    return;<br>
> +<br>
>   // Start the dwarf loc section.<br>
>   Asm->OutStreamer->SwitchSection(<br>
>       Asm->getObjFileLowering().getDwarfLocSection());<br>
> @@ -1757,6 +1766,9 @@ void DwarfDebug::emitDebugARanges() {<br>
><br>
> /// Emit address ranges into a debug ranges section.<br>
> void DwarfDebug::emitDebugRanges() {<br>
> +  if (CUMap.empty())<br>
> +    return;<br>
> +<br>
>   // Start the dwarf ranges section.<br>
>   Asm->OutStreamer->SwitchSection(<br>
>       Asm->getObjFileLowering().getDwarfRangesSection());<br>
> @@ -1836,6 +1848,9 @@ void DwarfDebug::emitMacroFile(DIMacroFi<br>
><br>
> /// Emit macros into a debug macinfo section.<br>
> void DwarfDebug::emitDebugMacinfo() {<br>
> +  if (CUMap.empty())<br>
> +    return;<br>
> +<br>
>   // Start the dwarf macinfo section.<br>
>   Asm->OutStreamer->SwitchSection(<br>
>       Asm->getObjFileLowering().getDwarfMacinfoSection());<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Fri May 26 13:52:56 2017<br>
> @@ -416,7 +416,7 @@ class DwarfDebug : public DebugHandlerBa<br>
><br>
>   /// Create new DwarfCompileUnit for the given metadata node with tag<br>
>   /// DW_TAG_compile_unit.<br>
> -  DwarfCompileUnit &constructDwarfCompileUnit(const DICompileUnit *DIUnit);<br>
> +  DwarfCompileUnit &getOrCreateDwarfCompileUnit(const DICompileUnit *DIUnit);<br>
><br>
>   /// Construct imported_module or imported_declaration DIE.<br>
>   void constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/Generic/empty.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/empty.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/empty.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/Generic/empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/Generic/empty.ll Fri May 26 13:52:56 2017<br>
> @@ -15,9 +15,6 @@<br>
> ; CHECK: .debug_pubnames contents:<br>
> ; CHECK-NOT: {{^}}0x<br>
><br>
> -; CHECK: .debug_pubtypes contents:<br>
> -; CHECK-NOT: {{^}}0x<br>
> -<br>
> ; CHECK: contents:<br>
><br>
> ; Don't emit DW_AT_addr_base when there are no addresses.<br>
> @@ -26,8 +23,10 @@<br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!5}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug, file: !4, enums: !2, retainedTypes: !2, globals: !2)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug, file: !4, enums: !2, retainedTypes: !6, globals: !2)<br>
> !2 = !{}<br>
> !3 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")<br>
> !4 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")<br>
> !5 = !{i32 1, !"Debug Info Version", i32 3}<br>
> +!6 = !{!7}<br>
> +!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/Generic/nodebug.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/nodebug.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/nodebug.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/Generic/nodebug.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/Generic/nodebug.ll Fri May 26 13:52:56 2017<br>
> @@ -42,7 +42,7 @@ attributes #0 = { uwtable "less-precise-<br>
> !llvm.module.flags = !{!8, !9}<br>
> !llvm.ident = !{!10}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !12, globals: !2, imports: !2)<br>
> !1 = !DIFile(filename: "nodebug.cpp", directory: "/tmp/dbginfo")<br>
> !2 = !{}<br>
> !4 = distinct !DISubprogram(name: "f1", linkageName: "_Z2f1v", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)<br>
> @@ -53,3 +53,5 @@ attributes #0 = { uwtable "less-precise-<br>
> !9 = !{i32 2, !"Debug Info Version", i32 3}<br>
> !10 = !{!"clang version 3.5.0 "}<br>
> !11 = !DILocation(line: 3, scope: !4)<br>
> +!12 = !{!13}<br>
> +!13 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll Fri May 26 13:52:56 2017<br>
> @@ -7,9 +7,11 @@<br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !5, globals: !2, imports: !2, dwoId: 43981)<br>
> !1 = !DIFile(filename: "<stdin>", directory: "/")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> !4 = !{i32 2, !"Debug Info Version", i32 3}<br>
> +!5 = !{!6}<br>
> +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
><br>
> Modified: llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll Fri May 26 13:52:56 2017<br>
> @@ -35,10 +35,6 @@<br>
> ; CHECK: DW_AT_low_pc<br>
> ; CHECK: DW_AT_high_pc<br>
><br>
> -; CHECK: DW_TAG_compile_unit<br>
> -; CHECK: DW_AT_low_pc<br>
> -; CHECK: DW_AT_high_pc<br>
> -<br>
> ; CHECK: DW_TAG_subprogram<br>
> ; CHECK-NOT: DW_TAG<br>
> ; CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3baz1A"<br>
> @@ -53,6 +49,10 @@<br>
> ; CHECK: DW_AT_location [DW_FORM_exprloc]<br>
> ; CHECK-NOT: DW_AT_location<br>
><br>
> +; CHECK: DW_TAG_compile_unit<br>
> +; CHECK: DW_AT_low_pc<br>
> +; CHECK: DW_AT_high_pc<br>
> +<br>
> ; CHECK: .debug_loc contents:<br>
> ; CHECK: 0x00000000: Beginning address offset: 0x0000000000000000<br>
> ; CHECK:                Ending address offset: 0x0000000000000017<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/X86/debug-macro.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-macro.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-macro.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/debug-macro.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/debug-macro.ll Fri May 26 13:52:56 2017<br>
> @@ -1,40 +1,38 @@<br>
> -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck --check-prefix=CHECK-INFO %s<br>
> -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-dump=macro - | FileCheck --check-prefix=CHECK-MACRO %s<br>
> -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -debug-dump=line - | FileCheck --check-prefix=CHECK-LINE %s<br>
> -<br>
> -<br>
> -; CHECK-INFO: .debug_info contents:<br>
> -; CHECK-INFO: DW_TAG_compile_unit<br>
> -; CHECK-INFO-NOT: DW_TAG<br>
> -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro.cpp")<br>
> -; CHECK-INFO:   DW_AT_macro_info {{.*}}(0x00000000)<br>
> -; CHECK-INFO: DW_TAG_compile_unit<br>
> -; CHECK-INFO-NOT: DW_TAG<br>
> -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro1.cpp")<br>
> -; CHECK-INFO:   DW_AT_macro_info {{.*}}(0x00000044)<br>
> -; CHECK-INFO: DW_TAG_compile_unit<br>
> -; CHECK-INFO-NOT: DW_TAG<br>
> -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro2.cpp")<br>
> -; CHECK-INFO-NOT: DW_AT_macro_info<br>
> -<br>
> -; CHECK-MACRO:     .debug_macinfo contents:<br>
> -; CHECK-MACRO-NEXT: DW_MACINFO_define - lineno: 0 macro: NameCMD ValueCMD<br>
> -; CHECK-MACRO-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1<br>
> -; CHECK-MACRO-NEXT:   DW_MACINFO_start_file - lineno: 9 filenum: 2<br>
> -; CHECK-MACRO-NEXT:     DW_MACINFO_define - lineno: 1 macro: NameDef Value<br>
> -; CHECK-MACRO-NEXT:     DW_MACINFO_undef - lineno: 11 macro: NameUndef<br>
> -; CHECK-MACRO-NEXT:   DW_MACINFO_end_file<br>
> -; CHECK-MACRO-NEXT:   DW_MACINFO_undef - lineno: 10 macro: NameUndef2<br>
> -; CHECK-MACRO-NEXT: DW_MACINFO_end_file<br>
> -; CHECK-MACRO-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1<br>
> -; CHECK-MACRO-NEXT: DW_MACINFO_end_file<br>
> -<br>
> -; CHECK-LINE: .debug_line contents:<br>
> -; CHECK-LINE: Dir  Mod Time   File Len   File Name<br>
> -; CHECK-LINE: file_names[  1] {{.*}}debug-macro.cpp<br>
> -; CHECK-LINE: file_names[  2] {{.*}}debug-macro.h<br>
> -; CHECK-LINE: Dir  Mod Time   File Len   File Name<br>
> -; CHECK-LINE: file_names[  1] {{.*}}debug-macro1.cpp<br>
> +; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump - | FileCheck %s<br>
> +<br>
> +<br>
> +; CHECK-LABEL: .debug_info contents:<br>
> +; CHECK: DW_TAG_compile_unit<br>
> +; CHECK-NOT: DW_TAG<br>
> +; CHECK:   DW_AT_name {{.*}}"debug-macro.cpp")<br>
> +; CHECK:   DW_AT_macro_info {{.*}}(0x00000000)<br>
> +; CHECK: DW_TAG_compile_unit<br>
> +; CHECK-NOT: DW_TAG<br>
> +; CHECK:   DW_AT_name {{.*}}"debug-macro1.cpp")<br>
> +; CHECK:   DW_AT_macro_info {{.*}}(0x00000044)<br>
> +; CHECK: DW_TAG_compile_unit<br>
> +; CHECK-NOT: DW_TAG<br>
> +; CHECK:   DW_AT_name {{.*}}"debug-macro2.cpp")<br>
> +; CHECK-NOT: DW_AT_macro_info<br>
> +<br>
> +; CHECK-LABEL:     .debug_macinfo contents:<br>
> +; CHECK-NEXT: DW_MACINFO_define - lineno: 0 macro: NameCMD ValueCMD<br>
> +; CHECK-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1<br>
> +; CHECK-NEXT:   DW_MACINFO_start_file - lineno: 9 filenum: 2<br>
> +; CHECK-NEXT:     DW_MACINFO_define - lineno: 1 macro: NameDef Value<br>
> +; CHECK-NEXT:     DW_MACINFO_undef - lineno: 11 macro: NameUndef<br>
> +; CHECK-NEXT:   DW_MACINFO_end_file<br>
> +; CHECK-NEXT:   DW_MACINFO_undef - lineno: 10 macro: NameUndef2<br>
> +; CHECK-NEXT: DW_MACINFO_end_file<br>
> +; CHECK-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1<br>
> +; CHECK-NEXT: DW_MACINFO_end_file<br>
> +<br>
> +; CHECK-LABEL: .debug_line contents:<br>
> +; CHECK: Dir  Mod Time   File Len   File Name<br>
> +; CHECK: file_names[  1] {{.*}}debug-macro.cpp<br>
> +; CHECK: file_names[  2] {{.*}}debug-macro.h<br>
> +; CHECK: Dir  Mod Time   File Len   File Name<br>
> +; CHECK: file_names[  1] {{.*}}debug-macro1.cpp<br>
><br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0, !16, !20}<br>
> !llvm.module.flags = !{!13, !14}<br>
> @@ -58,10 +56,14 @@<br>
> !14 = !{i32 1, !"Debug Info Version", i32 3}<br>
> !15 = !{!"clang version 3.5.0 "}<br>
><br>
> -!16 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !17, enums: !2, retainedTypes: !2, globals: !2, imports: !2, macros: !18)<br>
> +!16 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !17, enums: !2, retainedTypes: !22, globals: !2, imports: !2, macros: !18)<br>
> !17 = !DIFile(filename: "debug-macro1.cpp", directory: "/")<br>
> !18 = !{!19}<br>
> !19 = !DIMacroFile(line: 0, file: !17, nodes: !2)<br>
><br>
> -!20 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !21, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
> +!20 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file: !21, enums: !2, retainedTypes: !24, globals: !2, imports: !2)<br>
> !21 = !DIFile(filename: "debug-macro2.cpp", directory: "/")<br>
> +!22 = !{!23}<br>
> +!23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
> +!24 = !{!25}<br>
> +!25 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/X86/empty.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/empty.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/empty.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/empty.ll Fri May 26 13:52:56 2017<br>
> @@ -12,20 +12,16 @@<br>
> ; CHECK-NEXT: Offset<br>
> ; CHECK-NEXT: {{^$}}<br>
><br>
> -; CHECK: .debug_pubtypes contents:<br>
> -; CHECK-NEXT: length = 0x0000000e<br>
> -; CHECK-NEXT: Offset<br>
> -; CHECK-NEXT: {{^$}}<br>
> -<br>
> -<br>
> ; Don't emit DW_AT_addr_base when there are no addresses.<br>
> ; FISSION-NOT: DW_AT_GNU_addr_base [DW_FORM_sec_offset]<br>
><br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!5}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug, file: !4, enums: !2, retainedTypes: !2, globals: !2)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug, file: !4, enums: !2, retainedTypes: !6, globals: !2)<br>
> !2 = !{}<br>
> !3 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")<br>
> !4 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")<br>
> !5 = !{i32 1, !"Debug Info Version", i32 3}<br>
> +!6 = !{!7}<br>
> +!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/X86/fission-hash.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-hash.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-hash.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/fission-hash.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/fission-hash.ll Fri May 26 13:52:56 2017<br>
> @@ -1,16 +1,18 @@<br>
> ; RUN: llc -split-dwarf-file=foo.dwo -O0 %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t<br>
> ; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s<br>
><br>
> -; The source is an empty file.<br>
> +; The source is an empty file, modified to include/retain an 'int' type, since empty CUs are omitted.<br>
><br>
> -; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0c1e629c9e5ada4f)<br>
> -; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0c1e629c9e5ada4f)<br>
> +; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x50d985146a74bb00)<br>
> +; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x50d985146a74bb00)<br>
><br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 188230) (llvm/trunk 188234)", isOptimized: false, splitDebugFilename: "foo.dwo", emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 188230) (llvm/trunk 188234)", isOptimized: false, splitDebugFilename: "foo.dwo", emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !5, globals: !2, imports: !2)<br>
> !1 = !DIFile(filename: "foo.c", directory: "/usr/local/google/home/echristo/tmp")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 3}<br>
> !4 = !{i32 1, !"Debug Info Version", i32 3}<br>
> +!5 = !{!6}<br>
> +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll Fri May 26 13:52:56 2017<br>
> @@ -17,8 +17,10 @@<br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 191846) (llvm/trunk 191866)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 191846) (llvm/trunk 191866)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !5, globals: !2, imports: !2)<br>
> !1 = !DIFile(filename: "foo.c", directory: "/usr/local/google/home/echristo/tmp")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> !4 = !{i32 1, !"Debug Info Version", i32 3}<br>
> +!5 = !{!6}<br>
> +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/dwo.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwo.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwo.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/dwo.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/dwo.ll Fri May 26 13:52:56 2017<br>
> @@ -8,8 +8,10 @@<br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !5, globals: !2, imports: !2, dwoId: 43981)<br>
> !1 = !DIFile(filename: "<stdin>", directory: "/")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> !4 = !{i32 2, !"Debug Info Version", i32 3}<br>
> +!5 = !{!6}<br>
> +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
><br>
> Copied: llvm/trunk/test/DebugInfo/omit-empty.ll (from r304018, llvm/trunk/test/DebugInfo/dwo.ll)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/omit-empty.ll?p2=llvm/trunk/test/DebugInfo/omit-empty.ll&p1=llvm/trunk/test/DebugInfo/dwo.ll&r1=304018&r2=304020&rev=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/omit-empty.ll?p2=llvm/trunk/test/DebugInfo/omit-empty.ll&p1=llvm/trunk/test/DebugInfo/dwo.ll&r1=304018&r2=304020&rev=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/dwo.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/omit-empty.ll Fri May 26 13:52:56 2017<br>
> @@ -1,14 +1,11 @@<br>
> -; RUN: %llc_dwarf %s -filetype=obj -o %t<br>
> -; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s<br>
> -; CHECK: DW_TAG_compile_unit<br>
> -; CHECK: DW_AT_GNU_dwo_id {{.*}}abcd<br>
> -; CHECK-NOT: DW_AT_GNU_dwo_name<br>
> -; REQUIRES: default_triple<br>
> +; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-objdump -h - | FileCheck %s<br>
> +<br>
> +; CHECK-NOT: .debug_<br>
><br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
> !1 = !DIFile(filename: "<stdin>", directory: "/")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 4}<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/skeletoncu.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/skeletoncu.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/skeletoncu.ll Fri May 26 13:52:56 2017<br>
> @@ -8,9 +8,11 @@<br>
> !<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> !llvm.module.flags = !{!3, !4}<br>
><br>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !6, globals: !2, imports: !2, dwoId: 43981)<br>
> !1 = !DIFile(filename: "<stdin>", directory: "/")<br>
> !2 = !{}<br>
> !3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> !4 = !{i32 2, !"Debug Info Version", i32 3}<br>
> +!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)<br>
> +!6 = !{!5}<br>
><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>
<br>
</blockquote></div>