https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81194

--- Comment #14 from Peter Bergner <bergner at gcc dot gnu.org> ---
...or maybe simpler even would be:

Index: gcc/cfgexpand.c
===================================================================
--- gcc/cfgexpand.c     (revision 249649)
+++ gcc/cfgexpand.c     (working copy)
@@ -3566,7 +3566,13 @@ expand_gimple_stmt_1 (gimple *stmt)
     case GIMPLE_PREDICT:
       break;
     case GIMPLE_SWITCH:
-      expand_case (as_a <gswitch *> (stmt));
+      {
+       gswitch *swtch = as_a <gswitch *> (stmt);
+       if (gimple_switch_num_labels (swtch) == 1)
+         expand_goto (CASE_LABEL (gimple_switch_default_label (swtch)));
+       else
+         expand_case (swtch);
+      }
       break;
     case GIMPLE_ASM:
       expand_asm_stmt (as_a <gasm *> (stmt));

Reply via email to