[InstCombine] Correct the check for vector GEPs
authorMatthew Simpson <mssimpso@codeaurora.org>
Wed, 29 Mar 2017 18:23:08 +0000 (18:23 +0000)
committerMatthew Simpson <mssimpso@codeaurora.org>
Wed, 29 Mar 2017 18:23:08 +0000 (18:23 +0000)
commitc8f0aeccda9914cc0f0b0c792d80788df246512a
treed7c27723579a2bfc43afca3ab8347d111a108042
parente144b723727f4264cc0a22656191156cf1b8edb1
[InstCombine] Correct the check for vector GEPs

Some of the GEP combines (e.g., descaling) can't handle vector GEPs. We have an
existing check that attempts to bail out if given a vector GEP. However, the
check only tests the GEP's pointer operand. A GEP results in a vector of
pointers if at least one of its operands is vector-typed (e.g., its pointer
operand could be a scalar, but its index could be a vector). We should just
check the type of the GEP itself. This should fix PR32414.

Reference: https://bugs.llvm.org/show_bug.cgi?id=32414
Differential Revision: https://reviews.llvm.org/D31470

llvm-svn: 299017
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/test/Transforms/InstCombine/getelementptr.ll