<div dir="ltr">Ah, thanks - hopefully r303927 addresses this. Please let me know if not.</div><br><div class="gmail_quote"><div dir="ltr">On Thu, May 25, 2017 at 2:33 PM Yung, Douglas <<a href="mailto:douglas.yung@sony.com">douglas.yung@sony.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, I don't know if you are aware, but the test empty.ll that you changed in this commit is failing on the PS4 bots:<br>
<br>
<a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/11708" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/11708</a><br>
<a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/9928" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/9928</a><br>
<br>
Can you take a look?<br>
<br>
Douglas Yung<br>
<br>
> -----Original Message-----<br>
> From: llvm-commits [mailto:<a href="mailto:llvm-commits-bounces@lists.llvm.org" target="_blank">llvm-commits-bounces@lists.llvm.org</a>] On Behalf Of<br>
> David Blaikie via llvm-commits<br>
> Sent: Thursday, May 25, 2017 11:50<br>
> To: <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> Subject: [llvm] r303894 - DebugInfo: Produce debug_{gnu_}pub{names, types}<br>
> entries when explicitly requested, even in -gmlt or when empty<br>
><br>
> Author: dblaikie<br>
> Date: Thu May 25 13:50:28 2017<br>
> New Revision: 303894<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=303894&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=303894&view=rev</a><br>
> Log:<br>
> DebugInfo: Produce debug_{gnu_}pub{names,types} entries when explicitly<br>
> requested, even in -gmlt or when empty<br>
><br>
> Turns out gold doesn't use the DW_AT_GNU_pubnames to decide whether to parse<br>
> the rest of the DIEs when building gdb-index. This causes gold to trip over<br>
> LLVM's output when there are DW_FORM_ref_addr present.<br>
><br>
> Gold does use the presence of a debug_gnu_pub{names,types} entry for the CU to<br>
> skip parsing the debug_info portion, so make sure that's included even when<br>
> empty (technically, when empty there couldn't be any ref_addr anyway - it only<br>
> came up when gmlt didn't produce any (even non-empty) pubnames - but given<br>
> what that reveals about gold's implementation, this seems like a good thing to<br>
> do for consistency).<br>
><br>
> Added:<br>
>     llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll<br>
> Modified:<br>
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp<br>
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.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/X86/empty.ll<br>
>     llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=303894&r1=3<br>
> 03893&r2=303894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Thu May 25<br>
> +++ 13:50:28 2017<br>
> @@ -760,7 +760,7 @@ void DwarfCompileUnit::emitHeader(bool U  ///<br>
> addGlobalName - Add a new global name to the compile unit.<br>
>  void DwarfCompileUnit::addGlobalName(StringRef Name, const DIE &Die,<br>
>                                       const DIScope *Context) {<br>
> -  if (includeMinimalInlineScopes())<br>
> +  if (!DD->hasDwarfPubSections(includeMinimalInlineScopes()))<br>
>      return;<br>
>    std::string FullName = getParentContextString(Context) + Name.str();<br>
>    GlobalNames[FullName] = &Die;<br>
> @@ -768,7 +768,7 @@ void DwarfCompileUnit::addGlobalName(Str<br>
><br>
>  void DwarfCompileUnit::addGlobalNameForTypeUnit(StringRef Name,<br>
>                                                  const DIScope *Context) {<br>
> -  if (includeMinimalInlineScopes())<br>
> +  if (!DD->hasDwarfPubSections(includeMinimalInlineScopes()))<br>
>      return;<br>
>    std::string FullName = getParentContextString(Context) + Name.str();<br>
>    // Insert, allowing the entry to remain as-is if it's already present @@ -<br>
> 781,7 +781,7 @@ void DwarfCompileUnit::addGlobalNameForT<br>
>  /// Add a new global type to the unit.<br>
>  void DwarfCompileUnit::addGlobalType(const DIType *Ty, const DIE &Die,<br>
>                                       const DIScope *Context) {<br>
> -  if (includeMinimalInlineScopes())<br>
> +  if (!DD->hasDwarfPubSections(includeMinimalInlineScopes()))<br>
>      return;<br>
>    std::string FullName = getParentContextString(Context) + Ty-<br>
> >getName().str();<br>
>    GlobalTypes[FullName] = &Die;<br>
> @@ -789,7 +789,7 @@ void DwarfCompileUnit::addGlobalType(con<br>
><br>
>  void DwarfCompileUnit::addGlobalTypeUnitType(const DIType *Ty,<br>
>                                               const DIScope *Context) {<br>
> -  if (includeMinimalInlineScopes())<br>
> +  if (!DD->hasDwarfPubSections(includeMinimalInlineScopes()))<br>
>      return;<br>
>    std::string FullName = getParentContextString(Context) + Ty-<br>
> >getName().str();<br>
>    // Insert, allowing the entry to remain as-is if it's already present<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h?rev=303894&r1=303<br>
> 893&r2=303894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h Thu May 25<br>
> +++ 13:50:28 2017<br>
> @@ -77,8 +77,6 @@ class DwarfCompileUnit final : public Dw<br>
><br>
>    bool isDwoUnit() const override;<br>
><br>
> -  bool includeMinimalInlineScopes() const;<br>
> -<br>
>    DenseMap<const MDNode *, DIE *> &getAbstractSPDies() {<br>
>      if (isDwoUnit() && !DD->shareAcrossDWOCUs())<br>
>        return AbstractSPDies;<br>
> @@ -101,6 +99,8 @@ public:<br>
>      return Skeleton;<br>
>    }<br>
><br>
> +  bool includeMinimalInlineScopes() const;<br>
> +<br>
>    void initStmtList();<br>
><br>
>    /// Apply the DW_AT_stmt_list from this compile unit to the specified DIE.<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=303894&r1=303893&<br>
> r2=303894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Thu May 25 13:50:28<br>
> +++ 2017<br>
> @@ -252,12 +252,6 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Mo<br>
>    // Handle split DWARF.<br>
>    HasSplitDwarf = !Asm->TM.Options.MCOptions.SplitDwarfFile.empty();<br>
><br>
> -  // Pubnames/pubtypes on by default for GDB.<br>
> -  if (DwarfPubSections == Default)<br>
> -    HasDwarfPubSections = tuneForGDB();<br>
> -  else<br>
> -    HasDwarfPubSections = DwarfPubSections == Enable;<br>
> -<br>
>    // SCE defaults to linkage names only for abstract subprograms.<br>
>    if (DwarfLinkageNames == DefaultLinkageNames)<br>
>      UseAllLinkageNames = !tuneForSCE(); @@ -391,8 +385,20 @@ void<br>
> DwarfDebug::constructAbstractSubpro<br>
>    }<br>
>  }<br>
><br>
> -void DwarfDebug::addGnuPubAttributes(DwarfUnit &U, DIE &D) const {<br>
> -  if (!GenerateGnuPubSections)<br>
> +bool DwarfDebug::hasDwarfPubSections(bool includeMinimalInlineScopes)<br>
> +const {<br>
> +  // Opting in to GNU Pubnames/types overrides the default to ensure<br>
> +these are<br>
> +  // generated for things like Gold's gdb_index generation.<br>
> +  if (GenerateGnuPubSections)<br>
> +    return true;<br>
> +<br>
> +  if (DwarfPubSections == Default)<br>
> +    return tuneForGDB() && !includeMinimalInlineScopes;<br>
> +<br>
> +  return DwarfPubSections == Enable;<br>
> +}<br>
> +<br>
> +void DwarfDebug::addGnuPubAttributes(DwarfCompileUnit &U, DIE &D) const<br>
> +{<br>
> +  if (!hasDwarfPubSections(U.includeMinimalInlineScopes()))<br>
>      return;<br>
><br>
>    U.addFlag(D, dwarf::DW_AT_GNU_pubnames); @@ -718,7 +724,9 @@ void<br>
> DwarfDebug::endModule() {<br>
>    }<br>
><br>
>    // Emit the pubnames and pubtypes sections if requested.<br>
> -  if (HasDwarfPubSections) {<br>
> +  // The condition is optimistically correct - any CU not using GMLT (&<br>
> + // implicit/default pubnames state) might still have pubnames.<br>
> +  if (hasDwarfPubSections(/* gmlt */ false)) {<br>
>      emitDebugPubNames(GenerateGnuPubSections);<br>
>      emitDebugPubTypes(GenerateGnuPubSections);<br>
>    }<br>
> @@ -1395,7 +1403,7 @@ void DwarfDebug::emitDebugPubSection(<br>
><br>
>      const auto &Globals = (TheU->*Accessor)();<br>
><br>
> -    if (Globals.empty())<br>
> +    if (!hasDwarfPubSections(TheU->includeMinimalInlineScopes()))<br>
>        continue;<br>
><br>
>      if (auto *Skeleton = TheU->getSkeleton())<br>
><br>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=303894&r1=303893&r2<br>
> =303894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)<br>
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Thu May 25 13:50:28<br>
> +++ 2017<br>
> @@ -246,9 +246,6 @@ class DwarfDebug : public DebugHandlerBa<br>
>        std::pair<std::unique_ptr<DwarfTypeUnit>, const DICompositeType *>, 1><br>
>        TypeUnitsUnderConstruction;<br>
><br>
> -  /// Whether to emit the pubnames/pubtypes sections.<br>
> -  bool HasDwarfPubSections;<br>
> -<br>
>    /// Whether to use the GNU TLS opcode (instead of the standard opcode).<br>
>    bool UseGNUTLSOpcode;<br>
><br>
> @@ -415,7 +412,7 @@ class DwarfDebug : public DebugHandlerBa<br>
><br>
>    /// Flags to let the linker know we have emitted new style pubnames. Only<br>
>    /// emit it here if we don't have a skeleton CU for split dwarf.<br>
> -  void addGnuPubAttributes(DwarfUnit &U, DIE &D) const;<br>
> +  void addGnuPubAttributes(DwarfCompileUnit &U, DIE &D) const;<br>
><br>
>    /// Create new DwarfCompileUnit for the given metadata node with tag<br>
>    /// DW_TAG_compile_unit.<br>
> @@ -556,6 +553,8 @@ public:<br>
>    /// A helper function to check whether the DIE for a given Scope is<br>
>    /// going to be null.<br>
>    bool isLexicalScopeDIENull(LexicalScope *Scope);<br>
> +<br>
> +  bool hasDwarfPubSections(bool includeMinimalInlineScopes) const;<br>
>  };<br>
>  } // End of namespace llvm<br>
><br>
><br>
> Modified: llvm/trunk/test/DebugInfo/Generic/empty.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/test/DebugInfo/Generic/empty.ll?rev=303894&r1=303893&r2=303<br>
> 894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/Generic/empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/Generic/empty.ll Thu May 25 13:50:28 2017<br>
> @@ -13,10 +13,14 @@<br>
>  ; CHECK-NOT: file_names[<br>
><br>
>  ; CHECK: .debug_pubnames contents:<br>
> -; CHECK-NOT: Offset<br>
> +; CHECK-NEXT: length = 0x0000000e<br>
> +; CHECK-NEXT: Offset<br>
> +; CHECK-NEXT: {{^$}}<br>
><br>
>  ; CHECK: .debug_pubtypes contents:<br>
> -; CHECK-NOT: Offset<br>
> +; CHECK-NEXT: length = 0x0000000e<br>
> +; CHECK-NEXT: Offset<br>
> +; CHECK-NEXT: {{^$}}<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>
> Modified: llvm/trunk/test/DebugInfo/X86/empty.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/llvm/trunk/test/DebugInfo/X86/empty.ll?rev=303894&r1=303893&r2=303894&<br>
> view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/empty.ll Thu May 25 13:50:28 2017<br>
> @@ -8,10 +8,15 @@<br>
>  ; CHECK-NOT: file_names[<br>
><br>
>  ; CHECK: .debug_pubnames contents:<br>
> -; CHECK-NOT: Offset<br>
> +; CHECK-NEXT: length = 0x0000000e<br>
> +; CHECK-NEXT: Offset<br>
> +; CHECK-NEXT: {{^$}}<br>
><br>
>  ; CHECK: .debug_pubtypes contents:<br>
> -; CHECK-NOT: Offset<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>
> 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-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-</a><br>
> public-names-empty.ll?rev=303894&r1=303893&r2=303894&view=diff<br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll Thu May 25<br>
> +++ 13:50:28 2017<br>
> @@ -9,6 +9,11 @@<br>
>  ; CHECK: DW_AT_GNU_pubnames [DW_FORM_flag_present]   (true)<br>
>  ; CHECK-NOT: DW_AT_GNU_pubtypes [<br>
><br>
> +; CHECK: .debug_gnu_pubnames contents:<br>
> +; CHECK-NEXT: length = 0x0000000e<br>
> +; CHECK-NEXT: Offset<br>
> +; CHECK-NEXT: {{^$}}<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>
><br>
> Added: llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-</a><br>
> public-names-gmlt.ll?rev=303894&view=auto<br>
> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll (added)<br>
> +++ llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll Thu May 25<br>
> +++ 13:50:28 2017<br>
> @@ -0,0 +1,68 @@<br>
> +; RUN: llc -mtriple=x86_64-pc-linux-gnu -filetype=obj < %s<br>
> +-generate-gnu-dwarf-pub-sections | llvm-dwarfdump - | FileCheck<br>
> +--check-prefix=GPUB --check-prefix=CHECK %s ; RUN: llc<br>
> +-mtriple=x86_64-pc-linux-gnu -filetype=obj < %s<br>
> +-generate-dwarf-pub-sections=Enable | llvm-dwarfdump - | FileCheck<br>
> +--check-prefix=PUB --check-prefix=CHECK %s ; RUN: llc<br>
> +-mtriple=x86_64-pc-linux-gnu -filetype=obj < %s | llvm-dwarfdump - |<br>
> +FileCheck --check-prefix=NONE %s<br>
> +<br>
> +; Generated from:<br>
> +;   void f1();<br>
> +;   inline __attribute__((always_inline)) void f2() {<br>
> +;     f1();<br>
> +;   }<br>
> +;   void f3() {<br>
> +;     f2();<br>
> +;   }<br>
> +;   $ clang++ -gmlt %s -emit-llvm -S<br>
> +<br>
> +; GPUB: Compile Unit<br>
> +; GPUB: DW_AT_GNU_pubnames<br>
> +<br>
> +; GPUB: .debug_gnu_pubnames contents:<br>
> +; PUB: .debug_pubnames contents:<br>
> +; CHECK-NEXT: unit_offset = 0x00000000<br>
> +; CHECK-NEXT: Name<br>
> +; CHECK-NEXT: "f2"<br>
> +; CHECK-NEXT: "f3"<br>
> +<br>
> +; GPUB: .debug_gnu_pubtypes contents:<br>
> +; PUB: .debug_pubtypes contents:<br>
> +; CHECK-NEXT: length = 0x0000000e version = 0x0002 unit_offset =<br>
> +0x00000000 ; CHECK-NEXT: Name<br>
> +<br>
> +; NONE: .debug_pubnames contents:<br>
> +; NONE: {{^$}}<br>
> +; NONE: .debug_pubtypes contents:<br>
> +; NONE: {{^$}}<br>
> +; NONE: .debug_gnu_pubnames contents:<br>
> +; NONE: {{^$}}<br>
> +; NONE: .debug_gnu_pubtypes contents:<br>
> +; NONE: {{^$}}<br>
> +<br>
> +<br>
> +; Function Attrs: noinline uwtable<br>
> +define void @_Z2f3v() #0 !dbg !7 {<br>
> +entry:<br>
> +  call void @_Z2f1v(), !dbg !9<br>
> +  ret void, !dbg !12<br>
> +}<br>
> +<br>
> +declare void @_Z2f1v() #1<br>
> +<br>
> +attributes #0 = { noinline uwtable<br>
> +"correctly-rounded-divide-sqrt-fp-math"="false"<br>
> +"disable-tail-calls"="false" "less-precise-fpmad"="false"<br>
> +"no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"<br>
> +"no-infs-fp-math"="false" "no-jump-tables"="false"<br>
> +"no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false"<br>
> +"no-trapping-math"="false" "stack-protector-buffer-size"="8"<br>
> +"target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87"<br>
> +"unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = {<br>
> +"correctly-rounded-divide-sqrt-fp-math"="false"<br>
> +"disable-tail-calls"="false" "less-precise-fpmad"="false"<br>
> +"no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"<br>
> +"no-infs-fp-math"="false" "no-nans-fp-math"="false"<br>
> +"no-signed-zeros-fp-math"="false" "no-trapping-math"="false"<br>
> +"stack-protector-buffer-size"="8" "target-cpu"="x86-64"<br>
> +"target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false"<br>
> +"use-soft-float"="false" }<br>
> +<br>
> +!<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
> +!llvm.module.flags = !{!3, !4, !5}<br>
> +!llvm.ident = !{!6}<br>
> +<br>
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1,<br>
> +producer: "clang version 5.0.0 (trunk 303768) (llvm/trunk 303774)",<br>
> +isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly,<br>
> +enums: !2)<br>
> +!1 = !DIFile(filename: "gnu-public-names-gmlt.cpp", directory:<br>
> +"/usr/local/google/home/blaikie/dev/scratch")<br>
> +!2 = !{}<br>
> +!3 = !{i32 2, !"Dwarf Version", i32 4}<br>
> +!4 = !{i32 2, !"Debug Info Version", i32 3}<br>
> +!5 = !{i32 1, !"wchar_size", i32 4}<br>
> +!6 = !{!"clang version 5.0.0 (trunk 303768) (llvm/trunk 303774)"}<br>
> +!7 = distinct !DISubprogram(name: "f3", scope: !1, file: !1, line: 5,<br>
> +type: !8, isLocal: false, isDefinition: true, scopeLine: 5, flags:<br>
> +DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)<br>
> +!8 = !DISubroutineType(types: !2)<br>
> +!9 = !DILocation(line: 3, column: 3, scope: !10, inlinedAt: !11)<br>
> +!10 = distinct !DISubprogram(name: "f2", scope: !1, file: !1, line: 2,<br>
> +type: !8, isLocal: false, isDefinition: true, scopeLine: 2, flags:<br>
> +DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)<br>
> +!11 = distinct !DILocation(line: 6, column: 3, scope: !7)<br>
> +!12 = !DILocation(line: 7, column: 1, scope: !7)<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>