On 23/11/11 23:43, Richard Henderson wrote:
> This transformation is quite a bit more dramatic than the other ports
> because ARM was not splitting the code sequences post-reload.
> Indeed, the failure to split resulted in a distinctly odd coding
> style where fake output routines were used to compute the length of
> the code sequence.  This all seemed highly sub-optimal, so I rewrote
> everything from scratch.
> 


That was deliberate.  The ARM ARM says that it is unsafe to have any
other load or store instruction between an LDREX and its matching STREX.
 If we split these instructions before the final scheduling operation
then there is a chance of that happening, which could lead to programs
failing to execute through such a block on some systems.

R.

Reply via email to