llvm/lib/Transforms/IPO
Chris Lattner 159528702a The inliner has traditionally not considered call sites
that appear due to inlining a callee as candidates for
futher inlining, but a recent patch made it do this if
those call sites were indirect and became direct.

Unfortunately, in bizarre cases (see testcase) doing this
can cause us to infinitely inline mutually recursive
functions into callers not in the cycle.  Fix this by
keeping track of the inline history from which callsite
inline candidates got inlined from.

This shouldn't affect any "real world" code, but is required
for a follow on patch that is coming up next.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102822 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-01 01:05:10 +00:00
..
ArgumentPromotion.cpp Fix rdar://7879828 - crash in CallGraph, a self host issue. 2010-04-20 00:46:50 +00:00
CMakeLists.txt IPO needs ScalarOpts and InstCombine in its libs 2010-04-14 23:42:23 +00:00
ConstantMerge.cpp 1. modernize the constantmerge pass, using densemap/smallvector. 2010-02-12 18:17:23 +00:00
DeadArgumentElimination.cpp Preserve debug info attached with call instruction while eliminating dead argument. 2010-04-30 20:23:54 +00:00
DeadTypeElimination.cpp Uniformize the names of type predicates: rather than having isFloatTy and 2010-02-15 16:12:20 +00:00
ExtractGV.cpp
FunctionAttrs.cpp introduce a new CallGraphSCC class, and pass it around 2010-04-16 22:42:17 +00:00
GlobalDCE.cpp
GlobalOpt.cpp use abstract accessors to CallInst 2010-04-20 13:13:04 +00:00
InlineAlways.cpp Try to keep the cached inliner costs around for a bit longer for big functions. 2010-03-09 23:02:17 +00:00
Inliner.cpp The inliner has traditionally not considered call sites 2010-05-01 01:05:10 +00:00
InlineSimple.cpp Try to keep the cached inliner costs around for a bit longer for big functions. 2010-03-09 23:02:17 +00:00
Internalize.cpp don't internalize available_externally functions, they are 2010-04-03 05:24:50 +00:00
IPConstantPropagation.cpp
IPO.cpp Adding IPSCCP and Internalize passes to the C-bindings 2010-04-09 20:43:20 +00:00
LoopExtractor.cpp
LowerSetJmp.cpp Revert 101465, it broke internal OpenGL testing. 2010-04-16 23:37:20 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
MergeFunctions.cpp Kill ModuleProvider and ghost linkage by inverting the relationship between 2010-01-27 20:34:15 +00:00
PartialInlining.cpp refactor the interface to InlineFunction so that most of the in/out 2010-04-22 23:07:58 +00:00
PartialSpecialization.cpp
PruneEH.cpp introduce a new CallGraphSCC class, and pass it around 2010-04-16 22:42:17 +00:00
StripDeadPrototypes.cpp
StripSymbols.cpp Strip new llvm.dbg.value intrinsic. 2010-02-10 21:19:56 +00:00
StructRetPromotion.cpp introduce a new CallGraphSCC class, and pass it around 2010-04-16 22:42:17 +00:00