https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99383
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org Status|UNCONFIRMED |NEW Keywords| |missed-optimization Last reconfirmed| |2021-03-04 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Same for -fPIE. The reason is: Bailing out - value from a case would need runtime relocations. reloc = initializer_constant_valid_p (val, TREE_TYPE (val)); if ((flag_pic && reloc != null_pointer_node) || (!flag_pic && reloc == NULL_TREE)) { if (reloc) reason = "value from a case would need runtime relocations"; reloc is a STRING_CST here. Not sure why it says 'runtime relocation' or what that should be. It's a reloc in .rodata to sth in .string.