Bug 114195 - [14] RISC-V vector ICE: in vectorizable_store, at tree-vect-stmts.cc:8690
Summary: [14] RISC-V vector ICE: in vectorizable_store, at tree-vect-stmts.cc:8690
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 14.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2024-03-01 21:07 UTC by Patrick O'Neill
Modified: 2024-03-11 16:29 UTC (History)
5 users (show)

See Also:
Host:
Target: RISC-V
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
-freport-bug output (1.17 KB, text/x-csrc)
2024-03-01 21:07 UTC, Patrick O'Neill
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick O'Neill 2024-03-01 21:07:09 UTC
Created attachment 57588 [details]
-freport-bug output

Testcase:
long a, b;
extern short c[];
void d() {
  for (int e = 0; e < 5; e += 2) {
    a = ({ a < 0 ? a : 0; });
    b = ({ b < 0 ? b : 0; });
    c[e] = 0;
  }
}

Backtrace:
> /scratch/tc-testing/tc-feb-20/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc -march=rv64gcv -O3 red.c
during GIMPLE pass: vect
red.c: In function 'd':
red.c:3:6: internal compiler error: in vectorizable_store, at tree-vect-stmts.cc:8690
    3 | void d() {
      |      ^
0xbe592a vectorizable_store
        ../../../gcc/gcc/tree-vect-stmts.cc:8690
0x274ff35 vect_analyze_stmt(vec_info*, _stmt_vec_info*, bool*, _slp_tree*, _slp_instance*, vec<stmt_info_for_cost, va_heap, vl_ptr>*)
        ../../../gcc/gcc/tree-vect-stmts.cc:13241
0x15de0e2 vect_analyze_loop_operations
        ../../../gcc/gcc/tree-vect-loop.cc:2208
0x15de0e2 vect_analyze_loop_2
        ../../../gcc/gcc/tree-vect-loop.cc:3041
0x15dfdf0 vect_analyze_loop_1
        ../../../gcc/gcc/tree-vect-loop.cc:3481
0x15e0589 vect_analyze_loop(loop*, vec_info_shared*)
        ../../../gcc/gcc/tree-vect-loop.cc:3639
0x1627ed4 try_vectorize_loop_1
        ../../../gcc/gcc/tree-vectorizer.cc:1066
0x1627ed4 try_vectorize_loop
        ../../../gcc/gcc/tree-vectorizer.cc:1182
0x16287fc execute
        ../../../gcc/gcc/tree-vectorizer.cc:1298
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.

Godbolt: https://godbolt.org/z/s9YbYhK8e

Tested/found using r14-9084-g61ab046a327 (not bisected)

Found via fuzzer.
Comment 1 Li Pan 2024-03-06 14:44:13 UTC
Confirmed with
  1. build option '-march=rv64gcv -O3'.
  2. riscv64-unknown-elf-gcc (GCC) 14.0.1 20240306 (experimental).

If no one works on this ICE already, will take a look into it.
Comment 2 Li Pan 2024-03-07 06:10:15 UTC
Trigger below assert in vectorizable_store, the loop_vinfo use_partial, fully_masked and fully_lens are all true here.

/* Shouldn't go with length-based approach if fully masked.  */
gcc_assert (!loop_lens || !loop_masks);

Introduce by this commit https://github.com/gcc-mirror/gcc/commit/9fb832ce382d649b7687426e6bc4e5d3715cb78a#diff-97f675a4f401d6ec84d031e0d7259a0b6ba3b50eccc3fe483e9376becc9d9cf9
Comment 3 Li Pan 2024-03-07 11:30:28 UTC
Testing a fix for possible regression.
Comment 4 Li Pan 2024-03-10 11:07:00 UTC
Hi Patrick,

Could you please help to double-check if upstream has this problem? As well as PR114198.

Thanks.
Comment 5 Patrick O'Neill 2024-03-11 16:29:51 UTC
Fixed - Thank you!