1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-01 16:33:37 +01:00
llvm-mirror/include/llvm/Analysis
Chris Lattner 085c521fe2 Fix some nasty callgraph dangling pointer problems in
argpromotion and structretpromote.  Basically, when replacing
a function, they used the 'changeFunction' api which changes
the entry in the function map (and steals/reuses the callgraph
node).

This has some interesting effects: first, the problem is that it doesn't
update the "callee" edges in any callees of the function in the call graph.
Second, this covers for a major problem in all the CGSCC pass stuff, which 
is that it is completely broken when functions are deleted if they *don't*
reuse a CGN.  (there is a cute little fixme about this though :).

This patch changes the protocol that CGSCC passes must obey: now the CGSCC 
pass manager copies the SCC and preincrements its iterator to avoid passes
invalidating it.  This allows CGSCC passes to mutate the current SCC.  However
multiple passes may be run on that SCC, so if passes do this, they are now
required to *update* the SCC to be current when they return.

Other less interesting parts of this patch are that it makes passes update
the CG more directly, eliminates changeFunction, and requires clients of
replaceCallSite to specify the new callee CGN if they are changing it.

llvm-svn: 80527
2009-08-31 00:19:58 +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 some nasty callgraph dangling pointer problems in 2009-08-31 00:19:58 +00:00
CaptureTracking.h BasicAliasAnalysis and FunctionAttrs were both 2009-01-18 12:19:30 +00:00
CFGPrinter.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
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 Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
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 Revert 51775. 2008-05-30 22:47:19 +00:00
LiveValues.h Add a liveness analysis pass for LLVM IR values. This computes 2009-03-19 17:29:04 +00:00
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 Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
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 Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00