llvm-6502/lib/Transforms/IPO
Chandler Carruth 99650c9088 Move the CodeExtractor utility to a dedicated header file / source file,
and expose it as a utility class rather than as free function wrappers.

The simple free-function interface works well for the bugpoint-specific
pass's uses of code extraction, but in an upcoming patch for more
advanced code extraction, they simply don't expose a rich enough
interface. I need to expose various stages of the process of doing the
code extraction and query information to decide whether or not to
actually complete the extraction or give up.

Rather than build up a new predicate model and pass that into these
functions, just take the class that was actually implementing the
functions and lift it up into a proper interface that can be used to
perform code extraction. The interface is cleaned up and re-documented
to work better in a header. It also is now setup to accept the blocks to
be extracted in the constructor rather than in a method.

In passing this essentially reverts my previous commit here exposing
a block-level query for eligibility of extraction. That is no longer
necessary with the more rich interface as clients can query the
extraction object for eligibility directly. This will reduce the number
of walks of the input basic block sequence by quite a bit which is
useful if this enters the normal optimization pipeline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156163 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-04 10:18:49 +00:00
..
ArgumentPromotion.cpp
CMakeLists.txt
ConstantMerge.cpp
DeadArgumentElimination.cpp
ExtractGV.cpp Improve the handling of available_externally and llvm.global_ctors. 2011-06-09 14:38:09 +00:00
FunctionAttrs.cpp
GlobalDCE.cpp
GlobalOpt.cpp GlobalOpt: If we have an inbounds GEP from a ConstantAggregateZero global that we just determined to be constant, replace all loads from it with a zero value. 2012-03-28 14:50:09 +00:00
InlineAlways.cpp Fix a pretty scary bug I introduced into the always inliner with 2012-04-01 10:21:05 +00:00
Inliner.cpp Add two statistics to help track how we are computing the inline cost. 2012-04-11 10:15:10 +00:00
InlineSimple.cpp Remove a bunch of empty, dead, and no-op methods from all of these 2012-03-31 12:48:08 +00:00
Internalize.cpp Add a Fixme. 2012-04-16 04:23:52 +00:00
IPConstantPropagation.cpp
IPO.cpp C API functions must be able to see their extern "C" definitions, or it will be impossible to call them from C. 2011-08-19 01:36:54 +00:00
LLVMBuild.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
LoopExtractor.cpp Move the CodeExtractor utility to a dedicated header file / source file, 2012-05-04 10:18:49 +00:00
Makefile
MergeFunctions.cpp
PartialInlining.cpp Move the CodeExtractor utility to a dedicated header file / source file, 2012-05-04 10:18:49 +00:00
PassManagerBuilder.cpp By default, use Early-CSE instead of GVN for vectorization cleanup. 2012-04-13 17:15:33 +00:00
PruneEH.cpp
StripDeadPrototypes.cpp Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
StripSymbols.cpp