Access size problem on ARM architecture

Richard Earnshaw rearnsha@arm.com
Mon May 21 02:39:00 GMT 2001


> >No warnings or errors are displayed.
> >The generated assembly file contains:
> >
> >        ldr    r3, [r2, #24]!  @ loadhi
> >
> >which is wrong since r3 is loaded with a 32 bit value instead of 16 bit.
> >This leads to wrong behaviour of the while statement.
> 
> You should find that this instruction is followed by:
> 
> 	mov	r3, r3, lsl #16
> 	cmp	r0, e3, lsr #16
> 
> or some similar construct that drops the unwanted bits from the register.
> If you are seeing genuinely wrong behaviour, please post a complete testcase 
> that exhibits the problem.
> 

Phil,

We already have one: PR-2623.  I don't have time to look into it at the 
moment, but the solution is to split the loadhi_preinc and loadhi_predec 
patterns into armv4 and non-armv4 variants, remembering that the offsets 
for ldrh are more limited than for ldr.

Similar fixes may also be needed for the post-inc peepholes.

R.



More information about the Gcc-bugs mailing list