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

--- Comment #6 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Tobias Burnus from comment #3)
> (In reply to Thomas Schwinge from comment #1)
> > Confirmed ever since commit 48c6cac9caea1dc7c5f50ad3a736f6693e74a11b
... which added the testcase (by porting it from the C testcase).

Testing with the reduced testcase shows:

* FAILS since r12-5504-gd986ff50b4aad62c45d7ac62915e072643ddfca1
  "Split return functionality of get_non_stale_global_range." (Nov 24, 2021)
  with the ICE mentioned before:
    during GIMPLE pass: walloca  in gimple_range_global

Before that version, it also gave an ICE - but at a different place:

* FAILS since r12-2891-gd0befed793b94f3f407be44e6f69f81a02f5f073
  "openmp: Add support for OpenMP 5.1 masked construct" (Aug 12, 2021)
  with the ICE
     during GIMPLE pass: ssa
     input.f90:15:3: internal compiler error: Segmentation fault
     15 | end
        |   ^
     0xf6e773 crash_signal
            ../../repos/gcc/gcc/toplev.c:328
     0x11b9652 verify_ssa(bool, bool)
         ../../repos/gcc/gcc/tree-ssa.c:1076
     0xe7ecf5 execute_function_todo
        ../../repos/gcc/gcc/passes.c:2049

* Before that commit and with the current GCC 11 branch, it works.

 * * *

Current-mainline backtrace:

during GIMPLE pass: walloca
gcc/foo.f90:13:14:

   13 |     ll = ll +1
      |              ^
internal compiler error: Segmentation fault
0x100e6d3 crash_signal
        ../../repos/gcc/gcc/toplev.cc:322
0x132478e gimple_range_global(tree_node*)
        ../../repos/gcc/gcc/value-query.cc:424
0x1d2d9e0 ranger_cache::get_global_range(irange&, tree_node*) const
        ../../repos/gcc/gcc/gimple-range-cache.cc:923
0x1d2d9e0 ranger_cache::get_global_range(irange&, tree_node*) const
        ../../repos/gcc/gcc/gimple-range-cache.cc:919
0x1d2975a gimple_ranger::export_global_ranges()
        ../../repos/gcc/gcc/gimple-range.cc:474
0x1d6bdbc pass_walloca::execute(function*)
        ../../repos/gcc/gcc/gimple-ssa-warn-alloca.cc:381

Or in the debugger:

0x000000000132478e in gimple_range_global (name=name@entry=0x7ffff6fd1798) at
../../repos/gcc/gcc/gimple.h:1243
1243      return gs->code == GIMPLE_PHI;

(gdb) bt
#0  0x000000000132478e in gimple_range_global (name=name@entry=0x7ffff6fd1798)
at ../../repos/gcc/gcc/gimple.h:1243
#1  0x0000000001d2d9e1 in ranger_cache::get_global_range (this=0x28,
name=0x7ffff6fd1798, r=...) at ../../repos/gcc/gcc/gimple-range-cache.cc:923
#2  ranger_cache::get_global_range (this=this@entry=0x2f09288, r=...,
name=name@entry=0x7ffff6fd1798) at
../../repos/gcc/gcc/gimple-range-cache.cc:919
#3  0x0000000001d2975b in gimple_ranger::export_global_ranges
(this=this@entry=0x2f09260) at ../../repos/gcc/gcc/gimple-range-fold.h:98
#4  0x0000000001d6bdbd in pass_walloca::execute (this=0x2ee9050,
fun=0x7ffff71be000) at ../../repos/gcc/gcc/gimple-ssa-warn-alloca.cc:381
#5  0x0000000000f1c1bc in execute_one_pass (pass=0x2ee9050) at
../../repos/gcc/gcc/passes.cc:2637
#6  0x0000000000f1c980 in execute_pass_list_1 (pass=0x2ee9050) at
../../repos/gcc/gcc/passes.cc:2737
#7  0x0000000000f1c9bd in execute_pass_list (fn=0x7ffff71be000, pass=<optimized
out>) at ../../repos/gcc/gcc/passes.cc:2748
#8  0x0000000000b4d379 in cgraph_node::analyze (this=0x7ffff71c1000) at
../../repos/gcc/gcc/context.h:48
#9  0x0000000000b50592 in analyze_functions (first_time=<optimized out>) at
../../repos/gcc/gcc/cgraphunit.cc:1240
#10 0x0000000000b51082 in symbol_table::finalize_compilation_unit
(this=0x7ffff6fcd000) at ../../repos/gcc/gcc/cgraphunit.cc:2500
#11 0x000000000100e9f4 in compile_file () at ../../repos/gcc/gcc/toplev.cc:479
#12 0x0000000000919e1c in do_compile (no_backend=false) at
../../repos/gcc/gcc/toplev.cc:2168

Reply via email to