History log of /llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp (Results 1426 – 1450 of 2089)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 7004e4b9 26-Mar-2012 Andrew Trick <atrick@apple.com>

SCEV fix: Handle loop invariant loads.

Fixes PR11882: NULL dereference in ComputeLoadConstantCompareExitLimit.

llvm-svn: 153480


# e166a854 24-Jan-2012 Chris Lattner <sabre@nondot.org>

switch SCEV to use the new ConstantFoldLoadThroughGEPIndices function
instead of its own hard coded thing, allowing it to handle
ConstantDataSequential and fixing some obscure bugs (e.g. it would
pr

switch SCEV to use the new ConstantFoldLoadThroughGEPIndices function
instead of its own hard coded thing, allowing it to handle
ConstantDataSequential and fixing some obscure bugs (e.g. it would
previously crash on a CAZ of vector type).

llvm-svn: 148788

show more ...


# 46a9f016 20-Jan-2012 David Blaikie <dblaikie@gmail.com>

More dead code removal (using -Wunreachable-code)

llvm-svn: 148578


# fe4848b5 20-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com>

Remove obviously invalid early exit that prevented analyzing ConstantAggregateZeros.

Found by the clang static analyzer.

llvm-svn: 148540


# e81211f4 11-Jan-2012 Andrew Trick <atrick@apple.com>

Clarified the SCEV getSmallConstantTripCount interface with in-your-face comments.

This interface is misleading and dangerous, but it is actually what we need for unrolling.

llvm-svn: 147926


# 881a7768 07-Jan-2012 Andrew Trick <atrick@apple.com>

Expose isNonConstantNegative to users of ScalarEvolution.

llvm-svn: 147700


# 43a33066 02-Dec-2011 Chad Rosier <mcrosier@apple.com>

Fix a few more places where TargetData/TargetLibraryInfo is not being passed.
Add FIXMEs to places that are non-trivial to fix.

llvm-svn: 145661


# e6de63df 01-Dec-2011 Chad Rosier <mcrosier@apple.com>

Last bit of TargetLibraryInfo propagation. Also fixed a case for TargetData
where it appeared beneficial to pass.
More of rdar://10500969

llvm-svn: 145630


# c24b86ff 01-Dec-2011 Chad Rosier <mcrosier@apple.com>

Propagate TargetLibraryInfo throughout ConstantFolding.cpp and
InstructionSimplify.cpp. Other fixups as needed.
Part of rdar://10500969

llvm-svn: 145559


# d25089f8 29-Nov-2011 Andrew Trick <atrick@apple.com>

SCEV fix. In general, Add/Mul expressions should not inherit NSW/NUW.

This reverts r139450, fixes r139453, and adds much needed comments and a
unit test.

llvm-svn: 145367


# d912a5b2 29-Nov-2011 Andrew Trick <atrick@apple.com>

Make SCEV print <nsw><nuw> for Add/MulExpr.

llvm-svn: 145364


# b5ba2eef 20-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com>

SCEV: Actually set overflow flags on add expressions.

setFlags doesn't modify its arguments.

llvm-svn: 145007


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4
# 90c7a108 16-Nov-2011 Andrew Trick <atrick@apple.com>

Fix SCEV overly optimistic back edge taken count for multi-exit loops.

Fixes PR11375: Different results for 'clang++ huh.cpp'...

llvm-svn: 144746


# d48ab845 12-Nov-2011 Nick Lewycky <nicholas@mxc.ca>

Don't try to loop on iterators that are potentially invalidated inside the loop. Fixes PR11361!

llvm-svn: 144454


# 0485d51a 09-Nov-2011 Nick Lewycky <nicholas@mxc.ca>

Don't forget to check FlagNW when determining whether an AddRecExpr will wrap
or not. Patch by Brendon Cahoon!

llvm-svn: 144173


Revision tags: llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2
# a370f3e3 25-Oct-2011 Duncan Sands <baldrick@free.fr>

Restore commits 142790 and 142843 - they weren't breaking the build
bots. Original commit messages:
- Reapply r142781 with fix. Original message:

Enhance SCEV's brute force loop analysis to handl

Restore commits 142790 and 142843 - they weren't breaking the build
bots. Original commit messages:
- Reapply r142781 with fix. Original message:

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant evaluate:
struct ListNode { const struct ListNode *next; int i; };
static const struct ListNode node1 = {0, 1};
static const struct ListNode node2 = {&node1, 2};
static const struct ListNode node3 = {&node2, 3};
int test() {
int sum = 0;
for (const struct ListNode *n = &node3; n != 0; n = n->next)
sum += n->i;
return sum;
}

- Now that we look at all the header PHIs, we need to consider all the header PHIs
when deciding that the loop has stopped evolving. Fixes miscompile in the gcc
torture testsuite!

llvm-svn: 142919

show more ...


# 805c5b92 25-Oct-2011 Duncan Sands <baldrick@free.fr>

Speculatively revert commits 142790 and 142843 to see if it fixes
the dragonegg and llvm-gcc self-host buildbots. Original commit
messages:
- Reapply r142781 with fix. Original message:

Enhance S

Speculatively revert commits 142790 and 142843 to see if it fixes
the dragonegg and llvm-gcc self-host buildbots. Original commit
messages:
- Reapply r142781 with fix. Original message:

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant evaluate:
struct ListNode { const struct ListNode *next; int i; };
static const struct ListNode node1 = {0, 1};
static const struct ListNode node2 = {&node1, 2};
static const struct ListNode node3 = {&node2, 3};
int test() {
int sum = 0;
for (const struct ListNode *n = &node3; n != 0; n = n->next)
sum += n->i;
return sum;
}

- Now that we look at all the header PHIs, we need to consider all the header PHIs
when deciding that the loop has stopped evolving. Fixes miscompile in the gcc
torture testsuite!

llvm-svn: 142916

show more ...


# a58fb48a 24-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Now that we look at all the header PHIs, we need to consider all the header PHIs
when deciding that the loop has stopped evolving. Fixes miscompile in the gcc
torture testsuite!

llvm-svn: 142843


# 9be7f277 24-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Reapply r142781 with fix. Original message:

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant

Reapply r142781 with fix. Original message:

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant evaluate:
struct ListNode { const struct ListNode *next; int i; };
static const struct ListNode node1 = {0, 1};
static const struct ListNode node2 = {&node1, 2};
static const struct ListNode node3 = {&node2, 3};
int test() {
int sum = 0;
for (const struct ListNode *n = &node3; n != 0; n = n->next)
sum += n->i;
return sum;
}

llvm-svn: 142790

show more ...


# 8e904dee 24-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

PHI nodes not in the loop header aren't part of the loop iteration initial
state. Furthermore, they might not have two operands. This fixes the underlying
issue behind the crashes introduced in r1427

PHI nodes not in the loop header aren't part of the loop iteration initial
state. Furthermore, they might not have two operands. This fixes the underlying
issue behind the crashes introduced in r142781.

llvm-svn: 142788

show more ...


# 9d28c26d 24-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Speculatively revert r142781. Bots are showing
Assertion `i_nocapture < OperandTraits<PHINode>::operands(this) && "getOperand() out of range!"' failed.
coming out of indvars.

llvm-svn: 142786


# 1700007e 23-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant evaluate:
struct ListNode { const struct ListNode

Enhance SCEV's brute force loop analysis to handle multiple PHI nodes in the
loop header when computing the trip count.

With this, we now constant evaluate:
struct ListNode { const struct ListNode *next; int i; };
static const struct ListNode node1 = {0, 1};
static const struct ListNode node2 = {&node1, 2};
static const struct ListNode node3 = {&node2, 3};
int test() {
int sum = 0;
for (const struct ListNode *n = &node3; n != 0; n = n->next)
sum += n->i;
return sum;
}

llvm-svn: 142781

show more ...


# a6674c7f 22-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Make SCEV's brute force analysis stronger in two ways. Firstly, we should be
able to constant fold load instructions where the argument is a constant.
Second, we should be able to watch multiple PHI

Make SCEV's brute force analysis stronger in two ways. Firstly, we should be
able to constant fold load instructions where the argument is a constant.
Second, we should be able to watch multiple PHI nodes through the loop; this
patch only supports PHIs in loop headers, more can be done here.

With this patch, we now constant evaluate:
static const int arr[] = {1, 2, 3, 4, 5};
int test() {
int sum = 0;
for (int i = 0; i < 5; ++i) sum += arr[i];
return sum;
}

llvm-svn: 142731

show more ...


Revision tags: llvmorg-3.0.0-rc1
# a447e0f3 14-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

An instruction's operands aren't necessarily instructions or constants. They
could be arguments, for example.

No testcase because this is a bug-fix broken out of a larger optimization patch.

llvm-s

An instruction's operands aren't necessarily instructions or constants. They
could be arguments, for example.

No testcase because this is a bug-fix broken out of a larger optimization patch.

llvm-svn: 141951

show more ...


# 3e8a576d 05-Oct-2011 Andrew Trick <atrick@apple.com>

Fixes PR11070 - assert in SCEV getConstantEvolvingPHIOperands.

llvm-svn: 141219


1...<<51525354555657585960>>...84