PR middle-end/52979
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Apr 2012 14:27:08 +0000 (14:27 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Apr 2012 14:27:08 +0000 (14:27 +0000)
commit7e9ba3f31fac3d4e975cf68f8a14aa6252bbfa3d
tree81ecc613d94b359b676a0ac3492e351643109575
parentd10b66d79dacf3ec41be95943a3df193ba0476ed
PR middle-end/52979
* stor-layout.c (get_best_mode): Don't return mode with bitsize
larger than maxbits.  Don't compute maxbits modulo align.
Also check that unit bytes long store at bitpos / unit * unit
doesn't affect bits beyond bitregion_end.
* expmed.c (store_bit_field_1): Avoid trying insv if OP_MODE MEM
would not fit into bitregion_start ... bitregion_end + 1 bit
region.
(store_split_bit_field): Decrease unit close to end of bitregion_end
if access is restricted in order to avoid mutual recursion.

* gcc.c-torture/compile/pr52979-1.c: New test.
* gcc.c-torture/execute/pr52979-1.c: New test.
* gcc.c-torture/execute/pr52979-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186819 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/expmed.c
gcc/stor-layout.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr52979-1.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr52979-1.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr52979-2.c [new file with mode: 0644]