rs6000: Small varargs for BE SVR4 (PR61729, PR77850)
authorSegher Boessenkool <segher@kernel.crashing.org>
Sat, 21 Jan 2017 03:11:49 +0000 (04:11 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Sat, 21 Jan 2017 03:11:49 +0000 (04:11 +0100)
commit80b40b87845bf2293f2bfdd215bbf758db5ceff4
tree5c20c044c795bb09eb45f74fd42a8ce07bd44293
parent5e0075702264e98580f8487c12ebcf7eb8382d1b
rs6000: Small varargs for BE SVR4 (PR61729, PR77850)

The varargs code for SVR4 puts all (integer) arguments in 4-byte slots.
When it then reads an item from there as something not a multiple of 4
bytes, it needs to adjust the address if big endian.  We didn't yet do
that.

This fixes the g++.dg/abi/scoped1.C, gcc.dg/compat/scalar-by-value-4,
and gcc.dg/compat/scalar-return-4 testcases.

PR target/61729
PR target/77850
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
read from, for big endian.

From-SVN: r244740
gcc/ChangeLog
gcc/config/rs6000/rs6000.c