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

            Bug ID: 125597
           Summary: ICE: SIGSEGV in analyze_scalar_evolution_1
                    (tree-scalar-evolution.cc:2026) with -O3
                    -mcpu=c1-ultra -mautovec-preference=sve-only
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: aarch64-unknown-linux-gnu

Created attachment 64622
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=64622&action=edit
reduced testcase

Compiler output:
$ aarch64-unknown-linux-gnu-gcc -O3 -mcpu=c1-ultra
-mautovec-preference=sve-only testcase.c -wrapper valgrind,-q,--num-callers=40
==2360351== Invalid read of size 8
==2360351==    at 0x15F5369: analyze_scalar_evolution_1(loop*, tree_node*)
(tree-scalar-evolution.cc:2026)
==2360351==    by 0x15F5DA5: analyze_scalar_evolution(loop*, tree_node*)
(tree-scalar-evolution.cc:2118)
==2360351==    by 0x15F7B7D: interpret_rhs_expr(loop*, gimple*, tree_node*,
tree_node*, tree_code, tree_node*) (tree-scalar-evolution.cc:1706)
==2360351==    by 0x15F5586: interpret_gimple_assign
(tree-scalar-evolution.cc:1998)
==2360351==    by 0x15F5586: analyze_scalar_evolution_1(loop*, tree_node*)
(tree-scalar-evolution.cc:2049)
==2360351==    by 0x15F5DA5: analyze_scalar_evolution(loop*, tree_node*)
(tree-scalar-evolution.cc:2118)
==2360351==    by 0x15F53F3: interpret_condition_phi
(tree-scalar-evolution.cc:1676)
==2360351==    by 0x15F53F3: analyze_scalar_evolution_1(loop*, tree_node*)
(tree-scalar-evolution.cc:2056)
==2360351==    by 0x15F5E82: analyze_scalar_evolution(loop*, tree_node*)
(tree-scalar-evolution.cc:2118)
==2360351==    by 0x1933A29: get_scev_info (vr-values.cc:211)
==2360351==    by 0x1933A29: range_of_var_in_loop(vrange&, tree_node*, loop*,
gimple*, range_query*) (vr-values.cc:304)
==2360351==    by 0x10D4E1A:
fold_using_range::range_of_ssa_name_with_loop_info(vrange&, tree_node*, loop*,
gphi*, fur_source&) (gimple-range-fold.cc:1488)
==2360351==    by 0x10D5565: fold_using_range::range_of_phi(vrange&, gphi*,
fur_source&) (gimple-range-fold.cc:1236)
==2360351==    by 0x10D9870: fold_using_range::fold_stmt(vrange&, gimple*,
fur_source&, tree_node*) (gimple-range-fold.cc:681)
==2360351==    by 0x10C4DB2: fold_range_internal (gimple-range.cc:282)
==2360351==    by 0x10C4DB2: gimple_ranger::range_of_stmt(vrange&, gimple*,
tree_node*) (gimple-range.cc:343)
==2360351==    by 0x10C68B6: gimple_ranger::range_of_expr(vrange&, tree_node*,
gimple*) (gimple-range.cc:112)
==2360351==    by 0x17A5B0E: ssa_name_has_boolean_range(tree_node*, gimple*)
(tree-ssanames.cc:645)
==2360351==    by 0x1EE3FA6: generic_simplify_MINUS_EXPR(unsigned long,
tree_code, tree_node*, tree_node*, tree_node*) (generic-match-1.cc:5565)
==2360351==    by 0x102FCCC: fold_binary_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:10777)
==2360351==    by 0x10377BE: fold_build2_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:13613)
==2360351==    by 0x1FC0091: generic_simplify_64(unsigned long, tree_node*,
tree_node*, tree_node*, tree_node**, tree_code) (generic-match-5.cc:429)
==2360351==    by 0x209F210: generic_simplify_PLUS_EXPR(unsigned long,
tree_code, tree_node*, tree_node*, tree_node*) (generic-match-10.cc:6058)
==2360351==    by 0x102FCCC: fold_binary_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:10777)
==2360351==    by 0x10377BE: fold_build2_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:13613)
==2360351==    by 0x1EE4257: generic_simplify_MINUS_EXPR(unsigned long,
tree_code, tree_node*, tree_node*, tree_node*) (generic-match-1.cc:5283)
==2360351==    by 0x102FCCC: fold_binary_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:10777)
==2360351==    by 0x10377BE: fold_build2_loc(unsigned long, tree_code,
tree_node*, tree_node*, tree_node*) (fold-const.cc:13613)
==2360351==    by 0x1837557: vect_do_peeling(_loop_vec_info*, tree_node*,
tree_node*, tree_node**, tree_node**, tree_node**, int, bool, bool,
tree_node**) (tree-vect-loop-manip.cc:3956)
==2360351==    by 0x180C0DD: vect_transform_loop(_loop_vec_info*, gimple*)
(tree-vect-loop.cc:11253)
==2360351==    by 0x1878384: vect_transform_loops(hash_table<simduid_to_vf,
false, xcallocator>*&, loop*, gimple*, function*) (tree-vectorizer.cc:1036)
==2360351==    by 0x1878A04: try_vectorize_loop_1 (tree-vectorizer.cc:1185)
==2360351==    by 0x1878A04: try_vectorize_loop(hash_table<simduid_to_vf,
false, xcallocator>*&, unsigned int*, loop*, function*)
(tree-vectorizer.cc:1215)
==2360351==    by 0x1879004: (anonymous
namespace)::pass_vectorize::execute(function*) (tree-vectorizer.cc:1332)
==2360351==    by 0x1386ACF: execute_one_pass(opt_pass*) (passes.cc:2646)
==2360351==    by 0x13873EF: execute_pass_list_1(opt_pass*) (passes.cc:2757)
==2360351==    by 0x1387401: execute_pass_list_1(opt_pass*) (passes.cc:2758)
==2360351==    by 0x1387401: execute_pass_list_1(opt_pass*) (passes.cc:2758)
==2360351==    by 0x1387428: execute_pass_list(function*, opt_pass*)
(passes.cc:2768)
==2360351==    by 0xEE4C18: expand (cgraphunit.cc:1874)
==2360351==    by 0xEE4C18: cgraph_node::expand() (cgraphunit.cc:1827)
==2360351==    by 0xEE6AFA: expand_all_functions (cgraphunit.cc:2057)
==2360351==    by 0xEE6AFA: symbol_table::compile() [clone .part.0]
(cgraphunit.cc:2435)
==2360351==    by 0xEE93E2: compile (cgraphunit.cc:2345)
==2360351==    by 0xEE93E2: symbol_table::finalize_compilation_unit()
(cgraphunit.cc:2626)
==2360351==    by 0x14E8E73: compile_file() (toplev.cc:482)
==2360351==    by 0xCB4E3F: do_compile (toplev.cc:2228)
==2360351==    by 0xCB4E3F: toplev::main(int, char**) (toplev.cc:2392)
==2360351==    by 0xCB679A: main (main.cc:39)
==2360351==  Address 0x18 is not stack'd, malloc'd or (recently) free'd
==2360351== 
during GIMPLE pass: vect
testcase.c: In function 'foo':
testcase.c:4:1: internal compiler error: Segmentation fault
    4 | foo()
      | ^~~
0x28f882d internal_error(char const*, ...)
        /repo/gcc-trunk/gcc/diagnostic-global-context.cc:787
0x14e87af crash_signal
        /repo/gcc-trunk/gcc/toplev.cc:325
0x15f5369 analyze_scalar_evolution_1
        /repo/gcc-trunk/gcc/tree-scalar-evolution.cc:2026

...

0x17a5b0e ssa_name_has_boolean_range(tree_node*, gimple*)
        /repo/gcc-trunk/gcc/tree-ssanames.cc:645
/repo/gcc-trunk/binary-trunk-20260604085222-r17-1281-g0d82756a365ee6-checking-yes-rtl-df-extra-aarch64/bin/../libexec/gcc/aarch64-unknown-linux-gnu/17.0.0/cc1
-quiet -iprefix
/repo/gcc-trunk/binary-trunk-20260604085222-r17-1281-g0d82756a365ee6-checking-yes-rtl-df-extra-aarch64/bin/../lib/gcc/aarch64-unknown-linux-gnu/17.0.0/
testcase.c -mno-fix-cortex-a53-835769 -mno-fix-cortex-a53-843419 -quiet
-dumpdir a- -dumpbase testcase.c -dumpbase-ext .c -mcpu=c1-ultra
-mautovec-preference=sve-only -mlittle-endian -mabi=lp64 -O3 -o /tmp/ccK8Q6Vh.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to