https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84011
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> --- This patch works on the testcase: diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c index c2538908340..a1e85407bf3 100644 --- a/gcc/tree-switch-conversion.c +++ b/gcc/tree-switch-conversion.c @@ -827,16 +827,9 @@ check_final_bb (gswitch *swtch, struct switch_conv_info *info) else { 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"; - else - reason - = "value from a case is not a valid initializer"; - } + if (reloc == NULL_TREE) + reason + = "value from a case is not a valid initializer"; } if (reason) {