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

Reply via email to