llvm-6502/lib/CodeGen/SelectionDAG
Nate Begeman 1aa1972c63 Fix some faulty logic in the libcall inserter.
Since calls return more than one value, don't bail if one of their uses
happens to be a node that's not an MVT::Other when following the chain
from CALLSEQ_START to CALLSEQ_END.

Once we've found a CALLSEQ_START, we can just return; there's no need to
tail-recurse further up the graph.

Most importantly, just because something only has one use doesn't mean we
should use it's one use to follow from start to end.  This faulty logic
caused us to follow a chain of one-use FP operations back to a much earlier
call, putting a cycle in the graph from a later start to an earlier end.

This is a better fix that reverting to the workaround committed earlier
today.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23620 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-04 02:10:55 +00:00
..
DAGCombiner.cpp Add FP versions of the binary operators, keeping the int and fp worlds seperate. 2005-09-28 22:28:18 +00:00
LegalizeDAG.cpp Fix some faulty logic in the libcall inserter. 2005-10-04 02:10:55 +00:00
Makefile
ScheduleDAG.cpp Refactor gathering node info and emission. 2005-10-03 12:30:32 +00:00
SelectionDAG.cpp Add FP versions of the binary operators, keeping the int and fp worlds seperate. 2005-09-28 22:28:18 +00:00
SelectionDAGISel.cpp Fix VC++ warnings. 2005-10-01 03:57:14 +00:00
SelectionDAGPrinter.cpp add a method 2005-10-01 00:17:07 +00:00
TargetLowering.cpp initialize new flag 2005-09-27 22:13:56 +00:00