https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70889

            Bug ID: 70889
           Summary: memory reordering across loads tagged as
                    memory_order_seq_cst
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lucenadeveloper at gmail dot com
  Target Milestone: ---

Based on my stackoverflow question here,
http://stackoverflow.com/questions/36958372/gcc-reordering-up-across-load-with-memory-order-seq-cst-is-this-allowed,
the RTL optimization stage reorders a nonatomic load up across a load tagged
with memory_order_seq_cst. This violates some synchronizes-with relationships
that should be established between reader and writer threads and breaks many
synchronization primitives such as seqlocks.


Further, this only occurs if the load in question is under 123 bytes. Anything
>= 123 does not get reordered.

Reply via email to