Commit Graph

1467 Commits

Author SHA1 Message Date
Chris Lattner
7b52fe7272 Tighten up a check for folding away loads from (newly constant) globals. This
fixes a crash on Transforms/GlobalOpt/2007-11-09-GEP-GEP-Crash.ll and 
rdar://5585488.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 17:33:02 +00:00
Andrew Lenharth
b410df995c Better check
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43897 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 18:45:15 +00:00
Andrew Lenharth
ab9338eb9f Fix PR1780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43893 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 17:39:28 +00:00
Chris Lattner
cf5008a792 Implement PR1777 by detecting dependent phis that
all compute the same value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43777 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-06 21:52:06 +00:00
Dan Gohman
cff550995b Fix an abort in instcombine when folding creates a vector rem instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43743 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 23:16:33 +00:00
Devang Patel
5d01aa484f If a value is incoming from outside the loop then the value does not need remapping and the value is never tracked through LastValueMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43728 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 19:32:30 +00:00
Duncan Sands
3cb3650a27 Change uses of getTypeSize to getABITypeSize, getTypeStoreSize
or getTypeSizeInBits as appropriate in ScalarReplAggregates.
The right change to make was not always obvious, so it would
be good to have an sroa guru review this.  While there I noticed
some bugs, and fixed them: (1) arrays of x86 long double have
holes due to alignment padding, but this wasn't being spotted
by HasStructPadding (renamed to HasPadding).  The same goes
for arrays of oddly sized ints.  Vectors also suffer from this,
in fact the problem for vectors is much worse because basic
vector assumptions seem to be broken by vectors of type with
alignment padding.   I didn't try to fix any of these vector
problems.  (2) The code for extracting smaller integers from
larger ones (in the "int union" case) was wrong on big-endian
machines for integers with size not a multiple of 8, like i1.
Probably this is impossible to hit via llvm-gcc, but I fixed
it anyway while there and added a testcase.  I also got rid of
some trailing whitespace and changed a function name which
had an obvious typo in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43672 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-04 14:43:57 +00:00
Owen Anderson
7ebba512c3 Fix test/Transforms/DeadStoreElimination/PartialStore.ll, which had been
silently failing because of an incorrect run line for some time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43605 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 05:29:16 +00:00
Chris Lattner
e41dcdc964 Fix InstCombine/2007-10-31-StringCrash.ll by removing an obvious
(in hindsight) infinite recursion.  Simplify the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43597 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 02:30:35 +00:00
Chris Lattner
74e012afd3 Fix InstCombine/2007-10-31-RangeCrash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43596 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 02:18:41 +00:00
Dan Gohman
d61de35564 Add support for folding binary operators with vector zero operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43510 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-30 19:00:49 +00:00
Chris Lattner
c20b0fbfcd update testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43452 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 17:06:35 +00:00
Chris Lattner
cee291c505 Model stacksave and stackrestore as both writing memory, since we
don't model their dependences on allocas correctly.  This fixes
PR1745.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43442 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 05:47:52 +00:00
Chris Lattner
b361ec3197 Fix PR1749 and InstCombine/2007-10-28-EmptyField.ll by handling
zero-length fields better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43427 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 02:40:02 +00:00
Chris Lattner
3cb63ddd51 Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators
can have uses too.  Wouldn't it be nice if invoke didn't exist? :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43426 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 02:30:37 +00:00
Chris Lattner
99c65745a2 Implement a couple of foldings for ordered and unordered comparisons,
implementing cases related to PR1738.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43289 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-24 05:38:08 +00:00
Bill Wendling
80629c85f1 Don't branch fold inline asm statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43191 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 21:09:55 +00:00
Devang Patel
3305aaa350 This test now passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43183 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 17:11:01 +00:00
Chris Lattner
a0bc7fc7bd Fix PR1735 and Transforms/DeadArgElim/2007-10-18-VarargsReturn.ll by
fixing some obviously broken code :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43141 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18 18:49:29 +00:00
Devang Patel
cd2858ee16 XFAIL for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43111 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-18 00:48:43 +00:00
Devang Patel
84458323a2 Do not raise free() call that is called through invoke instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43083 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 20:12:58 +00:00
Devang Patel
afc407ea51 Apply "Instead of loading small c string constant, use integer constant directly" transformation while processing load instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43070 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-17 07:24:40 +00:00
Chris Lattner
a79dd432b3 Fix a bug in my patch last night that broke InstCombine/2007-10-12-Crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42920 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12 18:05:47 +00:00
Chris Lattner
cb324cfc32 testcase for PR1728
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42890 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12 05:29:53 +00:00
Devang Patel
f9193de25b Lower memcpy if it makes sense.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42864 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-11 17:21:57 +00:00
Devang Patel
5c4cd0d82e Fix bug in updating dominance frontier after loop
unswitch when frontier includes basic blocks that 
are not inside loop.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42654 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-05 22:29:34 +00:00
Devang Patel
bc2265abe1 Relax unsafe use check. If there is one unconditional use inside the loop then it is safe to promote value even if there is another conditional use inside the loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42493 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-01 18:12:58 +00:00
Devang Patel
a6dff2faeb Handle multiple induction variables.
This fixes PR714.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42309 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-25 18:24:48 +00:00
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
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
Duncan Sands
d7944ca61c Testcase for PR1678.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42171 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-20 18:56:24 +00:00
Nick Lewycky
1af92b05d5 Excuse me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42158 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-20 00:57:00 +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
Gabor Greif
d84c3ab4a7 rename test, it is obviously misspelled
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42108 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-18 21:42:39 +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
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
Chris Lattner
402a7888a9 remove obsolete tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41984 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-15 17:38:04 +00:00
Duncan Sands
bba5037740 Test that a call to a trampoline is turned into a call to
the underlying nested function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41846 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 15:07:50 +00:00
Chris Lattner
75e3bd5bf2 remove obsolete testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41820 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 23:51:41 +00:00
Chris Lattner
a0ef5ed742 Fix a buggy constant folding transformation when handling aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41818 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 23:42:42 +00:00
Dale Johannesen
0c82b9de77 Add missing llvm-dis.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41813 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10 22:47:59 +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
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
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
Dale Johannesen
c2ec2baf3d Change all floating constants that are not exactly
representable to use hex format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41722 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 17:50:36 +00:00
Anton Korobeynikov
9f528e6280 Don't promote volatile loads/stores. This is needed (for example) to handle setjmp/longjmp properly.
This fixes PR1520.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41461 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-26 21:43:30 +00:00
Devang Patel
be97c986e1 Constant split values needs upper bound and lower bound check, just like any other split value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41389 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-25 01:09:14 +00:00