https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80730
Bug ID: 80730 Summary: bogus initializer element is not computable at load time converting a string to bool Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- GCC rejects the following initialization of a bool variable with a string literal but accepts (albeit with a warning) an initialization of a bool variable with an array. It seems that it should accept both since they're both address constants. $ cat t.c && gcc -O2 -S -Wall t.c extern char a[]; const char *s1 = ""; const char *s2 = a; _Bool b1 = ""; _Bool b2 = a; t.c:6:12: error: initializer element is not computable at load time _Bool b1 = ""; ^~ t.c:7:1: warning: the address of ‘a’ will always evaluate as ‘true’ [-Waddress] _Bool b2 = a; ^~~~~