Bitcode: Don't optimize constants when preserving use-list order
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 25 Jul 2014 16:13:16 +0000 (16:13 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 25 Jul 2014 16:13:16 +0000 (16:13 +0000)
commit15eb0ab28d7ee4d95bc9a8c1350811c3c473ba08
tree5c4e0dc488b5d007cb07a1c7aec738f057670b87
parent2f040114357b62d74e4f0f6adb52a61bf2c5165f
Bitcode: Don't optimize constants when preserving use-list order

`ValueEnumerator::OptimizeConstants()` creates forward references within
the constant pools, which makes predicting constants' use-list order
difficult.  For now, just disable the optimization.

This can be re-enabled in the future in one of two ways:

  - Enable a limited version of this optimization that doesn't create
    forward references.  One idea is to categorize constants by their
    "height" and make that the top-level sort.

  - Enable it entirely.  This requires predicting how may times each
    constant will be recreated as its operands' and operands' operands'
    (etc.) forward references get resolved.

This is part of PR5680.

llvm-svn: 213953
llvm/lib/Bitcode/Writer/ValueEnumerator.cpp