as instrucciones de DMB se pueden omitir de forma segura en ARM Cortex M4

stoy revisando el ensamblaje generado por GCC para un ARM Cortex M4, y noté queatomic_compare_exchange_weak obtiene dosDMB instrucciones insertadas alrededor de la condición (compiladas con GCC 4.9 usando-std=gnu11 -O2):

// if (atomic_compare_exchange_weak(&address, &x, y))
dmb      sy
ldrex    r0, [r3]
cmp      r0, r2
itt      eq
strexeq  lr, r1, [r3]
cmpeq.w  lr, #0
dmb      sy
bne.n    ...

Desde el guía de programación de instrucciones de barrera para ARM Cortex M4 Establece que

Omitir la instrucción DMB o DSB en los ejemplos de la Figura 41 y la Figura 42 no causaría ningún error porque los procesadores Cortex-M:

no reordenar transferencias de memoriano permita que se superpongan dos transferencias de escritura.

¿Hay alguna razón por la que no se puedan eliminar estas instrucciones cuando se apunta a Cortex M?

Respuestas a la pregunta(1)

Su respuesta a la pregunta