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

            Bug ID: 83638
           Summary: atomic_is_lock_free should return false on pa-risc
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mikulas at artax dot karlin.mff.cuni.cz
  Target Milestone: ---

The pa-risc architecture doesn't have atomic instructions, all atomic writes or
modifications require taking a lock. These locks are generated properly,
however, the function atomic_is_lock_free incorrectly returns 1 for primitive
data types.

#include <stdio.h>
#include <stdatomic.h>

_Atomic int a1;
_Atomic long long a2;
_Atomic struct {
        int x;
        int y;
        int z;
} a3;

int main(void)
{
        printf("%d\n", atomic_is_lock_free(&a1));
        printf("%d\n", atomic_is_lock_free(&a2));
        printf("%d\n", atomic_is_lock_free(&a3));
        return 0;
}

When you run it, it prints
1
1
0

Reply via email to