History log of /llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp (Results 1126 – 1150 of 2089)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# b47f8010 11-Mar-2016 Chandler Carruth <chandlerc@gmail.com>

[PM] Make the AnalysisManager parameter to run methods a reference.

This was originally a pointer to support pass managers which didn't use
AnalysisManagers. However, that doesn't realistically come

[PM] Make the AnalysisManager parameter to run methods a reference.

This was originally a pointer to support pass managers which didn't use
AnalysisManagers. However, that doesn't realistically come up much and
the complexity of supporting it doesn't really make sense.

In fact, *many* parts of the pass manager were just assuming the pointer
was never null already. This at least makes it much more explicit and
clear.

llvm-svn: 263219

show more ...


# b4faf13c 11-Mar-2016 Chandler Carruth <chandlerc@gmail.com>

[PM] Implement the final conclusion as to how the analysis IDs should
work in the face of the limitations of DLLs and templated static
variables.

This requires passes that use the AnalysisBase mixin

[PM] Implement the final conclusion as to how the analysis IDs should
work in the face of the limitations of DLLs and templated static
variables.

This requires passes that use the AnalysisBase mixin provide a static
variable themselves. So as to keep their APIs clean, I've made these
private and befriended the CRTP base class (which is the common
practice).

I've added documentation to AnalysisBase for why this is necessary and
at what point we can go back to the much simpler system.

This is clearly a better pattern than the extern template as it caught
*numerous* places where the template magic hadn't been applied and
things were "just working" but would eventually have broken
mysteriously.

llvm-svn: 263216

show more ...


# 97d19bd9 09-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Slightly generalize getRangeViaFactoring

Building on the previous change, this generalizes
ScalarEvolution::getRangeViaFactoring to work with
{Ext(C?A:B)+k0,+,Ext(C?A:B)+k1} where Ext can be

[SCEV] Slightly generalize getRangeViaFactoring

Building on the previous change, this generalizes
ScalarEvolution::getRangeViaFactoring to work with
{Ext(C?A:B)+k0,+,Ext(C?A:B)+k1} where Ext can be a zero extend, sign
extend or truncate operation, and k0 and k1 are constants.

llvm-svn: 262979

show more ...


# d3488c60 09-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Slightly generalize getRangeViaFactoring

This change generalizes ScalarEvolution::getRangeViaFactoring to work
with {Ext(C?A:B),+,Ext(C?A:B)} where Ext can be a zero extend, sign
extend or tr

[SCEV] Slightly generalize getRangeViaFactoring

This change generalizes ScalarEvolution::getRangeViaFactoring to work
with {Ext(C?A:B),+,Ext(C?A:B)} where Ext can be a zero extend, sign
extend or truncate operation.

llvm-svn: 262978

show more ...


# 724f5cf2 03-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Prove no-overflow via constant ranges

Exploit ScalarEvolution::getRange's newly acquired smartness (since
r262438) by using that to infer nsw and nuw when possible.

llvm-svn: 262639


# 11ef606f 03-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Be less eager about demoting zexts to sexts

After r262438 we can have provably positive NSW SCEV expressions whose
zero extensions cannot be simplified (since r262438 makes SCEV better at
com

[SCEV] Be less eager about demoting zexts to sexts

After r262438 we can have provably positive NSW SCEV expressions whose
zero extensions cannot be simplified (since r262438 makes SCEV better at
computing constant ranges). This means demoting sexts of positive add
recurrences eagerly can result in an unsimplified zero extension where
we could have had a simplified sign extension. This change fixes the
issue by teaching SCEV to demote sext of a positive SCEV expression to a
zext only if the sext could not be simplified.

llvm-svn: 262638

show more ...


Revision tags: llvmorg-3.8.0
# dcd3a88e 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Minor naming, braces cleanup; NFC

llvm-svn: 262459


# 6b017a11 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

Add a comment with a rational for the unusual code structure

llvm-svn: 262454


# eca1b53b 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

Qualify getRangeForAffineAR with this-> for MSVC

llvm-svn: 262453


# 1168f93c 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

Perturb code in an attempt to appease MSVC

For some reason MSVC seems to think I'm calling getConstant() from a
static context. Try to avoid this issue by explicitly specifying
'this->' (though I'm

Perturb code in an attempt to appease MSVC

For some reason MSVC seems to think I'm calling getConstant() from a
static context. Try to avoid this issue by explicitly specifying
'this->' (though I'm not confident that this will actually work).

llvm-svn: 262451

show more ...


# 62a1c339 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

More code permutation to appease MSVC

llvm-svn: 262449


# 9e5ebf14 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

Remove "auto" to appease the MSVC bots

llvm-svn: 262448


# bf730984 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Make getRange smarter around selects

Have ScalarEvolution::getRange re-consider cases like "{C?A:B,+,C?P:Q}"
by factoring out "C" and computing RangeOf{A,+,P} union RangeOf({B,+,Q})
instead.

[SCEV] Make getRange smarter around selects

Have ScalarEvolution::getRange re-consider cases like "{C?A:B,+,C?P:Q}"
by factoring out "C" and computing RangeOf{A,+,P} union RangeOf({B,+,Q})
instead.

The latter can be easier to compute precisely in cases like
"{C?0:N,+,C?1:-1}" N is the backedge taken count of the loop; since in
such cases the latter form simplifies to [0,N+1) union [0,N+1).

llvm-svn: 262438

show more ...


# b765b633 02-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Extract out a getRangeForAffineAR; NFC

Pure code-motion change. Will be used later in making getRange more clever.

llvm-svn: 262437


# f1e9cae0 01-Mar-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Minor cleanup: rename method, C++11'ify; NFC

llvm-svn: 262374


# df0cd726 28-Feb-2016 NAKAMURA Takumi <geek4civic@gmail.com>

[PM] Appease mingw32's auto-import DLL build with minimal tweaks, with fix for clang.

char AnalysisBase::ID should be declared as extern and defined in one module.

llvm-svn: 262188


# ca04a1f7 28-Feb-2016 NAKAMURA Takumi <geek4civic@gmail.com>

Revert r262185, "[PM] Appease mingw32's auto-import DLL build with minimal tweaks."

I'll rework soon.

llvm-svn: 262186


# de40e743 28-Feb-2016 NAKAMURA Takumi <geek4civic@gmail.com>

[PM] Appease mingw32's auto-import DLL build with minimal tweaks.

char AnalysisBase::ID should be declared as extern and defined in one module.

llvm-svn: 262185


# 3a634355 26-Feb-2016 Chandler Carruth <chandlerc@gmail.com>

[PM] Introduce CRTP mixin base classes to help define passes and
analyses in the new pass manager.

These just handle really basic stuff: turning a type name into a string
statically that is nice to

[PM] Introduce CRTP mixin base classes to help define passes and
analyses in the new pass manager.

These just handle really basic stuff: turning a type name into a string
statically that is nice to print in logs, and getting a static unique ID
for each analysis.

Sadly, the format of passes in anonymous namespaces makes using their
names in tests really annoying so I've customized the names of the no-op
passes to keep tests sane to read.

This is the first of a few simplifying refactorings for the new pass
manager that should reduce boilerplate and confusion.

llvm-svn: 262004

show more ...


Revision tags: llvmorg-3.8.0-rc3
# 5079f626 22-Feb-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[ConstantRange] Rename a method and add more doc

Rename makeNoWrapRegion to a more obvious makeGuaranteedNoWrapRegion,
and add a comment about the counter-intuitive aspects of the function.
This is

[ConstantRange] Rename a method and add more doc

Rename makeNoWrapRegion to a more obvious makeGuaranteedNoWrapRegion,
and add a comment about the counter-intuitive aspects of the function.
This is to help prevent cases like PR26628.

llvm-svn: 261532

show more ...


# 934fcf4d 21-Feb-2016 Tobias Grosser <tobias@grosser.es>

ScalerEvolution: Only erase temporary values if they actually have been added

This addresses post-review comments from Sanjoy Das for r261485.

llvm-svn: 261486


# 11332e5e 21-Feb-2016 Tobias Grosser <tobias@grosser.es>

ScalarEvolution: Do not keep temporary PHI values in ValueExprMap

Before this patch simplified SCEV expressions for PHI nodes were only returned
the very first time getSCEV() was called, but later c

ScalarEvolution: Do not keep temporary PHI values in ValueExprMap

Before this patch simplified SCEV expressions for PHI nodes were only returned
the very first time getSCEV() was called, but later calls to getSCEV always
returned the non-simplified value, which had "temporarily" been stored in the
ValueExprMap, but was never removed and consequently blocked the caching of the
simplified PHI expression.

llvm-svn: 261485

show more ...


# 807d33da 20-Feb-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Don't spell `SCEV *` variables as `Scev`; NFC

It reads odd since most other places name a `SCEV *` as `S`. Pure
renaming change.

llvm-svn: 261393


# c42f7cc3 20-Feb-2016 Sanjoy Das <sanjoy@playingwithpointers.com>

[SCEV] Don't use std::make_pair; NFC

`{A, B}` reads cleaner than `std::make_pair(A, B)`.

llvm-svn: 261392


# ea63a7f5 08-Feb-2016 Silviu Baranga <silviu.baranga@arm.com>

[SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory
sanitizer issue. The PredicatedScalarEvolution's copy constructor
wasn't copying the Generation value, and was leaving i

[SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory
sanitizer issue. The PredicatedScalarEvolution's copy constructor
wasn't copying the Generation value, and was leaving it un-initialized.

Original commit message:

[SCEV][LAA] Add no wrap SCEV predicates and use use them to improve strided pointer detection

Summary:
This change adds no wrap SCEV predicates with:
- support for runtime checking
- support for expression rewriting:
(sext ({x,+,y}) -> {sext(x),+,sext(y)}
(zext ({x,+,y}) -> {zext(x),+,sext(y)}

Note that we are sign extending the increment of the SCEV, even for
the zext case. This is needed to cover the fairly common case where y would
be a (small) negative integer. In order to do this, this change adds two new
flags: nusw and nssw that are applicable to AddRecExprs and permit the
transformations above.

We also change isStridedPtr in LAA to be able to make use of
these predicates. With this feature we should now always be able to
work around overflow issues in the dependence analysis.

Reviewers: mzolotukhin, sanjoy, anemet

Subscribers: mzolotukhin, sanjoy, llvm-commits, rengolin, jmolloy, hfinkel

Differential Revision: http://reviews.llvm.org/D15412

llvm-svn: 260112

show more ...


1...<<41424344454647484950>>...84