llvm-6502/include/llvm/Analysis
Chris Lattner b374b90e81 Fix PR4834, a tricky case where the inliner would resolve an
indirect function pointer, inline it, then go to delete the body.
The problem is that the callgraph had other references to the function,
though the inliner had no way to know it, so we got a dangling pointer
and an invalid iterator out of the deal.

The fix to this is pretty simple: stop the inliner from deleting the
function by knowing that there are references to it.  Do this by making
CallGraphNodes contain a refcount.  This requires moving deletion of 
available_externally functions to the module-level cleanup sweep where
it belongs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80533 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31 03:15:49 +00:00
..
AliasAnalysis.h Global Aliases are not identifiable objects. 2009-08-27 17:52:56 +00:00
AliasSetTracker.h eliminate all 80-col violations that I have introduced in my recent checkins (and some others more) 2009-08-27 23:44:33 +00:00
CallGraph.h Fix PR4834, a tricky case where the inliner would resolve an 2009-08-31 03:15:49 +00:00
CaptureTracking.h
CFGPrinter.h
ConstantFolding.h Make LLVMContext and LLVMContextImpl classes instead of structs. 2009-08-11 17:45:13 +00:00
ConstantsScanner.h eliminate all 80-col violations that I have introduced in my recent checkins (and some others more) 2009-08-27 23:44:33 +00:00
DebugInfo.h Reapply 79977. 2009-08-28 23:24:31 +00:00
DominatorInternals.h
Dominators.h Be somewhat more consistent about const qualifiers. 2009-08-27 17:54:15 +00:00
FindUsedTypes.h Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
Interval.h Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
IntervalIterator.h eliminate all 80-col violations that I have introduced in my recent checkins (and some others more) 2009-08-27 23:44:33 +00:00
IntervalPartition.h Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
IVUsers.h remove a few dead insertion methods. 2009-08-24 02:39:26 +00:00
LibCallAliasAnalysis.h More MSVC fixes -- class/struct conflicts. 2009-05-12 21:55:29 +00:00
LibCallSemantics.h
LiveValues.h
LoopDependenceAnalysis.h remove a few dead insertion methods. 2009-08-24 02:39:26 +00:00
LoopInfo.h Minor code simplification. 2009-08-27 17:59:08 +00:00
LoopPass.h Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
LoopVR.h Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
MemoryDependenceAnalysis.h Fix a typo in a comment. 2009-07-31 19:26:54 +00:00
Passes.h Create a ScalarEvolution-based AliasAnalysis implementation. 2009-08-26 14:53:06 +00:00
PointerTracking.h remove a few dead insertion methods. 2009-08-24 02:39:26 +00:00
PostDominators.h Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
ProfileInfo.h Move ProfileInfo::Edge's operator<< out of line. Among other benefits, 2009-08-26 15:56:38 +00:00
ProfileInfoLoader.h Remove unnecessary ProfileInfoLoader methods. 2009-08-05 15:55:56 +00:00
ProfileInfoTypes.h
ScalarEvolution.h remove a few dead insertion methods. 2009-08-24 02:39:26 +00:00
ScalarEvolutionExpander.h Various comment and whitespace cleanups. 2009-08-20 16:42:55 +00:00
ScalarEvolutionExpressions.h Rename hasNoUnsignedOverflow and hasNoSignedOverflow to hasNoUnsignedWrap 2009-08-20 17:11:38 +00:00
SparsePropagation.h eliminate the "Value" printing methods that print to a std::ostream. 2009-08-23 04:37:46 +00:00
Trace.h eliminate the "Value" printing methods that print to a std::ostream. 2009-08-23 04:37:46 +00:00
ValueTracking.h Handle TargetData with const. 2009-08-27 17:51:25 +00:00
Verifier.h