[Bug c/113050] New: -Wincompatible-pointer-types emitted as a warning, not an error, for __atomic_load
sjames at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Dec 17 10:23:21 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113050
Bug ID: 113050
Summary: -Wincompatible-pointer-types emitted as a warning, not
an error, for __atomic_load
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
CC: arsen at gcc dot gnu.org, fw at gcc dot gnu.org
Target Milestone: ---
Noticed this when building udisks. I suspect this is actually a dupe of
PR69404, but I felt it was worth filing separately given it's interesting to
have it warn-but-not-error.
The expectation was that this would error (b/c of new 14 default), not just
warn:
```
$ gcc -c udisksenumtypes.i
udisksenumtypes.i: In function ‘udisks_get_type’:
udisksenumtypes.i:5:3: warning: argument 2 of ‘__atomic_load’ discards
‘volatile’ qualifier [-Wincompatible-pointer-types]
5 | __atomic_load(in, &out, 5);
| ^~~~~~~~~~~~~
```
It does the right thing with explicit -Werror=:
```
$ gcc -c udisksenumtypes.i -Werror=incompatible-pointer-types
udisksenumtypes.i: In function ‘udisks_get_type’:
udisksenumtypes.i:5:3: error: argument 2 of ‘__atomic_load’ discards ‘volatile’
qualifier [-Werror=incompatible-pointer-types]
5 | __atomic_load(in, &out, 5);
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
```
udisksenumtypes.i:
```
volatile long out;
volatile long* in;
void udisks_get_type() {
__atomic_load(in, &out, 5);
}
```
More information about the Gcc-bugs
mailing list