This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/51606] [4.7 Regression] FAIL: gcc.dg/vect/pr51015.c (internal compiler error) on ppc*-*-*
- From: "irar at il dot ibm.com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 18 Dec 2011 11:41:41 +0000
- Subject: [Bug tree-optimization/51606] [4.7 Regression] FAIL: gcc.dg/vect/pr51015.c (internal compiler error) on ppc*-*-*
- Auto-submitted: auto-generated
- References: <bug-51606-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51606
Ira Rosen <irar at il dot ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011-12-18
CC| |irar at il dot ibm.com
Ever Confirmed|0 |1
--- Comment #1 from Ira Rosen <irar at il dot ibm.com> 2011-12-18 11:41:41 UTC ---
Caused by
r182388 | jakub | 2011-12-15 22:47:29 +0200 (Thu, 15 Dec 2011) | 27 lines
* tree-vectorizer.h (struct _stmt_vec_info): Remove pattern_def_stmt
field, add pattern_def_seq.
(STMT_VINFO_PATTERN_DEF_STMT): Remove.
(STMT_VINFO_PATTERN_DEF_SEQ): Define.
(NUM_PATTERNS): Bump to 10.
* tree-vect-loop.c (vect_determine_vectorization_factor,
vect_transform_loop): Adjust for pattern def changing from a single
gimple stmt to gimple_seq.
* tree-vect-stmts.c (vect_analyze_stmt, new_stmt_vec_info,
free_stmt_vec_info): Likewise.
* tree-vect-patterns.c (vect_recog_over_widening_pattern,
vect_recog_vector_vector_shift_pattern,
vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast,
adjust_bool_pattern, vect_mark_pattern_stmts): Likewise.
(vect_recog_sdivmod_pow2_pattern): New function.
(vect_vect_recog_func_ptrs): Add it.
...
And probably PR 51580 is the same problem.
Looking at pr51015.c, vect_recog_vector_vector_shift_pattern is detected and a
new def stmt is created during the detection:
patt.23_33 = (long long unsigned int) D.2004_3;
The pattern detection fails later (on the vector type checks probably), but
this stmt remains a use stmt of D.2004_3 = i_25 + -2;. Therefore, we check
whether it's inside the loop, but get segfault while trying to check its not
existing BB.
Before the use of gimple_seq, this didn't happen, i.e., patt.23_33 = (long long
unsigned int) D.2004_3; wasn't a use of D.2004_3 = i_25 + -2;.