diff --git a/regression/ansi-c/goto_convert_switch_range_empty/test.desc b/regression/ansi-c/goto_convert_switch_range_empty/test.desc index 2718746733c..936c704a3e2 100644 --- a/regression/ansi-c/goto_convert_switch_range_empty/test.desc +++ b/regression/ansi-c/goto_convert_switch_range_empty/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE main.c ^EXIT=0$ diff --git a/regression/ansi-c/goto_convert_switch_range_empty_nodefault/main.c b/regression/ansi-c/goto_convert_switch_range_empty_nodefault/main.c new file mode 100644 index 00000000000..af7b57486c3 --- /dev/null +++ b/regression/ansi-c/goto_convert_switch_range_empty_nodefault/main.c @@ -0,0 +1,10 @@ +int main() +{ + int x; + switch(x) + { + case 10 ... 0: + break; + } + return 0; +} diff --git a/regression/ansi-c/goto_convert_switch_range_empty_nodefault/test.desc b/regression/ansi-c/goto_convert_switch_range_empty_nodefault/test.desc new file mode 100644 index 00000000000..936c704a3e2 --- /dev/null +++ b/regression/ansi-c/goto_convert_switch_range_empty_nodefault/test.desc @@ -0,0 +1,8 @@ +CORE +main.c + +^EXIT=0$ +^SIGNAL=0$ +-- +^warning: ignoring +^Invariant check failed diff --git a/src/goto-programs/goto_convert.cpp b/src/goto-programs/goto_convert.cpp index 12837784077..7fce24e1d24 100644 --- a/src/goto-programs/goto_convert.cpp +++ b/src/goto-programs/goto_convert.cpp @@ -1249,7 +1249,8 @@ void goto_convertt::convert_switch( { const caset &case_ops=case_pair.second; - assert(!case_ops.empty()); + if (case_ops.empty()) + continue; exprt guard_expr=case_guard(argument, case_ops);