aboutsummaryrefslogtreecommitdiff
path: root/gcc/c/c-array-notation.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2015-11-26 21:57:40 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2015-11-26 21:57:40 +0000
commit1e5d7fd638ca44b45e9d1a49da0b39e6d0cb1fc7 (patch)
tree5b030f1af1cc3c775d28f45c3afdaf55906e4e93 /gcc/c/c-array-notation.c
parent4d6ca95b9a1deb58a5f4ff81d90ee3a0d75ed330 (diff)
downloadgcc-1e5d7fd638ca44b45e9d1a49da0b39e6d0cb1fc7.zip
gcc-1e5d7fd638ca44b45e9d1a49da0b39e6d0cb1fc7.tar.gz
gcc-1e5d7fd638ca44b45e9d1a49da0b39e6d0cb1fc7.tar.bz2
[PR67753] adjust for padding when bypassing memory in assign_parm_setup_block
Storing a register in memory as a full word and then accessing the same memory address under a smaller-than-word mode amounts to right-shifting of the register word on big endian machines. So, if BLOCK_REG_PADDING chooses upward padding for BYTES_BIG_ENDIAN, and we're copying from the entry_parm REG directly to a pseudo, bypassing any stack slot, perform the shifting explicitly. This fixes the miscompile of function_return_val_10 in gcc.target/aarch64/aapcs64/func-ret-4.c for target aarch64_be-elf introduced in the first patch for 67753. for gcc/ChangeLog PR rtl-optimization/67753 PR rtl-optimization/64164 * function.c (assign_parm_setup_block): Right-shift upward-padded big-endian args when bypassing the stack slot. From-SVN: r230985
Diffstat (limited to 'gcc/c/c-array-notation.c')
0 files changed, 0 insertions, 0 deletions