On 23 November 2011 23:43, Richard Henderson <r...@redhat.com> 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. > > This has passed initial sniff test from a cross-compiler, and is undergoing > full testing on an armv7 host. Hopefully results will be ready tomorrow. > > In the meantime, please review.
Hi Rchard, Can you explain the code: + if (mod_f != MEMMODEL_RELAXED) + emit_label (label2); + + arm_post_atomic_barrier (mod_s); + + if (mod_f == MEMMODEL_RELAXED) + emit_label (label2); +} in the case of the existing __sync_* will it always end up doing the label and the sync as Michael's pr 48126 indicated and my patch moved it? (It's not at all clear to me what the ordering requirements of ldrex/strex are from the ARM ARM). Dave