| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
dropped. This shrinks libllvmgcc.dylib another 67K
llvm-svn: 28975
|
| |
|
|
| |
llvm-svn: 28972
|
| |
|
|
|
|
|
|
|
|
| |
will be profitable. This is mainly to remove some cases where excessive
unswitching would result in long compile times and/or huge generated code.
Once someone comes up with a better heuristic that avoids these cases, this
should be switched out.
llvm-svn: 28962
|
| |
|
|
| |
llvm-svn: 28961
|
| |
|
|
|
|
| |
blocks.
llvm-svn: 28959
|
| |
|
|
|
|
|
|
|
| |
Remove the Function pointer cast in these calls, converting it to
a cast of argument.
%tmp60 = tail call int cast (int (ulong)* %str to int (int)*)( int 10 )
%tmp60 = tail call int cast (int (ulong)* %str to int (int)*)( uint %tmp51 )
llvm-svn: 28953
|
| |
|
|
|
|
|
| |
Be more careful when updating Phi nodes after eliminating dead switch cases. Fix
proposed by Chris.
llvm-svn: 28947
|
| |
|
|
|
|
|
| |
remove the struct return argument of a csret function, even if it is obviously
dead.
llvm-svn: 28943
|
| |
|
|
|
|
| |
will make Shootout-C/nestedloop faster.
llvm-svn: 28924
|
| |
|
|
| |
llvm-svn: 28914
|
| |
|
|
|
|
|
|
|
| |
advantage
of LCSSA. This results several times the number of unswitchings occurring on
tests such and timberwolfmc, unix-tbl, and ldecod.
llvm-svn: 28912
|
| |
|
|
|
|
|
|
| |
"LCSSA" phi node causes indvars to break dominance properties. This fixes
causes indvars to avoid inserting aggressive code in this case, instead
indvars should be fixed to be more aggressive in the face of lcssa phi's.
llvm-svn: 28850
|
| |
|
|
| |
llvm-svn: 28834
|
| |
|
|
|
|
|
|
| |
printf("%s\n", str) -> puts(str)
printf("%c", c) -> putchar(c)
Also fixed fprintf(file, "%c", c) -> fputc(c, file)
llvm-svn: 28815
|
| |
|
|
| |
llvm-svn: 28814
|
| |
|
|
|
|
| |
idioms into bswap intrinsics.
llvm-svn: 28803
|
| |
|
|
|
|
| |
bug exposed by the recent lcssa work.
llvm-svn: 28779
|
| |
|
|
|
|
|
| |
LCSSA is still the slowest pass when gccas'ing 252.eon, but now it only takes
39s instead of 289s. :)
llvm-svn: 28776
|
| |
|
|
| |
llvm-svn: 28774
|
| |
|
|
|
|
|
|
|
| |
not handling PHI nodes correctly when determining if a value was live-out.
This patch reduces the number of detected live-out variables in the testcase
from 6565 to 485.
llvm-svn: 28771
|
| |
|
|
| |
llvm-svn: 28759
|
| |
|
|
| |
llvm-svn: 28758
|
| |
|
|
|
|
|
|
| |
If a single exit block has multiple predecessors within the loop, it will
appear in the exit blocks list more than once. LCSSA needs to take that into
account so that it doesn't double process that exit block.
llvm-svn: 28750
|
| |
|
|
|
|
| |
unsafe parts.
llvm-svn: 28748
|
| |
|
|
|
|
| |
MultiSource/Benchmarks/Prolangs-C/bison (and perhaps others).
llvm-svn: 28747
|
| |
|
|
|
|
|
|
| |
preserves
LCSSA.
llvm-svn: 28739
|
| |
|
|
|
|
|
|
| |
assert
on this.
llvm-svn: 28738
|
| |
|
|
|
|
|
|
| |
post-increment value, should be first cast to the appropriated type (to the
type of the common expr). Otherwise, the rewrite of a use based on (common +
iv) may end up with an incorrect type.
llvm-svn: 28735
|
| |
|
|
|
|
| |
require LCSSA.
llvm-svn: 28734
|
| |
|
|
| |
llvm-svn: 28714
|
| |
|
|
|
|
| |
PPC/altivec
llvm-svn: 28698
|
| |
|
|
| |
llvm-svn: 28694
|
| |
|
|
| |
llvm-svn: 28693
|
| |
|
|
| |
llvm-svn: 28680
|
| |
|
|
| |
llvm-svn: 28678
|
| |
|
|
|
|
| |
actually going on.
llvm-svn: 28677
|
| |
|
|
| |
llvm-svn: 28664
|
| |
|
|
|
|
|
| |
to link in the implementation. Thanks to Anton Korobeynikov for figuring out
what was going on here.
llvm-svn: 28660
|
| |
|
|
| |
llvm-svn: 28642
|
| |
|
|
|
|
|
|
|
|
| |
code (while cloning) it often gets the branch/switch instructions. Since it
knows that edges of the CFG are dead, it need not clone (or even look) at
the obviously dead blocks. This should speed up the inliner substantially on
code where there are lots of inlinable calls to functions with constant
arguments. On C++ code in particular, this kicks in.
llvm-svn: 28641
|
| |
|
|
| |
llvm-svn: 28632
|
| |
|
|
| |
llvm-svn: 28619
|
| |
|
|
|
|
|
| |
reimplement getValueDominatingFunction to walk the DominanceTree rather than
just searching blindly.
llvm-svn: 28618
|
| |
|
|
|
|
|
| |
but for sub, it really does! Fix fixes a miscompilation of fibheap_cut in
llvmgcc4.
llvm-svn: 28600
|
| |
|
|
| |
llvm-svn: 28599
|
| |
|
|
|
|
|
| |
is now theoretically feature-complete. It has not, however, been thoroughly
test, and is still considered experimental.
llvm-svn: 28529
|
| |
|
|
|
|
|
| |
other calculations on each individually, rather than trying to delay it and do
them all at the end.
llvm-svn: 28527
|
| |
|
|
|
|
|
|
| |
the iterated Dominance Frontier of the loop-closure Phi's. This is the
second phase of the LCSSA pass. The third phase (coming soon) will be to
update all uses of loop variables to use the loop-closure Phi's instead.
llvm-svn: 28524
|
| |
|
|
|
|
| |
ldecod, lencod, and SPASS.
llvm-svn: 28523
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
makes it so that it constant folds instructions on the fly. This is good
for several reasons:
0. Many instructions are constant foldable after inlining, particularly if
inlining a call with constant arguments.
1. Without this, the inliner has to allocate memory for all of the instructions
that can be constant folded, then a subsequent pass has to delete them. This
gets the job done without this extra work.
2. This makes the inliner *pass* a bit more aggressive: in particular, it
partially solves a phase order issue where the inliner would inline lots
of code that folds away to nothing, but think that the resultant function
is big because of this code that will be gone. Now the code never exists.
This is the first part of a 2-step process. The second part will be smart
enough to see when this implicit constant folding propagates a constant into
a branch or switch instruction, making CFG edges dead.
This implements Transforms/Inline/inline_constprop.ll
llvm-svn: 28521
|