[Bug c/83222] New: [ 8 regression] Inconsistent "initializer element is not constant" error
ian at airs dot com
gcc-bugzilla@gcc.gnu.org
Thu Nov 30 01:07:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83222
Bug ID: 83222
Summary: [ 8 regression] Inconsistent "initializer element is
not constant" error
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: critical
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: ian at airs dot com
Target Milestone: ---
The handling of this C program recently changed:
const char _expA = 0x42;
void __cgo_f_1_4(void) { static const double x = (double)(_expA); }
With a GCC built on October 10, 2017, I get this:
foo.c: In function ‘__cgo_f_1_4’:
foo.c:2:50: error: initializer element is not constant
void __cgo_f_1_4(void) { static const double x = (double)(_expA); }
^
With this morning's sources (November 29, 2017) the program compiles without
error.
Perhaps that change is OK. But this similar program still fails:
const char _expA = 0x42;
double __cgodebug_floats[] = {
_expA,
1
};
foo1.c:3:3: error: initializer element is not constant
_expA,
^~~~~
foo1.c:3:3: note: (near initialization for ‘__cgodebug_floats[0]’)
I think that if we are going to change the behavior for the first program, we
need to change the behavior for the second one.
More information about the Gcc-bugs
mailing list