https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112866
Bug ID: 112866 Summary: error: compound literal qualified by address-space qualifier Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: gjl at gcc dot gnu.org Target Milestone: --- Suppose we want to define an array of pointers to some address-space, like in: #define FSTR(X) ((const __flash char[]) { X }) const __flash char *p[] = { FSTR("cat"), FSTR("dogs") }; // OK This works as expected, but not when done in a function: #define FSTR(X) ((const __flash char[]) { X }) const __flash char *p[] = { FSTR("cat"), FSTR("dogs") }; // OK void func (void) { static const __flash char *q1[] = { FSTR("cat"), FSTR("dogs") }; // Error const __flash char *q2[] = { FSTR("cat"), FSTR("dogs") }; // Error } addr-space.c: In function 'func': addr-space.c:7:5: error: compound literal qualified by address-space qualifier 7 | static const __flash char *q1[] = { FSTR("cat"), FSTR("dogs") }; // Error | ^~~~~~ addr-space.c:7:5: error: compound literal qualified by address-space qualifier addr-space.c:8:5: error: compound literal qualified by address-space qualifier 8 | const __flash char *q2[] = { FSTR("cat"), FSTR("dogs") }; // Error | ^~~~~ addr-space.c:8:5: error: compound literal qualified by address-space qualifier Compile with avr-gcc addr-space.c -S Target: avr Configured with: ../../source/gcc-master/configure --target=avr --disable-nls --with-dwarf2 --with-gnu-as --with-gnu-ld --disable-shared --enable-checking=release --enable-languages=c,c++ Thread model: single Supported LTO compression algorithms: zlib gcc version 14.0.0 20231205 (experimental) (GCC)