#
7fd29cef |
| 21-Jan-2017 |
Chandler Carruth <chandlerc@gmail.com> |
[PM] Sink an LCSSA preservation assert from the LoopSimplify pass into the library routine shared with the new PM and other code.
This assert checks that when LCSSA preservation is requested we star
[PM] Sink an LCSSA preservation assert from the LoopSimplify pass into the library routine shared with the new PM and other code.
This assert checks that when LCSSA preservation is requested we start in LCSSA form. Without this early assert, given *very* complex test cases we can hit an assert or crash much later on when trying to preserve LCSSA.
The new PM's loop simplify doesn't need to (and indeed can't) preserve LCSSA as the new PM doesn't deal in transforms in the dependency graph. But we asked the library to and shockingly, this didn't work very well! Stop doing that. Now the assert will tell us immediately with existing test cases. Before this, it took a pretty convoluted input to trigger this.
However, sinking the assert also found a bug in LoopUnroll where we asked simplifyLoop to preserve LCSSA *right before we reform it*. That's kinda silly and unsurprising that it wasn't available. =D Stop doing that too.
We also would assert that the unrolled loop was in LCSSA even if preserving LCSSA was never requested! I don't have a test case or anything here. I spotted it by inspection and it seems quite obvious. No logic change anyways, that's just avoiding a spurrious assert.
llvm-svn: 292710
show more ...
|
Revision tags: llvmorg-4.0.0-rc1 |
|
#
aec2fa35 |
| 19-Dec-2016 |
Daniel Jasper <djasper@google.com> |
Revert @llvm.assume with operator bundles (r289755-r289757)
This creates non-linear behavior in the inliner (see more details in r289755's commit thread).
llvm-svn: 290086
|
#
3ca4a6bc |
| 15-Dec-2016 |
Hal Finkel <hfinkel@anl.gov> |
Remove the AssumptionCache
After r289755, the AssumptionCache is no longer needed. Variables affected by assumptions are now found by using the new operand-bundle-based scheme. This new scheme is mo
Remove the AssumptionCache
After r289755, the AssumptionCache is no longer needed. Variables affected by assumptions are now found by using the new operand-bundle-based scheme. This new scheme is more computationally efficient, and also we need much less code...
llvm-svn: 289756
show more ...
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1 |
|
#
5020c997 |
| 18-Nov-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] Preserve LCSSA when removing edges from unreachable blocks.
This fixes PR30454.
llvm-svn: 287379
|
#
77382be5 |
| 18-Nov-2016 |
Florian Hahn <florian.hahn@arm.com> |
[simplifycfg][loop-simplify] Preserve loop metadata in 2 transformations.
insertUniqueBackedgeBlock in lib/Transforms/Utils/LoopSimplify.cpp now propagates existing llvm.loop metadata to newly the a
[simplifycfg][loop-simplify] Preserve loop metadata in 2 transformations.
insertUniqueBackedgeBlock in lib/Transforms/Utils/LoopSimplify.cpp now propagates existing llvm.loop metadata to newly the added backedge.
llvm::TryToSimplifyUncondBranchFromEmptyBlock in lib/Transforms/Utils/Local.cpp now propagates existing llvm.loop metadata to the branch instructions in the predecessor blocks of the empty block that is removed.
Differential Revision: https://reviews.llvm.org/D26495
llvm-svn: 287341
show more ...
|
#
04423cf7 |
| 11-Oct-2016 |
Igor Laevsky <igmyrj@gmail.com> |
[LCSSA] Implement linear algorithm for the isRecursivelyLCSSAForm
For each block check that it doesn't have any uses outside of it's innermost loop.
Differential Revision: https://reviews.llvm.org/
[LCSSA] Implement linear algorithm for the isRecursivelyLCSSAForm
For each block check that it doesn't have any uses outside of it's innermost loop.
Differential Revision: https://reviews.llvm.org/D25364
llvm-svn: 283877
show more ...
|
#
1a554be3 |
| 27-Sep-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] When simplifying phis in loop-simplify, do it only if it preserves LCSSA form.
llvm-svn: 282541
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2 |
|
#
aae168f9 |
| 09-Aug-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] Rebuild LCSSA for the inner loop after separating nested loops.
Summary: This hopefully fixes PR28825. The problem now was that a value from the original loop was used in a subloop, w
[LoopSimplify] Rebuild LCSSA for the inner loop after separating nested loops.
Summary: This hopefully fixes PR28825. The problem now was that a value from the original loop was used in a subloop, which became a sibling after separation. While a subloop doesn't need an lcssa phi node, a sibling does, and that's where we broke LCSSA. The most natural way to fix this now is to simply call formLCSSA on the original loop: it'll do what we've been doing before plus it'll cover situations described above.
I think we don't need to run formLCSSARecursively here, and we have an assert to verify this (I've tried testing it on LLVM testsuite + SPECs). I'd be happy to be corrected here though.
I also changed a run line in the test from '-lcssa -loop-unroll' to '-lcssa -loop-simplify -indvars', because it exercises LCSSA preservation to the same extent, but also makes less unrelated transformation on the CFG, which makes it easier to verify.
Reviewers: chandlerc, sanjoy, silvas
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23288
llvm-svn: 278173
show more ...
|
#
36e0d01e |
| 09-Aug-2016 |
Sean Silva <chisophugis@gmail.com> |
Consistently use FunctionAnalysisManager
Besides a general consistently benefit, the extra layer of indirection allows the mechanical part of https://reviews.llvm.org/D23256 that requires touching e
Consistently use FunctionAnalysisManager
Besides a general consistently benefit, the extra layer of indirection allows the mechanical part of https://reviews.llvm.org/D23256 that requires touching every transformation and analysis to be factored out cleanly.
Thanks to David for the suggestion.
llvm-svn: 278077
show more ...
|
#
0873e7d2 |
| 08-Aug-2016 |
Sean Silva <chisophugis@gmail.com> |
Add some comments linking back to PR28400.
Thanks to Mehdi for the suggestion!
llvm-svn: 277984
|
#
7f21f4b2 |
| 08-Aug-2016 |
Sean Silva <chisophugis@gmail.com> |
[PM] More workaround for PR28400
llvm-svn: 277982
|
#
442b82f0 |
| 07-Aug-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
Revert "Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops.""
This reverts commit r277901. Reaaply the commit as it looks like it has nothing to do with the bots failures.
llvm
Revert "Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops.""
This reverts commit r277901. Reaaply the commit as it looks like it has nothing to do with the bots failures.
llvm-svn: 277946
show more ...
|
#
09cf304e |
| 06-Aug-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
Revert "[LoopSimplify] Fix updating LCSSA after separating nested loops."
This reverts commit r277877. Try to appease clang-x64-ninja-win7 buildbot.
llvm-svn: 277901
|
#
4c65c359 |
| 05-Aug-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] Fix updating LCSSA after separating nested loops.
This fixes PR28825. The problem was that we only checked if a value from a created inner loop is used in the outer loop, and fixed LC
[LoopSimplify] Fix updating LCSSA after separating nested loops.
This fixes PR28825. The problem was that we only checked if a value from a created inner loop is used in the outer loop, and fixed LCSSA for them. But we missed to fixup LCSSA for values used in exits of the outer loop.
llvm-svn: 277877
show more ...
|
Revision tags: llvmorg-3.9.0-rc1 |
|
#
6bc56d55 |
| 20-Jul-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
Revert "Revert r275883 and r275891. They seem to cause PR28608."
This reverts commit r276064, and thus reapplies r275891 and r275883 with a fix for PR28608.
llvm-svn: 276077
|
#
554efb28 |
| 19-Jul-2016 |
Sean Silva <chisophugis@gmail.com> |
Revert r275883 and r275891. They seem to cause PR28608.
Revert "[LoopSimplify] Update LCSSA after separating nested loops."
This reverts commit r275891.
Revert "[LCSSA] Post-process PHI-nodes crea
Revert r275883 and r275891. They seem to cause PR28608.
Revert "[LoopSimplify] Update LCSSA after separating nested loops."
This reverts commit r275891.
Revert "[LCSSA] Post-process PHI-nodes created by SSAUpdate when constructing LCSSA form."
This reverts commit r275883.
llvm-svn: 276064
show more ...
|
#
ea5b7282 |
| 18-Jul-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] Update LCSSA after separating nested loops.
Summary: Usually LCSSA survives this transformation, but in some cases (see attached test) it doesn't: values from the original loop after
[LoopSimplify] Update LCSSA after separating nested loops.
Summary: Usually LCSSA survives this transformation, but in some cases (see attached test) it doesn't: values from the original loop after separating might be used from the outer loop. Before the transformation it was the same loop, so LCSSA phis were not required.
This fixes PR28272.
Reviewers: sanjoy, hfinkel, chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21665
llvm-svn: 275891
show more ...
|
#
081fd139 |
| 09-Jul-2016 |
Davide Italiano <davide@freebsd.org> |
[LoopSimplify] Remove a comment which is unlikely to age well.
Chandler pointed out in his review but I forgot to remove before committing, my bad.
llvm-svn: 274963
|
#
cd96cfd8 |
| 09-Jul-2016 |
Davide Italiano <davide@freebsd.org> |
[PM] Port LoopSimplify to the new pass manager.
While here move simplifyLoop() function to the new header, as suggested by Chandler in the review.
Differential Revision: http://reviews.llvm.org/D2
[PM] Port LoopSimplify to the new pass manager.
While here move simplifyLoop() function to the new header, as suggested by Chandler in the review.
Differential Revision: http://reviews.llvm.org/D21404
llvm-svn: 274959
show more ...
|
#
135f735a |
| 26-Jun-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Apply clang-tidy's modernize-loop-convert to most of lib/Transforms.
Only minor manual fixes. No functionality change intended.
llvm-svn: 273808
|
#
e14e7bc4 |
| 25-Jun-2016 |
David Majnemer <david.majnemer@gmail.com> |
Revert "[SimplifyCFG] Stop inserting calls to llvm.trap for UB"
This reverts commit r273778, it seems to break UBSan :/
llvm-svn: 273779
|
#
d346a377 |
| 25-Jun-2016 |
David Majnemer <david.majnemer@gmail.com> |
[SimplifyCFG] Stop inserting calls to llvm.trap for UB
SimplifyCFG had logic to insert calls to llvm.trap for two very particular IR patterns: stores and invokes of undef/null.
While InstCombine ca
[SimplifyCFG] Stop inserting calls to llvm.trap for UB
SimplifyCFG had logic to insert calls to llvm.trap for two very particular IR patterns: stores and invokes of undef/null.
While InstCombine canonicalizes certain undefined behavior IR patterns to stores of undef, phase ordering means that this cannot be relied upon in general.
There are much better tools than llvm.trap: UBSan and ASan.
N.B. I could be argued into reverting this change if a clear argument as to why it is important that we synthesize llvm.trap for stores, I'd be hard pressed to see why it'd be useful for invokes...
llvm-svn: 273778
show more ...
|
#
9d305d70 |
| 15-Jun-2016 |
Davide Italiano <davide@freebsd.org> |
[LoopSimplify] Analyses do not need to be member variables.
In preparation for porting this pass to the new PM.
llvm-svn: 272818
|
#
8e7e7672 |
| 08-Jun-2016 |
Michael Zolotukhin <mzolotukhin@apple.com> |
[LoopSimplify] Preserve LCSSA when merging exit blocks.
Summary: This fixes PR26682. Also add LCSSA as a preserved pass to LoopSimplify, that looks correct to me and allows to write a test for the i
[LoopSimplify] Preserve LCSSA when merging exit blocks.
Summary: This fixes PR26682. Also add LCSSA as a preserved pass to LoopSimplify, that looks correct to me and allows to write a test for the issue.
Reviewers: chandlerc, bogner, sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D21112
llvm-svn: 272224
show more ...
|
#
2d5ab0a5 |
| 08-Jun-2016 |
Davide Italiano <davide@freebsd.org> |
[PM] LoopSimplify. Remove unneeded pass dependencies. NFCI.
llvm-svn: 272140
|