#
8d84605f |
| 31-Aug-2016 |
Geoff Berry <gberry@codeaurora.org> |
[EarlyCSE] Optionally use MemorySSA. NFC.
Summary: Use MemorySSA, if requested, to do less conservative memory dependency checking.
This change doesn't enable the MemorySSA enhanced EarlyCSE in the
[EarlyCSE] Optionally use MemorySSA. NFC.
Summary: Use MemorySSA, if requested, to do less conservative memory dependency checking.
This change doesn't enable the MemorySSA enhanced EarlyCSE in the default pipelines, so should be NFC.
Reviewers: dberlin, sanjoy, reames, majnemer
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19821
llvm-svn: 280279
show more ...
|
#
64f5ed17 |
| 31-Aug-2016 |
Geoff Berry <gberry@codeaurora.org> |
[EarlyCSE] Allow forwarding a non-invariant load into an invariant load.
Reviewers: sanjoy
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D23935
llvm-svn: 280
[EarlyCSE] Allow forwarding a non-invariant load into an invariant load.
Reviewers: sanjoy
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D23935
llvm-svn: 280265
show more ...
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2 |
|
#
b2d12b81 |
| 09-Aug-2016 |
Anna Thomas <anna@azul.com> |
[EarlyCSE] Teach about CSE'ing over invariant.start intrinsics
Summary: Teach EarlyCSE about invariant.start intrinsic. Specifically, we can perform store-load, load-load forwarding over this call.
[EarlyCSE] Teach about CSE'ing over invariant.start intrinsics
Summary: Teach EarlyCSE about invariant.start intrinsic. Specifically, we can perform store-load, load-load forwarding over this call.
Reviewers: majnemer, reames, dberlin, sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23268
llvm-svn: 278153
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 ...
|
Revision tags: llvmorg-3.9.0-rc1 |
|
#
130b9f99 |
| 29-Jul-2016 |
David Majnemer <david.majnemer@gmail.com> |
[EarlyCSE] Correctly handle simplified, but live, instructions
Some instructions may have their uses replaced with a symbolic constant. However, the instruction may still have side effects which per
[EarlyCSE] Correctly handle simplified, but live, instructions
Some instructions may have their uses replaced with a symbolic constant. However, the instruction may still have side effects which percludes it from being removed from the function. EarlyCSE treated such an instruction as if it were removed, resulting in PR28763.
llvm-svn: 277114
show more ...
|
#
b8da3a2b |
| 25-Jun-2016 |
David Majnemer <david.majnemer@gmail.com> |
Reinstate r273711
r273711 was reverted by r273743. The inliner needs to know about any call sites in the inlined function. These were obscured if we replaced a call to undef with an undef but kept
Reinstate r273711
r273711 was reverted by r273743. The inliner needs to know about any call sites in the inlined function. These were obscured if we replaced a call to undef with an undef but kept the call around.
This fixes PR28298.
llvm-svn: 273753
show more ...
|
#
ae2ef4cc |
| 24-Jun-2016 |
Nico Weber <nicolasweber@gmx.de> |
Revert r273711, it caused PR28298.
llvm-svn: 273743
|
#
3b3e954e |
| 24-Jun-2016 |
David Majnemer <david.majnemer@gmail.com> |
SimplifyInstruction does not imply DCE
We cannot remove an instruction with no uses just because SimplifyInstruction succeeds. It may have side effects.
llvm-svn: 273711
|
#
1ab2fad3 |
| 16-Jun-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[EarlyCSE] Minor cosmetic NFC changes
- Avoid implicit conversion from pointer to bool - Add a comment when passing in a boolean value
llvm-svn: 272955
|
#
07c6521a |
| 16-Jun-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[EarlyCSE] Fold invariant loads
Redundant invariant loads can be CSE'ed with very little extra effort over what early-cse already tracks, so it looks reasonable to make early-cse handle this case.
[EarlyCSE] Fold invariant loads
Redundant invariant loads can be CSE'ed with very little extra effort over what early-cse already tracks, so it looks reasonable to make early-cse handle this case.
llvm-svn: 272954
show more ...
|
#
02861d86 |
| 08-Jun-2016 |
Davide Italiano <davide@freebsd.org> |
[PM] Add missing caching of GlobalsAA to EarlyCSE.
llvm-svn: 272204
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
2f64c202 |
| 13-May-2016 |
Geoff Berry <gberry@codeaurora.org> |
[EarlyCSE] Change key type of AvailableCalls to Instruction*. NFCI.
llvm-svn: 269445
|
#
32b55181 |
| 06-May-2016 |
Philip Reames <listmail@philipreames.com> |
[EarlyCSE] Rename a variable for clarity [NFC]
llvm-svn: 268701
|
#
107aefc2 |
| 29-Apr-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
Mark guards on true as "trivially dead"
This moves some logic added to EarlyCSE in rL268120 into `llvm::isInstructionTriviallyDead`. Adds a test case for DCE to demonstrate that passes other than E
Mark guards on true as "trivially dead"
This moves some logic added to EarlyCSE in rL268120 into `llvm::isInstructionTriviallyDead`. Adds a test case for DCE to demonstrate that passes other than EarlyCSE can now pick up on the new information.
llvm-svn: 268126
show more ...
|
#
ee81b23f |
| 29-Apr-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[EarlyCSE] Simplify guard intrinsics
Summary: This change teaches EarlyCSE some basic properties of guard intrinsics:
- Guard intrinsics read all memory, but don't write to any memory - After a g
[EarlyCSE] Simplify guard intrinsics
Summary: This change teaches EarlyCSE some basic properties of guard intrinsics:
- Guard intrinsics read all memory, but don't write to any memory - After a guard has executed, the condition it was guarding on can be assumed to be true - Guard intrinsics on a constant `true` are no-ops
Reviewers: reames, hfinkel
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19578
llvm-svn: 268120
show more ...
|
#
5ae272c2 |
| 28-Apr-2016 |
Geoff Berry <gberry@codeaurora.org> |
[EarlyCSE] Change LoadValue field Value *Data to Instruction *Inst. NFC.
Made in preparation for adding MemorySSA support to EarlyCSE.
llvm-svn: 267893
|
#
354fac2a |
| 28-Apr-2016 |
Geoff Berry <gberry@codeaurora.org> |
[EarlyCSE] Sort includes. NFC.
Reviewers: mcrosier
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19617
llvm-svn: 267890
|
#
5253a089 |
| 27-Apr-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
Fix typo in comment; NFC
llvm-svn: 267653
|
#
aa641a51 |
| 22-Apr-2016 |
Andrew Kaylor <andrew.kaylor@intel.com> |
Re-commit optimization bisect support (r267022) without new pass manager support.
The original commit was reverted because of a buildbot problem with LazyCallGraph::SCC handling (not related to the
Re-commit optimization bisect support (r267022) without new pass manager support.
The original commit was reverted because of a buildbot problem with LazyCallGraph::SCC handling (not related to the OptBisect handling).
Differential Revision: http://reviews.llvm.org/D19172
llvm-svn: 267231
show more ...
|
#
1a4bc110 |
| 22-Apr-2016 |
Chad Rosier <mcrosier@codeaurora.org> |
[EarlyCSE/CVP] Add stats for CVPs and make sure to account for any Changes.
llvm-svn: 267187
|
#
bfd695d5 |
| 22-Apr-2016 |
David Majnemer <david.majnemer@gmail.com> |
[EarlyCSE] Don't add the overflow flags to the hash
We take the intersection of overflow flags while CSE'ing. This permits us to consider two instructions with different overflow behavior to be repl
[EarlyCSE] Don't add the overflow flags to the hash
We take the intersection of overflow flags while CSE'ing. This permits us to consider two instructions with different overflow behavior to be replaceable.
llvm-svn: 267153
show more ...
|
#
6013f45f |
| 22-Apr-2016 |
Vedant Kumar <vsk@apple.com> |
Revert "Initial implementation of optimization bisect support."
This reverts commit r267022, due to an ASan failure:
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/1549
llvm-s
Revert "Initial implementation of optimization bisect support."
This reverts commit r267022, due to an ASan failure:
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_check/1549
llvm-svn: 267115
show more ...
|
#
9554c133 |
| 22-Apr-2016 |
David Majnemer <david.majnemer@gmail.com> |
[EarlyCSE] Take the intersection of flags on instructions
EarlyCSE had inconsistent behavior with regards to flag'd instructions: - In some cases, it would pessimize if the available instruction had
[EarlyCSE] Take the intersection of flags on instructions
EarlyCSE had inconsistent behavior with regards to flag'd instructions: - In some cases, it would pessimize if the available instruction had different flags by not performing CSE. - In other cases, it would miscompile if it replaced an instruction which had no flags with an instruction which has flags.
Fix this by being more consistent with our flag handling by utilizing andIRFlags.
llvm-svn: 267111
show more ...
|
#
f0f27929 |
| 21-Apr-2016 |
Andrew Kaylor <andrew.kaylor@intel.com> |
Initial implementation of optimization bisect support.
This patch implements a optimization bisect feature, which will allow optimizations to be selectively disabled at compile time in order to trac
Initial implementation of optimization bisect support.
This patch implements a optimization bisect feature, which will allow optimizations to be selectively disabled at compile time in order to track down test failures that are caused by incorrect optimizations.
The bisection is enabled using a new command line option (-opt-bisect-limit). Individual passes that may be skipped call the OptBisect object (via an LLVMContext) to see if they should be skipped based on the bisect limit. A finer level of control (disabling individual transformations) can be managed through an addition OptBisect method, but this is not yet used.
The skip checking in this implementation is based on (and replaces) the skipOptnoneFunction check. Where that check was being called, a new call has been inserted in its place which checks the bisect limit and the optnone attribute. A new function call has been added for module and SCC passes that behaves in a similar way.
Differential Revision: http://reviews.llvm.org/D19172
llvm-svn: 267022
show more ...
|
#
b346dcbc |
| 20-Apr-2016 |
Chad Rosier <mcrosier@codeaurora.org> |
Typo.
llvm-svn: 266905
|