Devang Patel
453a844128
Add transformation to update loop interation space. Now,
...
for (i=A; i<N; i++) {
if (i < X && i > Y)
do_something();
}
is transformed into
U=min(N,X); L=max(A,Y);
for (i=L;i<U;i++)
do_somethihg();
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42299 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-25 17:31:19 +00:00
Devang Patel
128459b85b
Do not promote null values because it may be unsafe to do so.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42270 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-24 20:02:42 +00:00
Dan Gohman
746767b097
explicit keywords.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42262 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-24 15:48:49 +00:00
Devang Patel
3f65f02d25
Fix PR1692
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42209 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-21 21:18:19 +00:00
Owen Anderson
ce4d88aa64
Add partial caching of non-local memory dependence queries. This provides a modest
...
speedup for GVN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42185 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-21 03:53:52 +00:00
Devang Patel
9ee49c541b
Update aux. info associated with an instruction before erasing instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42180 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-20 23:45:50 +00:00
Devang Patel
d15dd8c525
Don't increment invalid iterator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42178 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-20 23:01:50 +00:00
Nick Lewycky
e29578afd5
Fix optimization. %x = sub %x, %y does not imply that %y is zero.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42157 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-20 00:48:36 +00:00
Devang Patel
f2038b1d93
Avoid unsafe promotion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42149 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 20:18:51 +00:00
Duncan Sands
46318cdfd0
Improve comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42132 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 10:25:38 +00:00
Duncan Sands
892c7e4a23
A global variable with external weak linkage can be null, while
...
an alias could alias such a global variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42130 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 10:10:31 +00:00
Devang Patel
babbe27007
Relax loop ExitCondition predicate restriction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42122 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 00:28:47 +00:00
Devang Patel
968eee2aa7
Filter loops where split condition's false branch is not empty. For example
...
for (int i = 0; i < N; ++i) {
if (i == somevalue)
dosomething();
else
dosomethingelse();
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42121 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 00:15:16 +00:00
Devang Patel
84ef08bfee
Bail out early, before modifying anything.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42120 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 00:11:01 +00:00
Devang Patel
4e062e520a
Work is incomplete. Loop is not modified at all right now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42119 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19 00:08:13 +00:00
Devang Patel
e3bfb88898
Fix PR1657
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42075 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-18 01:54:42 +00:00
Devang Patel
8893ca6dab
Do not eliminate loop when it is invalid to do so. For example,
...
for(int i = 0; i < N; i++) {
if ( i == XYZ) {
A;
else
B;
}
C;
D;
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42058 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 21:01:05 +00:00
Devang Patel
5279d064bc
Skeleton for transformations to truncate loop's iteration space.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42054 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:39:48 +00:00
Chris Lattner
76c1b97e40
Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo
...
Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:34:04 +00:00
Dan Gohman
5d066ff7f0
Instcombine x-((x/y)*y) into a remainder operator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42035 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:31:57 +00:00
Duncan Sands
cdb6d929d0
Factor the trampoline transformation into a subroutine.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42021 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 10:26:40 +00:00
Owen Anderson
2486686689
Be more careful when constant-folding PHI nodes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41998 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 08:04:16 +00:00
Owen Anderson
86f91e1757
Remove RLE. It is subsumed by GVN.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41968 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:33:52 +00:00
Dale Johannesen
9e3d3abd93
Remove the assumption that FP's are either float or
...
double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41967 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:26:36 +00:00
Chris Lattner
ce4e748565
silence a bogus gcc warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 03:07:24 +00:00
Bill Wendling
c68491069a
Temporary reverting r41817
...
(http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053370.html ). It's
causing SPASS to fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41938 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 01:13:55 +00:00
Chris Lattner
36597a5ddb
Change llvm.gcroot to not init the root to null at runtime, this prevents
...
using it for live-in values etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41879 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-12 17:53:10 +00:00
Duncan Sands
b84abcd77d
Turn calls to trampolines into calls to the underlying
...
nested function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41844 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 14:35:41 +00:00
Devang Patel
c3957d1983
Avoid negative logic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41829 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 01:10:45 +00:00
Devang Patel
d35ed2c16d
Refactor code into a separate method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41826 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 00:42:56 +00:00
Devang Patel
964be45e7c
Clear split info object.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41823 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 00:23:56 +00:00
Devang Patel
4f12c5f615
Split condition does not have to be ICmpInst in all cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41822 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 00:12:56 +00:00
Devang Patel
ba32a5f3cc
Check all terminators inside loop.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41821 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 23:57:58 +00:00
Chris Lattner
50d9d77643
remove some dead code, this is handled by constant folding.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41819 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 23:46:29 +00:00
Devang Patel
0c0f7c935b
Swap exit condition operands if it works.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41817 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 23:34:06 +00:00
Chris Lattner
8d9455d4e4
Prevent tailcallelim from breaking "recursive" calls to builtins.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41804 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 20:58:55 +00:00
Devang Patel
9c7a9f186c
Filter exit conditions which are not yet handled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41800 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 18:33:42 +00:00
Devang Patel
bc533cd128
Require SCEV before LCSSA.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41798 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 18:08:23 +00:00
Chris Lattner
a54c7eb157
Don't zap back to back volatile load/stores
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41759 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-07 05:33:03 +00:00
Dale Johannesen
43421b3dd7
Next round of APFloat changes.
...
Use APFloat in UpgradeParser and AsmParser.
Change all references to ConstantFP to use the
APFloat interface rather than double. Remove
the ConstantFP double interfaces.
Use APFloat functions for constant folding arithmetic
and comparisons.
(There are still way too many places APFloat is
just a wrapper around host float/double, but we're
getting there.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41747 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 18:13:44 +00:00
Nick Lewycky
455e176ffb
Use isTrueWhenEqual. Thanks Chris!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41741 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 02:40:25 +00:00
Nick Lewycky
5a5ff9d7df
When the two operands of an icmp are equal, there are five possible predicates
...
that would make the icmp true. Fixes PR1637.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41740 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 01:10:22 +00:00
Chuck Rose III
c331d305a0
Forgot to obey 80 column rule. Fixing that.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41725 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 20:36:41 +00:00
Chuck Rose III
d4af306aec
Added default parameters to GetElementPtrInstr constructor call. Visual Studio 2k5 was getting confused and was unable to compile it. Suspected compiler error.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41721 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 16:54:38 +00:00
David Greene
b8f74793b9
Update GEP constructors to use an iterator interface to fix
...
GLIBCXX_DEBUG issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41697 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04 15:46:09 +00:00
Evan Cheng
4e9c473c4d
Fix a gcroot lowering bug.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41668 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-01 02:00:51 +00:00
Chris Lattner
92103de8ce
Cut off crazy computation. This helps PR1622 slightly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41522 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-28 04:23:55 +00:00
Devang Patel
1cd39a4f6e
Use simpler test to filter loops.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41516 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 21:34:31 +00:00
David Greene
f1355a55f8
Update InvokeInst to work like CallInst
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41506 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 19:04:21 +00:00
Owen Anderson
5dfcf4318a
Don't DSe volatile stores.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41456 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-26 21:14:47 +00:00