OSDN Git Service

Fix some faulty logic in the libcall inserter.
authorNate Begeman <natebegeman@mac.com>
Tue, 4 Oct 2005 02:10:55 +0000 (02:10 +0000)
committerNate Begeman <natebegeman@mac.com>
Tue, 4 Oct 2005 02:10:55 +0000 (02:10 +0000)
commit1aa1972c63fb6b940b11250f7c12bcb368026014
treef930f11338f5edb52976bde9c7e79ca2aa40003a
parentc182a88aec0158b3fe4cbc89e3f6056109526206
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
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp