https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64991
Bug ID: 64991
Summary: Issues depending on atomic variable type.
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: u17263 at att dot net
Created attachment 34709
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34709&action=edit
test case
When a variable associated with an atomic update is an integer, the generated
gimple will contain a __atomic_fetch_add_4 (). The emitted instruction on an
x86 will load the value, add to it, and write it as a single atomic
instruction.
However, when the variable is a real, the generated gimple will contain an
atomic operation to load the variable (__atomic_load_4), the addition
operation, and an atomic operation to store the variable
(__sync_val_compare_and_swap_4). Given the integer example, I would have
expected that in the case of the real, that the load, addition, and store would
be an entire critical section.