<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in subprogram-linkonce-weak.ll</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>75819aed - [PR27284] Reverse the ownership between DICompileUnit and DISubprogram.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#75819aed</link>
        <description>[PR27284] Reverse the ownership between DICompileUnit and DISubprogram.Currently each Function points to a DISubprogram and DISubprogram has ascope field. For member functions the scope is a DICompositeType. DIScopespoint to the DICompileUnit to facilitate type uniquing.Distinct DISubprograms (with isDefinition: true) are not part of the typehierarchy and cannot be uniqued. This change removes the subprogramslist from DICompileUnit and instead adds a pointer to the owning compileunit to distinct DISubprograms. This would make it easy for ThinLTO tostrip unneeded DISubprograms and their transitively referenced debug info.Motivation----------Materializing DISubprograms is currently the most expensive operation whendoing a ThinLTO build of clang.We want the DISubprogram to be stored in a separate Bitcode block (or thesame block as the function body) so we can avoid having to expensivelydeserialize all DISubprograms together with the global metadata. If afunction has been inlined into another subprogram we need to store areference the block containing the inlined subprogram.Attached to https://llvm.org/bugs/show_bug.cgi?id=27284 is a python scriptthat updates LLVM IR testcases to the new format.http://reviews.llvm.org/D19034&lt;rdar://problem/25256815&gt;llvm-svn: 266446

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Fri, 15 Apr 2016 15:57:41 +0000</pubDate>
        <dc:creator>Adrian Prantl &lt;aprantl@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>b8089516 - testcase gardening: update the emissionKind enum to the new syntax. (NFC)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#b8089516</link>
        <description>testcase gardening: update the emissionKind enum to the new syntax. (NFC)llvm-svn: 265081

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Fri, 01 Apr 2016 00:16:49 +0000</pubDate>
        <dc:creator>Adrian Prantl &lt;aprantl@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>d4bff303 - DI: Reverse direction of subprogram -&gt; function edge.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#d4bff303</link>
        <description>DI: Reverse direction of subprogram -&gt; function edge.Previously, subprograms contained a metadata reference to the function theydescribed. Because most clients need to get or set a subprogram for a givenfunction rather than the other way around, this created unneeded inefficiency.For example, many passes needed to call the function llvm::makeSubprogramMap()to build a mapping from functions to subprograms, and the IR linker needed tofix up function references in a way that caused quadratic complexity in the IRlinking phase of LTO.This change reverses the direction of the edge by storing the subprogram asfunction-level metadata and removing DISubprogram&apos;s function field.Since this is an IR change, a bitcode upgrade has been provided.Fixes PR23367. An upgrade script for textual IR for out-of-tree clients isattached to the PR.Differential Revision: http://reviews.llvm.org/D14265llvm-svn: 252219

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Thu, 05 Nov 2015 22:03:56 +0000</pubDate>
        <dc:creator>Peter Collingbourne &lt;peter@pcc.me.uk&gt;</dc:creator>
    </item>
<item>
        <title>814b8e91 - DI: Require subprogram definitions to be distinct</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#814b8e91</link>
        <description>DI: Require subprogram definitions to be distinctAs a follow-up to r246098, require `DISubprogram` definitions(`isDefinition: true`) to be &apos;distinct&apos;.  Specifically, add an assemblercheck, a verifier check, and bitcode upgrading logic to combat testcasebitrot after the `DIBuilder` change.While working on the testcases, I realized thattest/Linker/subprogram-linkonce-weak-odr.ll isn&apos;t relevant anymore.  Itspurpose was to check for a corner case in PR22792 where two subprogramdefinitions match exactly and share the same metadata node.  The newverifier check, requiring that subprogram definitions are &apos;distinct&apos;,precludes that possibility.I updated almost all the IR with the following script:    git grep -l -E -e &apos;= !DISubprogram\(.* isDefinition: true&apos; |    grep -v test/Bitcode |    xargs sed -i &apos;&apos; -e &apos;s/= \(!DISubprogram(.*, isDefinition: true\)/= distinct \1/&apos;Likely some variant of would work for out-of-tree testcases.llvm-svn: 246327

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Fri, 28 Aug 2015 20:26:49 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>55ca964e - DI: Disallow uniquable DICompileUnits</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#55ca964e</link>
        <description>DI: Disallow uniquable DICompileUnitsSince r241097, `DIBuilder` has only created distinct `DICompileUnit`s.The backend is liable to start relying on that (if it hasn&apos;t already),so make uniquable `DICompileUnit`s illegal and automatically upgrade oldbitcode.  This is a nice cleanup, since we can remove an unnecessary`DenseSet` (and the associated uniquing info) from `LLVMContextImpl`.Almost all the testcases were updated with this script:    git grep -e &apos;= !DICompileUnit&apos; -l -- test |    grep -v test/Bitcode |    xargs sed -i &apos;&apos; -e &apos;s,= !DICompileUnit,= distinct !DICompileUnit,&apos;I imagine something similar should work for out-of-tree testcases.llvm-svn: 243885

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Mon, 03 Aug 2015 17:26:41 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>a9308c49 - IR: Give &apos;DI&apos; prefix to debug info metadata</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#a9308c49</link>
        <description>IR: Give &apos;DI&apos; prefix to debug info metadataFinish off PR23080 by renaming the debug info IR constructs from `MD*`to `DI*`.  The last of the `DIDescriptor` classes were deleted inr235356, and the last of the related typedefs removed in r235413, sothis has all baked for about a week.Note: If you have out-of-tree code (like a frontend), I recommend thatyou get everything compiling and tests passing with the *previous*commit before updating to this one.  It&apos;ll be easier to keep track ofwhat code is using the `DIDescriptor` hierarchy and what you&apos;ve alreadyupdated, and I think you&apos;re extremely unlikely to insert bugs.  YMMV ofcourse.Back to *this* commit: I did this using the rename-md-di-nodes.shupgrade script I&apos;ve attached to PR23080 (both code and testcases) andfiltered through clang-format-diff.py.  I edited the tests fortest/Assembler/invalid-generic-debug-node-*.ll by hand since the columnswere off-by-three.  It should work on your out-of-tree testcases (andcode, if you&apos;ve followed the advice in the previous paragraph).Some of the tests are in badly named files now (e.g.,test/Assembler/invalid-mdcompositetype-missing-tag.ll should be&apos;dicompositetype&apos;); I&apos;ll come back and move the files in a follow-upcommit.llvm-svn: 236120

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Wed, 29 Apr 2015 16:38:44 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>c947892d - Reapply &quot;Linker: Drop function pointers for overridden subprograms&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#c947892d</link>
        <description>Reapply &quot;Linker: Drop function pointers for overridden subprograms&quot;This reverts commit r233254, effectively reapplying r233164 (and itssuccessors), with an additional testcase for when subprograms matchexactly.  This fixes PR22792 (again).I&apos;m using the same approach, but I&apos;ve moved up the call to`stripReplacedSubprograms()`.  The function pointers need to be droppedbefore mapping any metadata from the source module, or else this candrop the function from new subprograms that have merged (via Metadatauniquing) with the old ones.  Dropping the pointers first prevents themfrom merging.**** The original commit message follows. ****Linker: Drop function pointers for overridden subprogramsInstead of dropping subprograms that have been overridden, just settheir function pointers to `nullptr`.  This is a minor adjustment to thestop-gap fix for PR21910 committed in r224487, and fixes the crasherfrom PR22792.The problem that r224487 put a band-aid on: how do we find the canonicalsubprogram for a `Function`?  Since the backend currently relies on`DebugInfoFinder` (which does a naive in-order traversal of compileunits and picks the first subprogram) for this, r224487 tried droppingnon-canonical subprograms.Dropping subprograms fails because the backend *also* builds up a mapfrom subprogram to compile unit (`DwarfDebug::SPMap`) based on thesubprogram lists.  A missing subprogram causes segfaults later when aninlined reference (such as in this testcase) is created.Instead, just drop the `Function` pointer to `nullptr`, which nicelymirrors what happens when an already-inlined `Function` is optimizedout.  We can&apos;t really be sure that it&apos;s the same definition anyway, asthe testcase demonstrates.This still isn&apos;t completely satisfactory.  Two flaws at least that I canthink of:  - I still haven&apos;t found a straightforward way to make this symmetric    in the IR.  (Interestingly, the DWARF output is already symmetric,    and I&apos;ve tested for that to be sure we don&apos;t regress.)  - Using `DebugInfoFinder` to find the canonical subprogram for a    function is kind of crazy.  We should just attach metadata to the    function, like this:        define weak i32 @foo(i32, i32) !dbg !MDSubprogram(...) {llvm-svn: 233302

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Thu, 26 Mar 2015 18:35:30 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>bb2958a0 - Linker: Stop using -gmlt test/Linker/subprogram-linkonce-weak.ll</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#bb2958a0</link>
        <description>Linker: Stop using -gmlt test/Linker/subprogram-linkonce-weak.llAs dblaikie pointed out, if I stop setting `emissionKind: 2` then thebackend won&apos;t do magical things on Linux vs. Darwin.  I had wronglyassumed that there were stricter requirements on the input if we weren&apos;tin line-tables-only mode, but apparently not.With that knowledge, clean up this testcase a little more.  - Set `emissionKind: 1`.  - Add back checks for the weak version of @foo.  - Check more robustly that we have the right subprograms by checking    the `DW_AT_decl_file` and `DW_AT_decl_line` which now show up.  - Check the line table in isolation (since it&apos;s no longer doubling as    an indirect test for the subprogram of the weak version of @foo).llvm-svn: 233221

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Wed, 25 Mar 2015 21:36:41 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>f9dc7036 - Linker: Rewrite dwarfdump checks from r233164</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#f9dc7036</link>
        <description>Linker: Rewrite dwarfdump checks from r233164Rewrite the checks from r233164 that I temporarily disabled in r233165.It turns out that the line-tables only debug info we emit from `llc` is(intentionally) different on Linux than on Darwin.  r218129 startedskipping emission of subprograms with no inlined subroutines, andr218702 was a spiritual revert of that behaviour for Darwin.I think we can still test this in a platform-neutral way.  - Stop checking for the possibly missing `DW_TAG_subprogram` defining    the debug info for the real version of `@foo`.  - Start checking the line tables, ensuring that the right debug info    was used to generate them (grabbing `DW_AT_low_pc` from the compile    unit).  - I changed up the line numbers used in the &quot;weak&quot; version so it&apos;s    easier to follow.This should hopefully finish off PR22792.llvm-svn: 233207

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Wed, 25 Mar 2015 19:57:42 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>004ced3b - Linker: Drop function pointers for overridden subprograms</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll#004ced3b</link>
        <description>Linker: Drop function pointers for overridden subprogramsInstead of dropping subprograms that have been overridden, just settheir function pointers to `nullptr`.  This is a minor adjustment to thestop-gap fix for PR21910 committed in r224487, and fixes the crasherfrom PR22792.The problem that r224487 put a band-aid on: how do we find the canonicalsubprogram for a `Function`?  Since the backend currently relies on`DebugInfoFinder` (which does a naive in-order traversal of compileunits and picks the first subprogram) for this, r224487 tried droppingnon-canonical subprograms.Dropping subprograms fails because the backend *also* builds up a mapfrom subprogram to compile unit (`DwarfDebug::SPMap`) based on thesubprogram lists.  A missing subprogram causes segfaults later when aninlined reference (such as in this testcase) is created.Instead, just drop the `Function` pointer to `nullptr`, which nicelymirrors what happens when an already-inlined `Function` is optimizedout.  We can&apos;t really be sure that it&apos;s the same definition anyway, asthe testcase demonstrates.This still isn&apos;t completely satisfactory.  Two flaws at least that I canthink of:  - I still haven&apos;t found a straightforward way to make this symmetric    in the IR.  (Interestingly, the DWARF output is already symmetric,    and I&apos;ve tested for that to be sure we don&apos;t regress.)  - Using `DebugInfoFinder` to find the canonical subprogram for a    function is kind of crazy.  We should just attach metadata to the    function, like this:        define weak i32 @foo(i32, i32) !dbg !MDSubprogram(...) {llvm-svn: 233164

            List of files:
            /llvm-project-15.0.7/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll</description>
        <pubDate>Wed, 25 Mar 2015 02:26:32 +0000</pubDate>
        <dc:creator>Duncan P. N. Exon Smith &lt;dexonsmith@apple.com&gt;</dc:creator>
    </item>
</channel>
</rss>
