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

            Bug ID: 127067
           Summary: [17 Regression] ICE in wrf_r in
                    vect_create_constant_vectors
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, needs-bisection, needs-reduction
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pheeck at gcc dot gnu.org
                CC: rguenth at gcc dot gnu.org
            Blocks: 26163
  Target Milestone: ---
              Host: aarch64-gnu-linux
            Target: aarch64-gnu-linux

When I build the 521.wrf_r SPEC CPU 2017 benchmark using -Ofast -march=native
-flto on a Neoverse V2 machine, I see an ICE

during GIMPLE pass: slp
module_sf_lake.fppized.f90: In function 'lake':
module_sf_lake.fppized.f90:120:5: internal compiler error: in quick_push, at
vec.h:1050
  120 |     SUBROUTINE Lake( t_phy        ,p8w            ,dz8w         ,qvcurr
         ,&  !i                                |     ^
0x241cc13 internal_error(char const*, ...)
        /home/fkastl/gcc/src/gcc/diagnostic-global-context.cc:787
0x8697a7 fancy_abort(char const*, int, char const*)
        /home/fkastl/gcc/src/gcc/diagnostics/context.cc:1813                   
                                         0x858297 vec<int, va_heap,
vl_embed>::quick_push(int const&)
        /home/fkastl/gcc/src/gcc/vec.h:1050
0x1308ddb vec<tree_node*, va_heap, vl_embed>::quick_push(tree_node* const&)
        /home/fkastl/gcc/src/gcc/vec.h:1426
0x1308ddb vec<tree_node*, va_heap, vl_ptr>::quick_push(tree_node* const&)      
                                                
/home/fkastl/gcc/src/gcc/vec.h:2081
0x1308ddb vect_create_constant_vectors
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:11048        
0x1308ddb vect_schedule_slp_node
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:12001                        
                                         0x131fa3f vect_schedule_scc
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:12544
0x13207f7 vect_schedule_scc
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:12565
0x13207f7 vect_schedule_scc                                                    
                                                
/home/fkastl/gcc/src/gcc/tree-vect-slp.cc:12565
0x1320f23 vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>&,
bool)
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:12752        
0x1322d47 vect_slp_region
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:10498                        
                                         0x1322d47 vect_slp_bbs
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:10609
0x1324e07 vect_slp_function(function*)
        /home/fkastl/gcc/src/gcc/tree-vect-slp.cc:10731
0x1330677 execute                                                              
                                                
/home/fkastl/gcc/src/gcc/tree-vectorizer.cc:1573


------


Btw, wrf_r ICEs since r17-3408-gcd962857ea3d8d.  This is documented in
pr127040.   As of r17-3607-gb327e0a5c447ec, wrf_r still ICEd but with this
stacktrace:

during GIMPLE pass: slp
module_sf_lake.fppized.f90: In function 'lake':
module_sf_lake.fppized.f90:120:5: internal compiler error: Segmentation fault
  120 |     SUBROUTINE Lake( t_phy        ,p8w            ,dz8w         ,qvcurr
         ,&  !i
      |     ^
0x1eeae33 internal_error(char const*, ...)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/diagnostic-global-context.cc:787
0xdc9ed3 crash_signal
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/toplev.cc:325
0x1f715bb ht_lookup_with_hash(ht*, unsigned char const*, unsigned long,
unsigned int, ht_lookup_option)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/libcpp/symtab.cc:164
0xdc34a7 get_identifier(char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/stringpool.cc:107
0xa441ab create_tmp_var_name(char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/gimple-expr.cc:434
0xa441f7 create_tmp_var_raw(tree_node*, char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/gimple-expr.cc:446
0xa442bb create_tmp_var(tree_node*, char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/gimple-expr.cc:485
0xa442bb create_tmp_reg(tree_node*, char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/gimple-expr.cc:497
0x1e13217 vect_get_new_vect_var(tree_node*, vect_var_kind, char const*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-data-refs.cc:5498
0x1e13217 vect_create_data_ref_ptr(vec_info*, _stmt_vec_info*, tree_node*,
loop*, tree_node*, tree_node**, gimple_stmt_iterator*, gimple**, bool,
tree_node*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-data-refs.cc:5843
0x10569b3 vectorizable_store
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-stmts.cc:9354
0x105b117 vect_transform_stmt(vec_info*, _stmt_vec_info*,
gimple_stmt_iterator*, _slp_tree*, _slp_instance*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-stmts.cc:13193
0x109d36f vect_schedule_slp_node
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:12316
0x10b32a7 vect_schedule_scc
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:12583
0x10b3803 vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>&,
bool)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:12748
0x10b5fd7 vect_slp_region
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:10498
0x10b5fd7 vect_slp_bbs
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:10609
0x10b6fe7 vect_slp_function(function*)
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vect-slp.cc:10731
0x10bfa9f execute
       
/home/gcc/buildworker/lnt-grace-gcc-trunk-workdays/build/gcc/tree-vectorizer.cc:1573

Finally, on current trunk (r17-3633-gc2dfe9cf64ab96), I observe the first
stacktrace listed in this PR.  There may be intervals between
r17-3408-gcd962857ea3d8d and r17-3633-gc2dfe9cf64ab96, where wrf_r didn't ICE
-- I didn't check this.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26163
[Bug 26163] [meta-bug] missed optimization in SPEC (2026, 2k17, 2k and 2k6 and
95)

Reply via email to