Fix a bug in the code that builds SDNodes from vector GEPs.
authorNadav Rotem <nadav.rotem@intel.com>
Tue, 28 Feb 2012 11:54:05 +0000 (11:54 +0000)
committerNadav Rotem <nadav.rotem@intel.com>
Tue, 28 Feb 2012 11:54:05 +0000 (11:54 +0000)
commit21ef70ed4f655151a983788ce634787c995c7e2f
treeb8189ce088b7d0fca77e142567e60aeabf9126b1
parentbb481f882093fb738d2bb15610c79364bada5496
Fix a bug in the code that builds SDNodes from vector GEPs.

When the GEP index is a vector of pointers, the code that calculated the size
of the element started from the vector type, and not the contained pointer type.
As a result, instead of looking at the data element pointed by the vector, this
code used the size of the vector. This works for 32bit members (on 32bit
systems), but not for other types. Added code to peel the vector type and
added a test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151626 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
test/CodeGen/X86/vector-gep.ll