http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994

--- Comment #2 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-01-25 
11:15:09 UTC ---
> Negative bitpos is fine - Ada uses that quite extensively and with MEM_REFs
> this just got more prominent.  get_inner_reference is declared to return
> a _signed_ HOST_WIDE_INT bitpos for a reason.

Extensively is a bit of an overstatement, but Ada does use negative offsets.
The recent story about them in build_ref_for_model shows that they can be
problematic though.

> What should happen instead is that store_field needs to adjust the address
> to properly point before the bitfield for calling store_bit_field.  Or the
> latter needs to take signed arguments for bitpos and do the adjustment
> itself.
> 
> Does simply changing the store_bit_field[_1] prototype work for you?

It might also be interesting to find out why we have a negative bitpos here.

Reply via email to