History log of /llvm-project/llvm/lib/Transforms/Scalar/EarlyCSE.cpp (Results 126 – 150 of 229)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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


12345678910