This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [RFC] When adding an offset to a lo_sum containing a symbol, check it is in range of the symbol's alignment


> It almost sounds like you need to be preventing the compiler from
> considering a lo_sum (whatever) as an offsettable memory address when
> the underlying object has had its alignment decreased from its natural
> alignment.
>
> I wouldn't be at all surprised if you do this you won't see the calls
> into adjust_address_1 occurring in the first place.

This would be a little heavy handed as the issue only happens in the case where 
a high part calculation is used by multiple low part calculations.  So far I have 
found that this happens when we have to lower a DI mode load/store into two SI mode 
load/stores where different offsets are applied to each load/store.  I have found a case
in the MIPS backend where this occurs, and also when we are expanding a bitfield
load/store to RTL, but I am sure there are others.  My worry is that it could be 
hard to track down all cases that generate invalid lo_sums, and therefore it could 
be easier to just perform the fixup in adjust_address_1.

Regards,



Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]