This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/80823] [8 Regression] ICE: verify_flow_info failed


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

--- Comment #4 from Peter Bergner <bergner at gcc dot gnu.org> ---
Stupid thinko on my part.  An extra increment is causing us to skip some of the
case labels in the switch statement, which only causes an ICE/problem if the
skipped case happens to point to the same unreachable block as an earlier case
label.  In that case, the earlier case has already removed the unreachable
block, but skipped case label still points to it, leading to the verify_flow
ICE.
I'm testing the following:

Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c      (revision 248375)
+++ gcc/tree-cfg.c      (working copy)
@@ -1726,7 +1726,6 @@ group_case_labels_stmt (gswitch *stmt)
            remove_edge_and_dominated_blocks (base_edge);
          gimple_switch_set_label (stmt, base_index, NULL_TREE);
          new_size--;
-         i++;
        }
     }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]