llvm-6502/lib/Transforms/IPO
Chris Lattner e47ba74b07 Implement GlobalConstifier/trivialstore.llx, and also do some
simplifications of the resultant program to avoid making later passes
do it all.

This allows us to constify globals that just have the same constant that
they are initialized stored into them.

Suprisingly this comes up ALL of the freaking time, dozens of times in
SPEC, 30 times in vortex alone.

For example, on 256.bzip2, it allows us to constify these two globals:

%smallMode = internal global ubyte 0             ; <ubyte*> [#uses=8]
%verbosity = internal global int 0               ; <int*> [#uses=49]

Which (with later optimizations) results in the bytecode file shrinking
from 82286 to 69686 bytes!  Lets hear it for IPO :)

For the record, it's nuking lots of "if (verbosity > 2) { do lots of stuff }"
code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16793 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-06 20:57:02 +00:00
..
ArgumentPromotion.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
ConstantMerge.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
DeadArgumentElimination.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
DeadTypeElimination.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
ExtractFunction.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
FunctionResolution.cpp Disable the 'WARNING: Found global types that are not compatible' warning 2004-09-30 00:12:29 +00:00
GlobalDCE.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
GlobalOpt.cpp Implement GlobalConstifier/trivialstore.llx, and also do some 2004-10-06 20:57:02 +00:00
Inliner.cpp Fix the inliner to always delete any edges from the external call node to 2004-09-18 21:37:03 +00:00
Inliner.h Simplify the interface and remove an unneeded #include 2004-05-23 21:21:35 +00:00
InlineSimple.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
Internalize.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
IPConstantPropagation.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
LoopExtractor.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
LowerSetJmp.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
Makefile Added LLVM copyright notice to Makefiles. 2003-10-20 22:26:57 +00:00
PruneEH.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00
RaiseAllocations.cpp 'Pass' should now not be derived from by clients. Instead, they should derive 2004-09-20 04:48:05 +00:00