This is the mail archive of the gcc-patches@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: [ARM] Rewrite ldrex/strex support for atomic optabs


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.


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