[DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode...
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Sat, 22 Mar 2014 01:47:22 +0000 (01:47 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Sat, 22 Mar 2014 01:47:22 +0000 (01:47 +0000)
commitd47cb57ab88956197c266df3353347eb31790781
treeb09d18ac4d85405c17bbc2ab48eede93f230124a
parent4696def45d683f1b1ebed8d85688f4c31fce6258
[DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat'

This patch renames method 'isConstantSplat' as 'getConstantSplatValue'
(mainly for consistency reasons), and rewrites its logic to ensure
that we always perform a legal 'cast<ConstantSDNode>'.

Added test shift-combine-crash.ll to verify that DAGCombiner no longer crashes with an assertion failure in the attempt to simplify a vector shift by a vector of all undef counts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204536 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
test/CodeGen/X86/shift-combine-crash.ll [new file with mode: 0644]