mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-14 15:39:00 +00:00
30ba5690cf
First, it allows SRA of globals that have embedded arrays, implementing GlobalOpt/globalsra-partial.llx. This comes up infrequently, but does allow, for example, deleting several stores to dead parts of globals in dhrystone. Second, this implements GlobalOpt/malloc-promote-*.llx, which is the following nifty transformation: Basically if a global pointer is initialized with malloc, and we can tell that the program won't notice, we transform this: struct foo *FooPtr; ... FooPtr = malloc(sizeof(struct foo)); ... FooPtr->A FooPtr->B Into: struct foo FooPtrBody; ... FooPtrBody.A FooPtrBody.B This comes up occasionally, for example, the 'disp' global in 183.equake (where the xform speeds the CBE version of the program up from 56.16s to 52.40s (7%) on apoc), and the 'desired_accept', 'fixLRBT', 'macroArray', & 'key_queue' globals in 300.twolf (speeding it up from 22.29s to 21.55s (3.4%)). The nice thing about this xform is that it exposes the resulting global to global variable optimization and makes alias analysis easier in addition to eliminating a few loads. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16916 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
ArgumentPromotion.cpp | ||
ConstantMerge.cpp | ||
DeadArgumentElimination.cpp | ||
DeadTypeElimination.cpp | ||
ExtractFunction.cpp | ||
FunctionResolution.cpp | ||
GlobalDCE.cpp | ||
GlobalOpt.cpp | ||
Inliner.cpp | ||
Inliner.h | ||
InlineSimple.cpp | ||
Internalize.cpp | ||
IPConstantPropagation.cpp | ||
LoopExtractor.cpp | ||
LowerSetJmp.cpp | ||
Makefile | ||
Makefile.am | ||
PruneEH.cpp | ||
RaiseAllocations.cpp |