| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 21500
|
| |
|
|
| |
llvm-svn: 21495
|
| |
|
|
|
|
|
|
|
|
|
| |
Completely rework the 'setcc (cast x to larger), y' code. This code has
the advantage of implementing setcc.ll:test19 (being more general than
the previous code) and being correct in all cases.
This allows us to unxfail 2004-11-27-SetCCForCastLargerAndConstant.ll,
and close PR454.
llvm-svn: 21491
|
| |
|
|
| |
llvm-svn: 21480
|
| |
|
|
|
|
|
| |
any constant RHS, not just a constant integer RHS. This implements
select.ll:test17
llvm-svn: 21470
|
| |
|
|
| |
llvm-svn: 21427
|
| |
|
|
|
|
| |
the same block as the setjmp. Thanks to Greg Pettyjohn for noticing this!
llvm-svn: 21403
|
| |
|
|
| |
llvm-svn: 21393
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4 ; <bool> [#uses=1]
%tmp.6 = cast bool %shortcirc_val to int ; <int> [#uses=1]
into this:
%shortcirc_val = or bool %tmp.1, %tmp.4 ; <bool> [#uses=1]
%tmp.6 = cast bool %shortcirc_val to int ; <int> [#uses=1]
not this:
%tmp.4.cast = cast bool %tmp.4 to int ; <int> [#uses=1]
%tmp.6 = select bool %tmp.1, int 1, int %tmp.4.cast ; <int> [#uses=1]
llvm-svn: 21389
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
convert this:
%tmp.1 = seteq int %i, 0 ; <bool> [#uses=1]
br bool %tmp.1, label %shortcirc_done, label %shortcirc_next
shortcirc_next: ; preds = %entry
%tmp.4 = seteq int %j, 0 ; <bool> [#uses=1]
br label %shortcirc_done
shortcirc_done: ; preds = %shortcirc_next, %entry
%shortcirc_val = phi bool [ %tmp.4, %shortcirc_next ], [ true, %entry ] ; <bool> [#uses=1]
to this:
%tmp.1 = seteq int %i, 0 ; <bool> [#uses=1]
%tmp.4 = seteq int %j, 0 ; <bool> [#uses=1]
%shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4 ; <bool> [#uses=1]
... which is later simplified by instcombine into an or.
llvm-svn: 21388
|
| |
|
|
|
|
|
|
| |
Make IPSCCP strip off dead constant exprs that are using functions, making
them appear as though their address is taken. This allows us to propagate
some more pool descriptors, lowering the overhead of pool alloc.
llvm-svn: 21363
|
| |
|
|
| |
llvm-svn: 21354
|
| |
|
|
| |
llvm-svn: 21320
|
| |
|
|
|
|
|
|
|
| |
This pass forward branches through conditions when it can show that the
conditions is either always true or false for a predecessor. This currently
only handles the most simple cases of this, but is successful at threading
across 2489 branches and 65 switch instructions in 176.gcc, which isn't bad.
llvm-svn: 21306
|
| |
|
|
| |
llvm-svn: 21253
|
| |
|
|
| |
llvm-svn: 21152
|
| |
|
|
|
|
|
|
| |
(X-Y)-X --> -Y
A + (B - A) --> B
(B - A) + A --> B
llvm-svn: 21138
|
| |
|
|
|
|
|
| |
This occurs several dozen times in specint2k, particularly in crafty and gcc
apparently.
llvm-svn: 21136
|
| |
|
|
| |
llvm-svn: 21134
|
| |
|
|
|
|
| |
pointer analysis.
llvm-svn: 20916
|
| |
|
|
|
|
|
| |
createPromoteMemoryToRegisterPass() to be consistent with other pass
creation functions.
llvm-svn: 20885
|
| |
|
|
|
|
| |
This prevents crashes on some programs when using -ds-aa -licm.
llvm-svn: 20831
|
| |
|
|
|
|
| |
a pointer value out of a loop causing it to be duplicated.
llvm-svn: 20828
|
| |
|
|
| |
llvm-svn: 20788
|
| |
|
|
|
|
| |
Bill Wendling!!
llvm-svn: 20649
|
| |
|
|
| |
llvm-svn: 20603
|
| |
|
|
|
|
|
|
| |
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
|
| |
|
|
| |
llvm-svn: 20506
|
| |
|
|
|
|
| |
hopefully not breaking too many other things.
llvm-svn: 20505
|
| |
|
|
| |
llvm-svn: 20501
|
| |
|
|
| |
llvm-svn: 20497
|
| |
|
|
| |
llvm-svn: 20494
|
| |
|
|
|
|
|
| |
a nested loop. This fixes Transforms/LoopUnroll/2005-03-06-BadLoopInfoUpdate.ll
and PR532
llvm-svn: 20493
|
| |
|
|
| |
llvm-svn: 20479
|
| |
|
|
| |
llvm-svn: 20467
|
| |
|
|
|
|
| |
GEPs.
llvm-svn: 20466
|
| |
|
|
| |
llvm-svn: 20463
|
| |
|
|
|
|
| |
sparc, and testcase Regression/Transforms/InstCombine/2005-03-04-ShiftOverflow.ll
llvm-svn: 20445
|
| |
|
|
|
|
| |
power of two. This emphatically includes the zeroeth power of two.
llvm-svn: 20429
|
| |
|
|
|
|
| |
to a "sizeof" expression.
llvm-svn: 20414
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Loop invariant code does not dominate the loop header, but rather
the end of the loop preheader.
* The base for a reduced GEP isn't a constant unless all of its
operands (preceding the induction variable) are constant.
* Allow induction variable elimination for the simple case after all.
Also made changes recommended by Chris for properly deleting
instructions.
llvm-svn: 20383
|
| |
|
|
|
|
|
| |
for reasons explained in the comments, I also deactivated this code as it needs
more thought.
llvm-svn: 20367
|
| |
|
|
| |
llvm-svn: 20360
|
| |
|
|
|
|
| |
prime time.
llvm-svn: 20358
|
| |
|
|
| |
llvm-svn: 20352
|
| |
|
|
| |
llvm-svn: 20343
|
| |
|
|
| |
llvm-svn: 20334
|
| |
|
|
|
|
|
|
| |
This does a simple form of "jump threading", which eliminates CFG edges that
are provably dead. This triggers 90 times in the external tests, and
eliminating CFG edges is always always a good thing! :)
llvm-svn: 20300
|
| |
|
|
| |
llvm-svn: 20289
|
| |
|
|
| |
llvm-svn: 20276
|