[DAG] Don't pull the binary operation though the shift if the operands have opaque...
authorJuergen Ributzka <juergen@apple.com>
Thu, 6 Feb 2014 04:09:06 +0000 (04:09 +0000)
committerJuergen Ributzka <juergen@apple.com>
Thu, 6 Feb 2014 04:09:06 +0000 (04:09 +0000)
commit58bc0ca37b66bf49bc20661fd2748319a06808c3
tree8eeca97141e70f357a7aca2a01af8b3f85f86528
parentc7ac256d525988388c79c8c821a6c2e5d144ae68
[DAG] Don't pull the binary operation though the shift if the operands have opaque constants.

During DAGCombine visitShiftByConstant assumes that certain binary operations
with only constant operands can always be folded successfully. This is no longer
true when the constant is opaque. This commit fixes visitShiftByConstant by not
performing the optimization for opaque constants. Otherwise we would end up in
an infinite DAGCombine loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200900 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/Generic/2014-02-05-OpaqueConstants.ll [new file with mode: 0644]