https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86532
--- Comment #17 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- Martin, in expr.c at string_constant() there is an impossible check: if (TREE_CODE (init) == CONSTRUCTOR) { if (TREE_CODE (arg) != ARRAY_REF && TREE_CODE (arg) == COMPONENT_REF && TREE_CODE (arg) == MEM_REF) return NULL_TREE; it can't be COMPONENT_REF and MEM_REF at the same time.