https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89490
--- Comment #11 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- I agree, that it would be better to not put any mergeable things in a block object. If section anchors are ever used on a string constant, it is going to fail. A constant with size = 0 is possible, for instance in Ada an empty string really empty. These should not go into mergeable sections. output_constant ignores the merge_strings parameter, therefore I would not assume there is a zero termination Instead of: if (thissize == 0 || TREE_STRING_POINTER (str) [thissize - 1] != '\0') size = MAX (size, thissize + 1); maybe: if (thissize != 0 && TREE_STRING_POINTER (str) [thissize - 1] != '\0') size = MAX (size, thissize + 1);