http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994
--- Comment #31 from rguenther at suse dot de <rguenther at suse dot de> 2012-02-01 16:00:41 UTC --- On Wed, 1 Feb 2012, ebotcazou at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51994 > > --- Comment #30 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-02-01 > 15:53:25 UTC --- > > I'm not sure it's the best thing to do (adjusting 'offset' by > > a BITS_PER_UNIT multiple instead of whatever the caller would like the > > most). > > Only the callers would know how they want to adjust for negative bitpos. > > I don't think the callers are prepared for a reference outside the base > object, > so there must be a offset. And I don't see what they would want to do with a > negative bitpos, apart from translating it somehow or other. The base object can be an indirect reference, so yes, there doesn't have to be an overall positive offset (well, yes, to the _real_ object, but we don't see that). Yes, you have to adjust for a negative _bit_ position. But fact is the whole constant offset (even if negative) is usually returned via bitpos.