| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
ConstantFoldLoadThroughGEPConstantExpr function in the utils lib.
llvm-svn: 23446
|
| |
|
|
| |
llvm-svn: 21480
|
| |
|
|
| |
llvm-svn: 21427
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
|
| |
|
|
| |
llvm-svn: 19379
|
| |
|
|
|
|
|
|
| |
if the other side is overdefined.
This allows us to fold conditions like: if (X < Y || Y > Z) in some cases.
llvm-svn: 18807
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Actually increment the Statistic for the GV elim optzn
2. When resolving undef branches, only resolve branches in executable blocks,
avoiding marking a bunch of completely dead blocks live. This has a big
impact on the quality of the generated code.
With this patch, we positively rip up vortex, compiling Ut_MoveBytes to a
single memcpy call. In vortex we get this:
12 ipsccp - Number of globals found to be constant
986 ipsccp - Number of arguments constant propagated
1378 ipsccp - Number of basic blocks unreachable
8919 ipsccp - Number of instructions removed
llvm-svn: 18796
|
| |
|
|
| |
llvm-svn: 18795
|
| |
|
|
|
|
| |
non-address-taken global variables.
llvm-svn: 18790
|
| |
|
|
|
|
|
| |
In functions where we fully constant prop the return value, replace all
ret instructions with 'ret undef'.
llvm-svn: 18786
|
| |
|
|
| |
llvm-svn: 18781
|
| |
|
|
| |
llvm-svn: 18776
|
| |
|
|
|
|
|
|
|
| |
This implements SCCP/ipsccp-basic.ll, rips apart Olden/mst (as described in
PR415), and does other nice things.
There is still more to come with this, but it's a start.
llvm-svn: 18752
|
| |
|
|
| |
llvm-svn: 17897
|
| |
|
|
| |
llvm-svn: 17825
|
| |
|
|
| |
llvm-svn: 17824
|
| |
|
|
|
|
|
|
|
|
|
| |
1. Speedup getValueState by having it not consider Arguments. It's better
to just add them before we start SCCP'ing.
2. SCCP can delete the contents of dead blocks. No really, it's ok! This
reduces the size of the IR for subsequent passes, even though
simplifycfg would do the same job. In practice, simplifycfg does not
run until much later than sccp in gccas
llvm-svn: 17820
|
| |
|
|
| |
llvm-svn: 17818
|
| |
|
|
|
|
|
|
|
|
|
|
| |
class. The only changes are minor:
* Do not try to SCCP instructions that return void in the rewrite loop.
This is silly and fool hardy, wasting a map lookup and adding an entry
to the map which is never used.
* If we decide something has an undefined value, rewrite it to undef,
potentially leading to further simplications.
llvm-svn: 17816
|
| |
|
|
|
|
| |
and work better with VC++. Patch contributed by Morten Ofstad!
llvm-svn: 17281
|
| |
|
|
|
|
| |
ignore unreachable instructions
llvm-svn: 17044
|
| |
|
|
|
|
| |
-debug-only!
llvm-svn: 16868
|
| |
|
|
| |
llvm-svn: 16432
|
| |
|
|
|
|
| |
Patch contributed by Paolo Invernizzi. Thanks Paolo!
llvm-svn: 16368
|
| |
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
| |
|
|
| |
llvm-svn: 15487
|
| |
|
|
| |
llvm-svn: 14967
|
| |
|
|
|
|
|
| |
- Replace ConstantPointerRef usage with GlobalValue usage
- Correct isa<Constant> for GlobalValue subclass
llvm-svn: 14947
|
| |
|
|
|
|
|
| |
Speed up SCCP substantially by processing overdefined values quickly. This
patch speeds up SCCP by about 30-40% on large testcases.
llvm-svn: 14861
|
| |
|
|
| |
llvm-svn: 14839
|
| |
|
|
|
|
| |
test/Regression/Transforms/SCCP/calltest.ll
llvm-svn: 12921
|
| |
|
|
|
|
|
| |
types and can have arbitrary 32- and 64-bit integer types indexing into
sequential types.
llvm-svn: 12653
|
| |
|
|
|
|
|
| |
time from 615s to 1.49s on a large testcase that has a gigantic switch statement
that all of the blocks in the function go to (an intepreter).
llvm-svn: 12442
|
| |
|
|
| |
llvm-svn: 12318
|
| |
|
|
|
|
| |
a zero value is the most likely way to cause further simplification, so we do it.
llvm-svn: 12197
|
| |
|
|
| |
llvm-svn: 11474
|
| |
|
|
| |
llvm-svn: 10791
|
| |
|
|
| |
llvm-svn: 10779
|
| |
|
|
|
|
|
|
| |
constants as being "true" when evaluating branches. This was introduced
because we now create constantexprs for the constants instead of failing the
fold.
llvm-svn: 10778
|
| |
|
|
|
|
|
|
| |
* Implement SCCP of load instructions, implementing Transforms/SCCP/loadtest.ll
This allows us to fold expressions like "foo"[2], even if the pointer is only
a conditional constant.
llvm-svn: 10767
|
| |
|
|
| |
llvm-svn: 10763
|
| |
|
|
| |
llvm-svn: 10725
|
| |
|
|
| |
llvm-svn: 9903
|
| |
|
|
|
|
| |
Header files will be on the way.
llvm-svn: 9298
|
| |
|
|
| |
llvm-svn: 9225
|
| |
|
|
| |
llvm-svn: 9027
|
| |
|
|
| |
llvm-svn: 8965
|
| |
|
|
|
|
|
| |
to avoid reprocessing PHI nodes needlessly. This speeds up the big bad PHI
testcase 43%: from 104.9826 to 73.5157s
llvm-svn: 8964
|
| |
|
|
| |
llvm-svn: 8963
|