Make VAARG promotion work correctly with large funky
authorDuncan Sands <baldrick@free.fr>
Mon, 3 Nov 2008 20:22:12 +0000 (20:22 +0000)
committerDuncan Sands <baldrick@free.fr>
Mon, 3 Nov 2008 20:22:12 +0000 (20:22 +0000)
commitd821726a91000c1b2de7ca8aafdc27b1a311741b
treed4d3c6980336936feced2b0ad8f55c1166108486
parent20cd13f54f2b1a6307016c47330045de13b140e2
Make VAARG promotion work correctly with large funky
sized integers like i129, and also reduce the number
of assumptions made about how vaarg is implemented.
This still doesn't work correctly for small integers
like (eg) i1 on x86, since x86 passes each of them
(essentially an i8) in a 4 byte stack slot, so the
pointer needs to be advanced by 4 bytes not by 1 byte
as now.  But this is no longer a LegalizeTypes problem
(it was also wrong in LT before): it is a bug in the
operation expansion in LegalizeDAG: now LegalizeTypes
turns an i1 vaarg into an i8 vaarg which would work
fine if only the i8 vaarg was turned into correct code
later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58635 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp