llvm-6502/lib/Transforms/IPO
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
..
ArgumentPromotion.cpp Fix some nasty callgraph dangling pointer problems in 2009-08-31 00:19:58 +00:00
CMakeLists.txt Update CMake files. 2009-07-21 17:43:20 +00:00
ConstantMerge.cpp Use hasDefinitiveInitializer() instead of testing the same thing 2009-08-19 18:20:44 +00:00
DeadArgumentElimination.cpp remove a few DOUTs here and there. 2009-08-23 06:35:02 +00:00
DeadTypeElimination.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
ExtractGV.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
FunctionAttrs.cpp Fix some nasty callgraph dangling pointer problems in 2009-08-31 00:19:58 +00:00
GlobalDCE.cpp Remove dead metadata. 2009-08-11 06:31:57 +00:00
GlobalOpt.cpp eliminate the "Value" printing methods that print to a std::ostream. 2009-08-23 04:37:46 +00:00
IndMemRemoval.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
InlineAlways.cpp Adjustments to last patch based on review. 2009-01-09 01:30:11 +00:00
Inliner.cpp Fix PR4834, a tricky case where the inliner would resolve an 2009-08-31 03:15:49 +00:00
InlineSimple.cpp Use hasDefinitiveInitializer() instead of testing the same thing 2009-08-19 18:20:44 +00:00
Internalize.cpp eliminate uses of cerr() 2009-08-23 07:05:07 +00:00
IPConstantPropagation.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
IPO.cpp add a bunch more passes to the C bindings (PR3734), patch by 2009-03-06 16:52:18 +00:00
LoopExtractor.cpp convert LoopInfo.h and GraphWriter.h to use raw_ostream 2009-08-23 07:19:13 +00:00
LowerSetJmp.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
MergeFunctions.cpp Rename Instruction::isIdenticalTo to Instruction::isIdenticalToWhenDefined, 2009-08-25 22:11:20 +00:00
PartialInlining.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
PartialSpecialization.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
PruneEH.cpp Fix some nasty callgraph dangling pointer problems in 2009-08-31 00:19:58 +00:00
RaiseAllocations.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
StripDeadPrototypes.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
StripSymbols.cpp Reapply 79977. 2009-08-28 23:24:31 +00:00
StructRetPromotion.cpp Fix some nasty callgraph dangling pointer problems in 2009-08-31 00:19:58 +00:00