[Bug c/61625] New: _Atomic should create a new type
nfxjfg at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Jun 26 19:13:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61625
Bug ID: 61625
Summary: _Atomic should create a new type
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: nfxjfg at gmail dot com
It seems currently, the C11 _Atomic attribute is treated as something like a
storage class (or whatever else as what the compiler treats this internally),
instead of constructing a new type that is separate from non-atomic types.
The C11 standard doesn't seem to require making _Atomic a separate type, but it
does seem to allow for it. For example, the ATOMIC_VAR_INIT standard macro
would not be required if _Atomic is always meant to be assignable from
non-atomic values.
I'm arguing that it would be better to treat _Atomic types as separate, as it
prevents assigning values in a non-atomic way (and also disallowed by C11,
AFAIK). It would help developers writing correct code, and might even give an
advantage to use gcc over other compilers for development.
Interestingly, FreeBSD's stdatomic.h emulation [1] tries something similar: it
makes all atomic types wrapped in structs, which makes them incompatible with
assignment from non-atomic variables. But of course the FreeBSD "trick" is not
strictly correct, since _Atomic types needs to be equal to other _Atomic types
with the same structure.
[1] https://github.com/freebsd/freebsd-head/blob/master/include/stdatomic.h
More information about the Gcc-bugs
mailing list