public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning @ 2020-06-08 6:45 felix.yang at huawei dot com 2020-06-09 6:54 ` [Bug tree-optimization/95570] " rguenth at gcc dot gnu.org ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: felix.yang at huawei dot com @ 2020-06-08 6:45 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95570 Bug ID: 95570 Summary: ICE: Segmentation fault in vect_loop_versioning Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: felix.yang at huawei dot com Target Milestone: --- Target: aarch64 foo.c: int x[8][32]; void foo (int start) { for (int i = start; i < start + 16; i++) x[start][i] = i; } $ gcc -S -O2 -ftree-loop-vectorize -march=armv8.2-a+sve -msve-vector-bits=256 -fno-vect-cost-model -fwrapv -mstrict-align foo.c during GIMPLE pass: vect foo.c: In function ‘foo’: foo.c:4:1: internal compiler error: Segmentation fault 4 | foo (int start) | ^~~ 0x12bb79b crash_signal ../../gcc-git/gcc/toplev.c:328 0x94cc4c contains_struct_check(tree_node const*, tree_node_structure_enum, char const*, int, char const*) ../../gcc-git/gcc/tree.h:3665 0x9893db wi::extended_tree<576>::extended_tree(tree_node const*) ../../gcc-git/gcc/tree.h:5922 0x987e9b generic_wide_int<wi::extended_tree<576> >::generic_wide_int<tree_node const*>(tree_node const* const&) ../../gcc-git/gcc/wide-int.h:782 0x98796f wi::to_widest(tree_node const*) ../../gcc-git/gcc/tree.h:5849 0xa84e13 tree_int_cst_compare(tree_node const*, tree_node const*) ../../gcc-git/gcc/tree.h:6121 0x16911bb vect_create_cond_for_align_checks ../../gcc-git/gcc/tree-vect-loop-manip.c:3055 0x1691a1f vect_loop_versioning(_loop_vec_info*, gimple*) ../../gcc-git/gcc/tree-vect-loop-manip.c:3263 0x167ffbb vect_transform_loop(_loop_vec_info*, gimple*) ../../gcc-git/gcc/tree-vect-loop.c:8691 0x16ac56b try_vectorize_loop_1 ../../gcc-git/gcc/tree-vectorizer.c:989 0x16ac7e7 try_vectorize_loop ../../gcc-git/gcc/tree-vectorizer.c:1046 0x16ac997 vectorize_loops() ../../gcc-git/gcc/tree-vectorizer.c:1125 0x1507e2b execute ../../gcc-git/gcc/tree-ssa-loop.c:414 Here, we are doing loop versionging for alignment. The only dr here is a gather-statter operation: x[start][i]. Scalar evolution analysis for this dr failed, so DR_STEP is NULL_TREE, which leads to the segfault. But scatter-gather operation should be filtered out in vect_enhance_data_refs_alignment. Like: @@ -2206,6 +2228,12 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) && DR_GROUP_FIRST_ELEMENT (stmt_info) != stmt_info)) continue; + /* For scatter-gather or invariant accesses there is nothing + to enhance. */ + if (STMT_VINFO_GATHER_SCATTER_P (stmt_info) + || integer_zerop (DR_STEP (dr))) + continue; + if (STMT_VINFO_STRIDED_P (stmt_info)) { /* Strided loads perform only component accesses, alignment is I also witnessed similar issues in vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs and vect_peeling_supportable. Since the code is similar, maybe we should propose a new funtion for that. Suggestions? ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/95570] ICE: Segmentation fault in vect_loop_versioning 2020-06-08 6:45 [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning felix.yang at huawei dot com @ 2020-06-09 6:54 ` rguenth at gcc dot gnu.org 2020-06-09 11:26 ` marxin at gcc dot gnu.org ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: rguenth at gcc dot gnu.org @ 2020-06-09 6:54 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95570 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Just spread the tests. Actual test coverage for all cases would be nice. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/95570] ICE: Segmentation fault in vect_loop_versioning 2020-06-08 6:45 [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning felix.yang at huawei dot com 2020-06-09 6:54 ` [Bug tree-optimization/95570] " rguenth at gcc dot gnu.org @ 2020-06-09 11:26 ` marxin at gcc dot gnu.org 2020-06-12 10:38 ` [Bug tree-optimization/95570] vect: " cvs-commit at gcc dot gnu.org 2020-06-12 11:19 ` rsandifo at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: marxin at gcc dot gnu.org @ 2020-06-09 11:26 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95570 Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2020-06-09 CC| |marxin at gcc dot gnu.org Ever confirmed|0 |1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/95570] vect: ICE: Segmentation fault in vect_loop_versioning 2020-06-08 6:45 [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning felix.yang at huawei dot com 2020-06-09 6:54 ` [Bug tree-optimization/95570] " rguenth at gcc dot gnu.org 2020-06-09 11:26 ` marxin at gcc dot gnu.org @ 2020-06-12 10:38 ` cvs-commit at gcc dot gnu.org 2020-06-12 11:19 ` rsandifo at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2020-06-12 10:38 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95570 --- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Sandiford <rsandifo@gcc.gnu.org>: https://gcc.gnu.org/g:d30846a02eb9ea43b61311e74fbf05692ffefba2 commit r11-1283-gd30846a02eb9ea43b61311e74fbf05692ffefba2 Author: Fei Yang <felix.yang@huawei.com> Date: Fri Jun 12 11:37:00 2020 +0100 vect: Fix an ICE in vect_loop_versioning [PR95570] In the test case for PR95570, the only data reference in the loop is a gather-statter access. Scalar evolution analysis for this data reference failed, so DR_STEP is NULL_TREE. This leads to the segmentation fault. We should filter out scatter-gather access in vect_enhance_data_refs_alignment. 2020-06-12 Felix Yang <felix.yang@huawei.com> gcc/ PR tree-optimization/95570 * tree-vect-data-refs.c (vect_relevant_for_alignment_p): New function. (vect_verify_datarefs_alignment): Call it to filter out data references in the loop whose alignment is irrelevant. (vect_get_peeling_costs_all_drs): Likewise. (vect_peeling_supportable): Likewise. (vect_enhance_data_refs_alignment): Likewise. gcc/testsuite/ PR tree-optimization/95570 * gcc.dg/vect/pr95570.c: New test. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/95570] vect: ICE: Segmentation fault in vect_loop_versioning 2020-06-08 6:45 [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning felix.yang at huawei dot com ` (2 preceding siblings ...) 2020-06-12 10:38 ` [Bug tree-optimization/95570] vect: " cvs-commit at gcc dot gnu.org @ 2020-06-12 11:19 ` rsandifo at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: rsandifo at gcc dot gnu.org @ 2020-06-12 11:19 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95570 rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED CC| |rsandifo at gcc dot gnu.org --- Comment #3 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- Fixed. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-06-12 11:19 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-06-08 6:45 [Bug tree-optimization/95570] New: ICE: Segmentation fault in vect_loop_versioning felix.yang at huawei dot com 2020-06-09 6:54 ` [Bug tree-optimization/95570] " rguenth at gcc dot gnu.org 2020-06-09 11:26 ` marxin at gcc dot gnu.org 2020-06-12 10:38 ` [Bug tree-optimization/95570] vect: " cvs-commit at gcc dot gnu.org 2020-06-12 11:19 ` rsandifo at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).