Change uses of getTypeSize to getABITypeSize, getTypeStoreSize
authorDuncan Sands <baldrick@free.fr>
Sun, 4 Nov 2007 14:43:57 +0000 (14:43 +0000)
committerDuncan Sands <baldrick@free.fr>
Sun, 4 Nov 2007 14:43:57 +0000 (14:43 +0000)
commit3cb3650a278e37aa6378127c51e407d2823139b4
tree436b92ec7ba9208e6565d125d716e194cfdc80f8
parent9aeaf7593bb3c124aa8a5aa9623efcf3db3b0534
Change uses of getTypeSize to getABITypeSize, getTypeStoreSize
or getTypeSizeInBits as appropriate in ScalarReplAggregates.
The right change to make was not always obvious, so it would
be good to have an sroa guru review this.  While there I noticed
some bugs, and fixed them: (1) arrays of x86 long double have
holes due to alignment padding, but this wasn't being spotted
by HasStructPadding (renamed to HasPadding).  The same goes
for arrays of oddly sized ints.  Vectors also suffer from this,
in fact the problem for vectors is much worse because basic
vector assumptions seem to be broken by vectors of type with
alignment padding.   I didn't try to fix any of these vector
problems.  (2) The code for extracting smaller integers from
larger ones (in the "int union" case) was wrong on big-endian
machines for integers with size not a multiple of 8, like i1.
Probably this is impossible to hit via llvm-gcc, but I fixed
it anyway while there and added a testcase.  I also got rid of
some trailing whitespace and changed a function name which
had an obvious typo in it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43672 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetData.h
lib/Transforms/Scalar/ScalarReplAggregates.cpp
test/Transforms/ScalarRepl/2007-11-03-bigendian_apint.ll [new file with mode: 0644]