<?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 devirtualize-3.ll</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>15fefcb9 - [opt] Directly translate -O# to -passes=&apos;default&lt;O#&gt;&apos;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#15fefcb9</link>
        <description>[opt] Directly translate -O# to -passes=&apos;default&lt;O#&gt;&apos;Right now when we see -O# we add the corresponding &apos;default&lt;O#&gt;&apos; intothe list of passes to run when translating legacy -pass-name. This hasthe side effect of not using the default AA pipeline.Instead, treat -O# as -passes=&apos;default&lt;O#&gt;&apos;, but don&apos;t allow any other-passes or -pass-name. I think we can keep `opt -O#` as shorthand for`opt -passes=&apos;default&lt;O#&gt;` but disallow anything more than just -O#.Tests need to be updated to not use `opt -O# -pass-name`.Reviewed By: asbirleaDifferential Revision: https://reviews.llvm.org/D112036

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Mon, 18 Oct 2021 22:43:08 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>aff058b1 - Reland [CGSCC] Detect devirtualization in more cases</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#aff058b1</link>
        <description>Reland [CGSCC] Detect devirtualization in more casesThe devirtualization wrapper misses cases where if it wraps a passmanager, an individual pass may devirtualize an indirect call created bya previous pass. For example, inlining may create a new indirect callwhich is devirtualized by instcombine. Currently the devirtualizationwrapper will not see that because it only checks cgscc edges at the verybeginning and end of the pass (manager) it wraps.This fixes some tests testing this exact behavior in the legacy PM.Instead of checking WeakTrackingVHs for CallBases at the very beginningand end of the pass it wraps, check every timeupdateCGAndAnalysisManagerForPass() is called.check-llvm and check-clang with -abort-on-max-devirt-iterations-reachedon by default doesn&apos;t show any failures outside of tests specificallytesting it so it doesn&apos;t needlessly rerun passes more than necessary.(The NPM -O2/3 pipeline run the inliner/function simplification pipelineunder a devirtualization repeater pass up to 4 times by default).http://llvm-compile-time-tracker.com/?config=O3&amp;stat=instructions&amp;remote=aeubanksshows that 7zip has ~1% compile time regression. I looked at it and sawthat there indeed was devirtualization happening that was not previouslycaught, so now it reruns the CGSCC pipeline on some SCCs, which is WAI.The initial land assumed CallBase WeakTrackingVHs would always beCallBases, but they can be RAUW&apos;d with undef.Reviewed By: asbirleaDifferential Revision: https://reviews.llvm.org/D89587

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Thu, 15 Oct 2020 00:56:38 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>6a2799cf - Revert &quot;[CGSCC] Detect devirtualization in more cases&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#6a2799cf</link>
        <description>Revert &quot;[CGSCC] Detect devirtualization in more cases&quot;This reverts commit 14a68b4aa9732293ad7e16f105b0feb53dc8dbe2.Causes building self hosted clang to crash when using NPM.

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Mon, 23 Nov 2020 21:20:21 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>14a68b4a - [CGSCC] Detect devirtualization in more cases</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#14a68b4a</link>
        <description>[CGSCC] Detect devirtualization in more casesThe devirtualization wrapper misses cases where if it wraps a passmanager, an individual pass may devirtualize an indirect call created bya previous pass. For example, inlining may create a new indirect callwhich is devirtualized by instcombine. Currently the devirtualizationwrapper will not see that because it only checks cgscc edges at the verybeginning and end of the pass (manager) it wraps.This fixes some tests testing this exact behavior in the legacy PM.Instead of checking WeakTrackingVHs for CallBases at the very beginningand end of the pass it wraps, check every timeupdateCGAndAnalysisManagerForPass() is called.check-llvm and check-clang with -abort-on-max-devirt-iterations-reachedon by default doesn&apos;t show any failures outside of tests specificallytesting it so it doesn&apos;t needlessly rerun passes more than necessary.(The NPM -O2/3 pipeline run the inliner/function simplification pipelineunder a devirtualization repeater pass up to 4 times by default).http://llvm-compile-time-tracker.com/?config=O3&amp;stat=instructions&amp;remote=aeubanksshows that 7zip has ~1% compile time regression. I looked at it and sawthat there indeed was devirtualization happening that was not previouslycaught, so now it reruns the CGSCC pipeline on some SCCs, which is WAI.Reviewed By: asbirleaDifferential Revision: https://reviews.llvm.org/D89587

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Thu, 15 Oct 2020 00:56:38 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>5668eda8 - Revert &quot;[CGSCC] Detect devirtualization in more cases&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#5668eda8</link>
        <description>Revert &quot;[CGSCC] Detect devirtualization in more cases&quot;This reverts commit 3024fe5b55ed72633915f613bd5e2826583c396f.Causes major compile time regressions:https://llvm-compile-time-tracker.com/compare.php?from=3b8d8954bf2c192502d757019b9fe434864068e9&amp;to=3024fe5b55ed72633915f613bd5e2826583c396f&amp;stat=instructions

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Fri, 23 Oct 2020 16:53:52 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>3024fe5b - [CGSCC] Detect devirtualization in more cases</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#3024fe5b</link>
        <description>[CGSCC] Detect devirtualization in more casesThe devirtualization wrapper misses cases where if it wraps a passmanager, an individual pass may devirtualize an indirect call created bya previous pass. For example, inlining may create a new indirect callwhich is devirtualized by instcombine. Currently the devirtualizationwrapper will not see that because it only checks cgscc edges at the verybeginning and end of the pass (manager) it wraps.This fixes some tests testing this exact behavior in the legacy PM.This piggybacks off of updateCGAndAnalysisManagerForPass()&apos;s detectionof promoted ref to call edges.This supercedes one of the previous mechanisms to detectdevirtualization by keeping track of potentially promoted callinstructions via WeakTrackingVHs.There is one more existing way of detecting devirtualization, bychecking if the number of indirect calls has decreased and the number ofdirect calls has increased in a function. It handles cases where callsto functions without definitions are promoted, and some tests rely onthat. LazyCallGraph doesn&apos;t track edges to functions withoutdefinitions so this part can&apos;t be removed in this change.check-llvm and check-clang with -abort-on-max-devirt-iterations-reachedon by default doesn&apos;t show any failures outside of tests specificallytesting it so it doesn&apos;t needlessly rerun passes more than necessary.(The NPM -O2/3 pipeline run the inliner/function simplification pipelineunder a devirtualization repeater pass up to 4 times by default).Reviewed By: asbirleaDifferential Revision: https://reviews.llvm.org/D89587

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Thu, 15 Oct 2020 00:56:38 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>f1800579 - [Inliner][NPM] Fix various tests under NPM</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#f1800579</link>
        <description>[Inliner][NPM] Fix various tests under NPMalloca-dbgdeclare-merge.ll:alloca-merge-align.ll:array_merge.ll: NPM inliner does not merge allocasdelete-call.ll: NPM inliner does not delete readonly callsexternally_available.ll: NPM inliner does not delete available_externally functionsinline-cold-callee.ll:inline-hot-callee.ll: inline-hot-callee.ll has a comment saying it only applies to legacy PM, I assume same for inline-cold-callee.lldevirtualize-2.ll:inline-hot-callsite:monster_scc.ll:pr22285.ll: already has legacy and new PM RUN linesinline-cold.ll: profile-summary required to see callee as coldprof-update-sample.ll: profile-summary required to update branch_weightsReviewed By: davidxlDifferential Revision: https://reviews.llvm.org/D89093

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Thu, 08 Oct 2020 20:14:43 +0000</pubDate>
        <dc:creator>Arthur Eubanks &lt;aeubanks@google.com&gt;</dc:creator>
    </item>
<item>
        <title>f31811f2 - [BasicAA] Rename deprecated -basicaa to -basic-aa</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#f31811f2</link>
        <description>[BasicAA] Rename deprecated -basicaa to -basic-aaFollow-up to D82607Revert an accidental change (empty.ll) of D82683

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Sat, 27 Jun 2020 03:41:37 +0000</pubDate>
        <dc:creator>Fangrui Song &lt;maskray@google.com&gt;</dc:creator>
    </item>
<item>
        <title>cee313d2 - Revert &quot;Temporarily Revert &quot;Add basic loop fusion pass.&quot;&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#cee313d2</link>
        <description>Revert &quot;Temporarily Revert &quot;Add basic loop fusion pass.&quot;&quot;The reversion apparently deleted the test/Transforms directory.Will be re-reverting again.llvm-svn: 358552

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Wed, 17 Apr 2019 04:52:47 +0000</pubDate>
        <dc:creator>Eric Christopher &lt;echristo@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>cbf614a9 - Remove the ScalarReplAggregates pass</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#cbf614a9</link>
        <description>Remove the ScalarReplAggregates passNearly all the changes to this pass have been done while maintaining andupdating other parts of LLVM.  LLVM has had another pass, SROA, whichhas superseded ScalarReplAggregates for quite some time.Differential Revision: http://reviews.llvm.org/D21316llvm-svn: 272737

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Wed, 15 Jun 2016 00:19:09 +0000</pubDate>
        <dc:creator>David Majnemer &lt;david.majnemer@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a79ac14f - [opaque pointer type] Add textual IR support for explicit type parameter to load instruction</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#a79ac14f</link>
        <description>[opaque pointer type] Add textual IR support for explicit type parameter to load instructionEssentially the same as the GEP change in r230786.A similar migration script can be used to update test cases, though a few moretest case improvements/changes were required this time around: (r229269-r229278)import fileinputimport sysimport repat = re.compile(r&quot;((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)&quot;)for line in sys.stdin:  sys.stdout.write(re.sub(pat, r&quot;\1, \2\3*\4&quot;, line))Reviewers: rafael, dexonsmith, grosserDifferential Revision: http://reviews.llvm.org/D7649llvm-svn: 230794

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Fri, 27 Feb 2015 21:17:42 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>79e6c749 - [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#79e6c749</link>
        <description>[opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instructionOne of several parallel first steps to remove the target type of pointers,replacing them with a single opaque pointer type.This adds an explicit type parameter to the gep instruction so that when thefirst parameter becomes an opaque pointer type, the type to gep through isstill available to the instructions.* This doesn&apos;t modify gep operators, only instructions (operators will be  handled separately)* Textual IR changes only. Bitcode (including upgrade) and changing the  in-memory representation will be in separate changes.* geps of vectors are transformed as:    getelementptr &lt;4 x float*&gt; %x, ...  -&gt;getelementptr float, &lt;4 x float*&gt; %x, ...  Then, once the opaque pointer type is introduced, this will ultimately look  like:    getelementptr float, &lt;4 x ptr&gt; %x  with the unambiguous interpretation that it is a vector of pointers to float.* address spaces remain on the pointer, not the type:    getelementptr float addrspace(1)* %x  -&gt;getelementptr float, float addrspace(1)* %x  Then, eventually:    getelementptr float, ptr addrspace(1) %xImportantly, the massive amount of test case churn has been automated bysame crappy python code. I had to manually update a few test cases thatwouldn&apos;t fit the script&apos;s model (r228970,r229196,r229197,r229198). Thepython script just massages stdin and writes the result to stdout, Ithen wrapped that in a shell script to handle replacing files, thenusing the usual find+xargs to migrate all the files.update.py:import fileinputimport sysimport reibrep = re.compile(r&quot;(^.*?[^%\w]getelementptr inbounds )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))&quot;)normrep = re.compile(       r&quot;(^.*?[^%\w]getelementptr )(((?:&lt;\d* x )?)(.*?)(| addrspace\(\d\)) *\*(|&gt;)(?:$| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$))&quot;)def conv(match, line):  if not match:    return line  line = match.groups()[0]  if len(match.groups()[5]) == 0:    line += match.groups()[2]  line += match.groups()[3]  line += &quot;, &quot;  line += match.groups()[1]  line += &quot;\n&quot;  return linefor line in sys.stdin:  if line.find(&quot;getelementptr &quot;) == line.find(&quot;getelementptr inbounds&quot;):    if line.find(&quot;getelementptr inbounds&quot;) != line.find(&quot;getelementptr inbounds (&quot;):      line = conv(re.match(ibrep, line), line)  elif line.find(&quot;getelementptr &quot;) != line.find(&quot;getelementptr (&quot;):    line = conv(re.match(normrep, line), line)  sys.stdout.write(line)apply.sh:for name in &quot;$@&quot;do  python3 `dirname &quot;$0&quot;`/update.py &lt; &quot;$name&quot; &gt; &quot;$name.tmp&quot; &amp;&amp; mv &quot;$name.tmp&quot; &quot;$name&quot;  rm -f &quot;$name.tmp&quot;doneThe actual commands:From llvm/src:find test/ -name *.ll | xargs ./apply.shFrom llvm/src/tools/clang:find test/ -name *.mm -o -name *.m -o -name *.cpp -o -name *.c | xargs -I &apos;{}&apos; ../../apply.sh &quot;{}&quot;From llvm/src/tools/polly:find test/ -name *.ll | xargs ./apply.shAfter that, check-all (with llvm, clang, clang-tools-extra, lld,compiler-rt, and polly all checked out).The extra &apos;rm&apos; in the apply.sh script is due to a few files in clang&apos;s testsuite using interesting unicode stuff that my python script was throwingexceptions on. None of those files needed to be migrated, so it seemedsufficient to ignore those cases.Reviewers: rafael, dexonsmith, grosserDifferential Revision: http://reviews.llvm.org/D7636llvm-svn: 230786

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Fri, 27 Feb 2015 19:29:02 +0000</pubDate>
        <dc:creator>David Blaikie &lt;dblaikie@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b137c9e5 - Tests: rewrite &apos;opt ... %s&apos; to &apos;opt ... &lt; %s&apos; so that opt does not emit a ModuleID</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#b137c9e5</link>
        <description>Tests: rewrite &apos;opt ... %s&apos; to &apos;opt ... &lt; %s&apos; so that opt does not emit a ModuleIDThis is done to avoid odd test failures, like the one fixed in r171243.llvm-svn: 171246

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Sun, 30 Dec 2012 01:28:40 +0000</pubDate>
        <dc:creator>Dmitri Gribenko &lt;gribozavr@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>02538ac4 - Make BasicAliasAnalysis a normal AliasAnalysis implementation which</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#02538ac4</link>
        <description>Make BasicAliasAnalysis a normal AliasAnalysis implementation whichdoes normal initialization and normal chaining. Change the defaultAliasAnalysis implementation to NoAlias.Update StandardCompileOpts.h and friends to explicitly requestBasicAliasAnalysis.Update tests to explicitly request -basicaa.llvm-svn: 116720

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Mon, 18 Oct 2010 18:04:47 +0000</pubDate>
        <dc:creator>Dan Gohman &lt;gohman@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>532112b9 - fix PR5009 by making CGSCCPM realize that a call was devirtualized</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll#532112b9</link>
        <description>fix PR5009 by making CGSCCPM realize that a call was devirtualizedif an indirect call site was removed and a direct one was added, notjust if an indirect call site was modified to be direct.llvm-svn: 102830

            List of files:
            /llvm-project-15.0.7/llvm/test/Transforms/Inline/devirtualize-3.ll</description>
        <pubDate>Sat, 01 May 2010 06:38:43 +0000</pubDate>
        <dc:creator>Chris Lattner &lt;sabre@nondot.org&gt;</dc:creator>
    </item>
</channel>
</rss>
