Fix PromoteIntRes_BUILD_VECTOR crash with i1 vectors
authorHal Finkel <hfinkel@anl.gov>
Mon, 8 Jul 2013 06:16:58 +0000 (06:16 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 8 Jul 2013 06:16:58 +0000 (06:16 +0000)
commit63e7a38c8980d70197ecdb9ba54b79b87c7b064d
tree6b7cb7f93339b3eb90387b74f3688b672c553481
parent5310cdbcc909a7c35d4c7df0fd5703850a9db2a5
Fix PromoteIntRes_BUILD_VECTOR crash with i1 vectors

This fixes a bug (found by llvm-stress) in
DAGTypeLegalizer::PromoteIntRes_BUILD_VECTOR where it assumed that the result
type would always be larger than the original operands. This is not always
true, however, with boolean vectors. For example, promoting a node of type v8i1
(where the operands will be of type i32, the type to which i1 is promoted) will
yield a node with a result vector element type of i16 (and operands of type
i32). As a result, we cannot blindly assume that we can ANY_EXTEND the operands
to the result type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185794 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
test/CodeGen/PowerPC/bv-pres-v8i1.ll [new file with mode: 0644]