llvm/lib/Transforms/IPO
Chris Lattner 9440db8866 Implement ArgumentPromotion/aggregate-promote.ll
This allows pointers to aggregate objects, whose elements are only read, to
be promoted and passed in by element instead of by reference.  This can
enable a LOT of subsequent optimizations in the caller function.

It's worth pointing out that this stuff happens a LOT of C++ programs, because
objects in templates are generally passed around by reference.  When these
templates are instantiated on small aggregate or scalar types, however, it is
more efficient to pass them in by value than by reference.

This transformation triggers most on C++ codes (e.g. 334 times on eon), but
does happen on C codes as well.  For example, on mesa it triggers 72 times,
and on gcc it triggers 35 times.  this is amazingly good considering that
we are using 'basicaa' so far.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12202 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 01:04:36 +00:00
..
ArgumentPromotion.cpp Implement ArgumentPromotion/aggregate-promote.ll 2004-03-08 01:04:36 +00:00
ConstantMerge.cpp Merging constants can cause further room for improvement. Iterate until 2003-12-28 07:19:08 +00:00
DeadArgumentElimination.cpp rename the "exceptional" destination of an invoke instruction to the 'unwind' dest 2004-02-08 21:44:31 +00:00
DeadTypeElimination.cpp Since LLVM uses structure type equivalence, it isn't useful to keep around 2004-02-26 20:02:23 +00:00
ExtractFunction.cpp Finegrainify namespacification 2003-11-21 21:54:22 +00:00
FunctionResolution.cpp Start using the new and improve interface to FunctionType arguments 2004-02-09 04:14:01 +00:00
GlobalDCE.cpp Finegrainify namespacification 2003-11-21 21:54:22 +00:00
GlobalOpt.cpp setcond instructions don't have aliasing implications. 2004-02-27 18:09:25 +00:00
Inliner.cpp Finegrainify namespacification 2003-11-21 21:45:31 +00:00
Inliner.h Put all LLVM code into the llvm namespace, as per bug 109. 2003-11-11 22:41:34 +00:00
InlineSimple.cpp Considering that CI is not even IN SCOPE here, I wooda thought the compiler 2003-11-21 21:57:29 +00:00
Internalize.cpp Finegrainify namespacification 2003-11-21 21:54:22 +00:00
IPConstantPropagation.cpp Finegrainify namespacification 2003-11-21 21:54:22 +00:00
LowerSetJmp.cpp rename the "exceptional" destination of an invoke instruction to the 'unwind' dest 2004-02-08 21:44:31 +00:00
Makefile Added LLVM copyright notice to Makefiles. 2003-10-20 22:26:57 +00:00
MutateStructTypes.cpp Adjust to the changed StructType interface. In particular, getElementTypes() is gone. 2004-02-09 04:37:31 +00:00
Parallelize.cpp * Remove function to find "main" in a Module, there's a method for that 2004-02-29 23:09:10 +00:00
PruneEH.cpp Intrinsic functions cannot throw 2004-02-13 16:46:46 +00:00
RaiseAllocations.cpp Implement RaiseAllocations/FreeCastConstantExpr.ll 2003-12-07 01:42:08 +00:00
SimpleStructMutation.cpp Don't depend on auto data conversion 2004-02-09 05:16:30 +00:00