On 03/14/2015 07:02 AM, Alan Modra wrote:
This is Richi's prototype patch in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36043#c23 with fixes for
blocks larger than one reg, big-endian, and BLOCK_REG_PADDING.
I also removed the operand_subword_force since we may as well let
narrow_bit_field_mem in extract_bit_field do that for us. It is
necessary to do the BLOCK_REG_PADDING shift after we've loaded the
block or else repeat the bit-field extraction in that case.
Bootstrapped and regression tested (-m32 and -m64) x86_64-linux and
powerpc64-linux. OK to apply?
I'll also throw together a testcase or three. For execute tests I'm
thinking of using sbrk to locate an odd sized struct such that access
past the end segfaults, rather than mmap/munmap as was done in the
pr36043 testcase. Does that sound reasonable?
PR target/65408
PR target/58744
PR middle-end/36043
* calls.c (load_register_parameters): Don't load past end of
mem unless suitably aligned.
I think this is probably a stage1 item. Richi, Jakub, Joseph, do any of
you think we should try to push this into gcc-5?
jeff