<?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 warn-weak-vtables.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>807e2f12 - Revert &quot;Remove -Wweak-template-vtables&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#807e2f12</link>
        <description>Revert &quot;Remove -Wweak-template-vtables&quot;Turns out there&apos;s still some code referencing this. No harm in keeping it in abit longer.&gt; as it was planned for removal in clang 15 and we&apos;re now past the branch point&gt;&gt; See https://github.com/llvm/llvm-project/issues/19107&gt;&gt; Differential revision: https://reviews.llvm.org/D118762This reverts commit 564f9be11c9cb8d131f48df07538fab7a19b41a7.

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Mon, 07 Feb 2022 15:47:14 +0000</pubDate>
        <dc:creator>Hans Wennborg &lt;hans@chromium.org&gt;</dc:creator>
    </item>
<item>
        <title>564f9be1 - Remove -Wweak-template-vtables</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#564f9be1</link>
        <description>Remove -Wweak-template-vtablesas it was planned for removal in clang 15 and we&apos;re now past the branch pointSee https://github.com/llvm/llvm-project/issues/19107Differential revision: https://reviews.llvm.org/D118762

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Wed, 02 Feb 2022 09:57:39 +0000</pubDate>
        <dc:creator>Hans Wennborg &lt;hans@chromium.org&gt;</dc:creator>
    </item>
<item>
        <title>4d2765e9 - Re-instate -Wweak-template-vtables as a no-op flag</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#4d2765e9</link>
        <description>Re-instate -Wweak-template-vtables as a no-op flagFollow-up to 8c136805242014b6ad9ff1afcac9d7f4a18bec3f to allow a lessabrupt migration for users.Differential revision: https://reviews.llvm.org/D112704

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Thu, 28 Oct 2021 11:37:27 +0000</pubDate>
        <dc:creator>Hans Wennborg &lt;hans@chromium.org&gt;</dc:creator>
    </item>
<item>
        <title>8c136805 - PR18733: Remove -Wweak-template-vtables</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#8c136805</link>
        <description>PR18733: Remove -Wweak-template-vtablesIt isn&apos;t really pulling its weight and I think splitting it out from-Wweak-vtables was the wrong call: I think it was just a bug in theoriginal warning, which was trying to not diagnose templateinstantiations, implicit or explicit.

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Sun, 25 Jul 2021 18:47:01 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b792e069 - Disable -Wweak-vtables when there are no key functions</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#b792e069</link>
        <description>Disable -Wweak-vtables when there are no key functionsOur -Wweak-vtables diagnostic is powered by our key functioncalculation, which checks if key functions are enabled. We won&apos;t findany key functions in C++ ABIs that lack key functions, so -Wweak-vtableswas warning on every dynamic class before this change. So, turn off thiswarning in ABIs without key functions.Addresses PR31220llvm-svn: 288850

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Tue, 06 Dec 2016 21:44:41 +0000</pubDate>
        <dc:creator>Reid Kleckner &lt;rnk@google.com&gt;</dc:creator>
    </item>
<item>
        <title>b3a9978d - Don&apos;t let virtual calls and dynamic casts call Sema::MarkVTableUsed().</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#b3a9978d</link>
        <description>Don&apos;t let virtual calls and dynamic casts call Sema::MarkVTableUsed().clang currently calls MarkVTableUsed() for classes that get their virtualmethods called or that participate in a dynamic_cast. This is unnecessary,since CodeGen only emits vtables when it generates constructor, destructor, andvtt code. (*)Note that Sema::MarkVTableUsed() doesn&apos;t cause the emission of a vtable.Its main user-visible effect is that it instantiates virtual member functionsof template classes, to make sure that if codegen decides to write a vtableall the entries in the vtable are defined.While this shouldn&apos;t change the behavior of codegen (other than being faster),it does make clang more permissive: virtual methods of templates (in particulardestructors) end up being instantiated less often. In particular, classes thathave members that are smart pointers to incomplete types will now get theirimplicit virtual destructor instantiated less frequently. For example, thisused to not compile but does now compile:    template &lt;typename T&gt; struct OwnPtr {      ~OwnPtr() { static_assert((sizeof(T) &gt; 0), &quot;TypeMustBeComplete&quot;); }    };    class ScriptLoader;    struct Base { virtual ~Base(); };    struct Sub : public Base {      virtual void someFun() const {}      OwnPtr&lt;ScriptLoader&gt; m_loader;    };    void f(Sub *s) { s-&gt;someFun(); }The more permissive behavior matches both gcc (where this is not oftenobservable, since in practice most things with virtual methods have a keyfunction, and Sema::DefineUsedVTables() skips vtables for classes with keyfunctions) and cl (which is my motivation for this change) &#8211; this fixesPR20337.  See this issue and the review thread for some discussions aboutoptimizations.This is similar to r213109 in spirit. r225761 was a prerequisite for thischange.Various tests relied on &quot;a-&gt;f()&quot; marking a&apos;s vtable as used (in the semasense), switch these to just construct a on the stack. This forcesinstantiation of the implicit constructor, which will mark the vtable as used.(*) The exception is -fapple-kext mode: In this mode, qualified calls tovirtual functions (`a-&gt;Base::f()`) still go through the vtable, and since thevtable pointer off this doesn&apos;t point to Base&apos;s vtable, this needs to referenceBase&apos;s vtable directly. To keep this working, keep referencing the vtable forvirtual calls in apple kext mode.llvm-svn: 227073

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Mon, 26 Jan 2015 06:23:36 +0000</pubDate>
        <dc:creator>Nico Weber &lt;nicolasweber@gmx.de&gt;</dc:creator>
    </item>
<item>
        <title>c9bd88e6 - Remove the -cxx-abi command-line flag.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#c9bd88e6</link>
        <description>Remove the -cxx-abi command-line flag.This makes the C++ ABI depend entirely on the target: MS ABI for -win32 triples,Itanium otherwise. It&apos;s no longer possible to do weird combinations.To be able to run a test with a specific ABI without constraining it to aspecific triple, new substitutions are added to lit: %itanium_abi_triple and%ms_abi_triple can be used to get the current target triple adjusted to thedesired ABI. For example, if the test suite is running with the i686-pc-win32target, %itanium_abi_triple will expand to i686-pc-mingw32.Differential Revision: http://llvm-reviews.chandlerc.com/D2545llvm-svn: 199250

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Tue, 14 Jan 2014 19:35:09 +0000</pubDate>
        <dc:creator>Hans Wennborg &lt;hans@hanshq.net&gt;</dc:creator>
    </item>
<item>
        <title>9125b08b - Update tests in preparation for using the MS ABI for Win32 targets</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#9125b08b</link>
        <description>Update tests in preparation for using the MS ABI for Win32 targetsIn preparation for making the Win32 triple imply MS ABI mode,make all tests pass in this mode, or make them use the Itaniummode explicitly.Differential Revision: http://llvm-reviews.chandlerc.com/D2401llvm-svn: 199130

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Mon, 13 Jan 2014 19:48:13 +0000</pubDate>
        <dc:creator>Hans Wennborg &lt;hans@hanshq.net&gt;</dc:creator>
    </item>
<item>
        <title>72b61203 - Provide a separate warning for weak vtables in explicit template instantiations. There&apos;s no (current) way to fix such templates to emit strong symbols/vtables, but perhaps users want to know about the cost being incurred anyway.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#72b61203</link>
        <description>Provide a separate warning for weak vtables in explicit template instantiations. There&apos;s no (current) way to fix such templates to emit strong symbols/vtables, but perhaps users want to know about the cost being incurred anyway.llvm-svn: 146265

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Fri, 09 Dec 2011 18:32:50 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>34bc6e5e - When checking for weak vtables, check whether the actual definition of</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#34bc6e5e</link>
        <description>When checking for weak vtables, check whether the actual definition ofthe key function is inline, rather than the originaldeclaration. Perhaps FunctionDecl::isInlined() is poorly named. Fixes&lt;rdar://problem/9979458&gt;. llvm-svn: 140400

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Fri, 23 Sep 2011 19:04:03 +0000</pubDate>
        <dc:creator>Douglas Gregor &lt;dgregor@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>88d292cc - Rework when and how vtables are emitted, by tracking where vtables are</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#88d292cc</link>
        <description>Rework when and how vtables are emitted, by tracking where vtables are&quot;used&quot; (e.g., we will refer to the vtable in the generated code) andwhen they are defined (i.e., because we&apos;ve seen the key functiondefinition). Previously, we were effectively tracking &quot;potentialdefinitions&quot; rather than uses, so we were a bit too eager about emittingvtables for classes without key functions. The new scheme:  - For every use of a vtable, Sema calls MarkVTableUsed() to indicate  the use. For example, this occurs when calling a virtual member  function of the class, defining a constructor of that class type,  dynamic_cast&apos;ing from that type to a derived class, casting  to/through a virtual base class, etc.  - For every definition of a vtable, Sema calls MarkVTableUsed() to  indicate the definition. This happens at the end of the translation  unit for classes whose key function has been defined (so we can  delay computation of the key function; see PR6564), and will also  occur with explicit template instantiation definitions. - For every vtable defined/used, we mark all of the virtual member functions of that vtable as defined/used, unless we know that the key function is in another translation unit. This instantiates virtual member functions when needed.  - At the end of the translation unit, Sema tells CodeGen (via the  ASTConsumer) which vtables must be defined (CodeGen will define  them) and which may be used (for which CodeGen will define the  vtables lazily). From a language perspective, both the old and the new schemes arepermissible: we&apos;re allowed to instantiate virtual member functionswhenever we want per the standard. However, all other C++ compilerswere more lazy than we were, and our eagerness was both a performanceissue (we instantiated too much) and a portability problem (we brokeBoost test cases, which now pass).Notes:  (1) There&apos;s a ton of churn in the tests, because the order in which  vtables get emitted to IR has changed. I&apos;ve tried to isolate some of  the larger tests from these issues.  (2) Some diagnostics related to  implicitly-instantiated/implicitly-defined virtual member functions  have moved to the point of first use/definition. It&apos;s better this  way.  (3) I could use a review of the places where we MarkVTableUsed, to  see if I missed any place where the language effectively requires a  vtable.Fixes PR7114 and PR6564.llvm-svn: 103718

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Thu, 13 May 2010 16:44:06 +0000</pubDate>
        <dc:creator>Douglas Gregor &lt;dgregor@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>4b73cfab - rename llvm::llvm_report_error -&gt; llvm::report_fatal_error</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#4b73cfab</link>
        <description>rename llvm::llvm_report_error -&gt; llvm::report_fatal_errorllvm-svn: 100708

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Wed, 07 Apr 2010 22:58:06 +0000</pubDate>
        <dc:creator>Chris Lattner &lt;sabre@nondot.org&gt;</dc:creator>
    </item>
<item>
        <title>0da714a3 - Implement a warning diagnostic for weak vtables. Fixes PR6116.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp#0da714a3</link>
        <description>Implement a warning diagnostic for weak vtables. Fixes PR6116.llvm-svn: 95472

            List of files:
            /llvm-project-15.0.7/clang/test/SemaCXX/warn-weak-vtables.cpp</description>
        <pubDate>Sat, 06 Feb 2010 02:27:10 +0000</pubDate>
        <dc:creator>Anders Carlsson &lt;andersca@mac.com&gt;</dc:creator>
    </item>
</channel>
</rss>
