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); } ```