[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting
authorAdam Nemet <anemet@apple.com>
Sat, 31 May 2014 16:23:20 +0000 (16:23 +0000)
committerAdam Nemet <anemet@apple.com>
Sat, 31 May 2014 16:23:20 +0000 (16:23 +0000)
commit8fb9cfe141ea0ad6e8ec695273b2b8f901ea24c0
tree3d4088eae9ae56896d255f6990aaf3eb169e7f37
parentaa8deedcb2abd03ce312a240d6faa28c2733363d
[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting

DAG cycle detection is only enabled with ENABLE_EXPENSIVE_CHECKS.  However we
can run it just before we would crash in order to provide more informative
diagnostics.

Now in addition to the "Overran sorted position" message we also get the Node
printed if a cycle was detected.

Tested by building several configs: Debug+Assert, Debug+Assert+Check (this is
ENABLE_EXPENSIVE_CHECKS), Release+Assert and Release.  Also tried that the
AssignTopologicalOrder assert produces the expected results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209977 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAG.h
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp