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

            Bug ID: 120277
           Summary: Crash at -O2: in upper_bound, at value-range.h:1181
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yunboni at smail dot nju.edu.cn
  Target Milestone: ---

This code crashes at -O2: 

int a, b;
int c(int d, long e) {
  switch (d) {
  case 129:
    a = 1;
  case 128:
    break;
  default:
    return 1;
  }
  *(int *)e = 0;
}
void f(int d, long e) { c(d, e); }
void g() {
  int h = b * sizeof(int);
  f(h + 7, h);
}
void main() {}

Compiler Explorer: https://godbolt.org/z/9f9jcon4q

Crash:

<source>:18:1: internal compiler error: in upper_bound, at value-range.h:1181
   18 | void main() {}
      | ^~~~

Backtrace:

0x2618675 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
        ???:0
0x26363e6 internal_error(char const*, ...)
        ???:0
0x9f3274 fancy_abort(char const*, int, char const*)
        ???:0
0x232440f fold_using_range::range_of_range_op(vrange&,
gimple_range_op_handler&, fur_source&)
        ???:0
0x2324d12 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&,
tree_node*)
        ???:0
0x230d643 gimple_ranger::range_of_stmt(vrange&, gimple*, tree_node*)
        ???:0
0x14f75b3 range_query::value_of_stmt(gimple*, tree_node*)
        ???:0
0x1361117 substitute_and_fold_dom_walker::before_dom_children(basic_block_def*)
        ???:0
0x22af8f7 dom_walker::walk(basic_block_def*)
        ???:0
0x136007b substitute_and_fold_engine::substitute_and_fold(basic_block_def*)
        ???:0
0x14bc58e execute_ranger_vrp(function*, bool)
        ???:0

Bisected to
https://github.com/gcc-mirror/gcc/commit/c40a4cc2d943d8572a62f21d3eb1d4171e51d5ac

Reply via email to