[Bug c/69480] New: Bad error message on assigning to read-only
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 26 03:50:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69480
Bug ID: 69480
Summary: Bad error message on assigning to read-only
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: segher at gcc dot gnu.org
CC: hector at marcansoft dot com
Target Milestone: ---
This testcase from Hector
====
#include <stdint.h>
struct fail {
uint32_t *p;
};
#define __ACCESS_ONCE(x) ({ \
typeof(x) __var = ( typeof(x)) 0; \
(volatile const typeof(x) *)&(x); })
#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))
void fail(struct fail *s, uint32_t p) {
ACCESS_ONCE(*s->p) = p;
}
====
results in
fail.c: In function 'fail':
fail.c:13:21: error: assignment of read-only location
'*__builtin_memcpy(&<U1950>, &({...}))'
ACCESS_ONCE(*s->p) = p;
^
There is no __builtin_memcpy in the program source, but the <U1950> is
even more worrying (the number is different on different runs).
More information about the Gcc-bugs
mailing list