<?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 devirt_pure_virtual_base.ll</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>0a5949dc - [WPD] Fix handling of pure virtual base class</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/ThinLTO/X86/devirt_pure_virtual_base.ll#0a5949dc</link>
        <description>[WPD] Fix handling of pure virtual base classThe fix in 3c4c205060c9398da705eb71b63ddd8a04999de9 caused an assert inthe case of a pure virtual base class. In that case, the vTableFuncslist on the summary will be empty, so we were hitting the new assertthat the linkage type was not available_externally.In the case of pure virtual, we do not want to assert, and additionallyneed to set VS so that we don&apos;t treat it conservatively and quit theanalysis of the type id early.This exposed a pre-existing issue where we were not updating the vcallvisibility on pure virtual functions when whole program visibility wasspecified. We were skipping updating the visibility on any global varsthat didn&apos;t have any vTableFuncs, which meant all pure virtual were notupdated, and the later analysis would block any devirtualization ofcalls that had a type id used on those pure virtual vtables (see thehandling in the other code modified in this patch). Simply remove thatcheck. It will mean that we may update the vcall visibility on globalvars that aren&apos;t vtables, but that setting is ignored for any globalvars that didn&apos;t have type metadata anyway.Added a new test case that asserted without removing the assert, andthat requires the other fixes in this patch (updateVCallVisibilityInIndexand not skipping all vtables without virtual funcs) to get a successfuldevirtualization with index-only WPD. I added cases to test hybrid andregular LTO for completeness, although those already worked without thefixes here.With this final fix, a clang multistage bootstrap with WPD builds andruns all tests successfully.Differential Revision: https://reviews.llvm.org/D97126

            List of files:
            /llvm-project-15.0.7/llvm/test/ThinLTO/X86/devirt_pure_virtual_base.ll</description>
        <pubDate>Sat, 20 Feb 2021 22:09:10 +0000</pubDate>
        <dc:creator>Teresa Johnson &lt;tejohnson@google.com&gt;</dc:creator>
    </item>
</channel>
</rss>
