llvm/lib/Transforms/IPO
Matthijs Kooijman 477f5a2f11 Restructure ArgumentPromotion a bit. Instead of just having a single boolean
that says "unconditional loads from this argument are safe", we now keep track
of the safety per set of indices from which loads happen. This prevents
ArgPromotion from promoting loads that aren't really valid. As an added effect,
this will now disregard the the type of the indices passed to a GEP, so
"load GEP %A, i32 1" and "load GEP %A, i64 1" will result in a single argument,
not two.

This fixes PR2598, for which a testcase has been added as well.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54159 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-29 10:00:13 +00:00
..
ArgumentPromotion.cpp Restructure ArgumentPromotion a bit. Instead of just having a single boolean 2008-07-29 10:00:13 +00:00
ConstantMerge.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
DeadArgumentElimination.cpp Allow deadargelim to change return types even though now values were dead. This 2008-07-15 14:42:31 +00:00
DeadTypeElimination.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
ExtractGV.cpp Factor code to copy global value attributes like 2008-05-26 19:58:59 +00:00
GlobalDCE.cpp Use find instead of lower_bound. 2008-07-11 20:58:19 +00:00
GlobalOpt.cpp Make GlobalOpt preserve address spaces when scalar replacing aggregate globals. 2008-07-17 11:59:53 +00:00
IndMemRemoval.cpp API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.) 2008-05-16 19:29:10 +00:00
Inliner.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
InlineSimple.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
Internalize.cpp Rename a few variables to be more consistent. 2008-06-24 09:14:10 +00:00
IPConstantPropagation.cpp Enable first-class aggregates support. 2008-07-23 00:34:11 +00:00
LoopExtractor.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
LowerSetJmp.cpp Use Instruction::eraseFromParent(). 2008-06-21 22:08:46 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00
PruneEH.cpp Less conservative verison of previous patch, 2008-05-16 23:18:52 +00:00
RaiseAllocations.cpp Use Instruction::eraseFromParent(). 2008-06-21 22:08:46 +00:00
StripDeadPrototypes.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
StripSymbols.cpp Clean up the use of static and anonymous namespaces. This turned up 2008-05-13 00:00:25 +00:00
StructRetPromotion.cpp Enable first-class aggregates support. 2008-07-23 00:34:11 +00:00