Avoid exponential blow-up when printing DAGs.
authorBob Wilson <bob.wilson@apple.com>
Wed, 2 Mar 2011 23:38:06 +0000 (23:38 +0000)
committerBob Wilson <bob.wilson@apple.com>
Wed, 2 Mar 2011 23:38:06 +0000 (23:38 +0000)
commit254c63e33678a64eaadfd658b79ed362c8572147
treed04eafe6efe4ec799472366667038a7d4d80a058
parenta2cae58411b36a58f658f9402e8d039add31ae4d
Avoid exponential blow-up when printing DAGs.

David Greene changed CannotYetSelect() to print the full DAG including multiple
copies of operands reached through different paths in the DAG.  Unfortunately
this blows up exponentially in some cases.  The depth limit of 100 is way too
high to prevent this -- I'm seeing a message string of 150MB with a depth of
only 40 in one particularly bad case, even though the DAG has less than 200
nodes.  Part of the problem is that the printing code is following chain
operands, so if you fail to select an operation with a chain, the printer will
follow all the chained operations back to the entry node.

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