This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/32216] [4.3 Regression] ICE: verify_stmts failed (invalid reference prefix) with -ftree-vectorize
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Jun 2007 21:04:27 -0000
- Subject: [Bug tree-optimization/32216] [4.3 Regression] ICE: verify_stmts failed (invalid reference prefix) with -ftree-vectorize
- References: <bug-32216-12387@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from ubizjak at gmail dot com 2007-06-05 21:04 -------
In _.101t.vect, we have:
vect_var_.36_43 = VEC_UNPACK_FLOAT_LO_EXPR < vect_vec_iv_.40_41 > ;
vect_var_.36_44 = VEC_UNPACK_FLOAT_HI_EXPR < vect_vec_iv_.40_41 > ;
D.2004_4 = (double) x_13;
vect_var_.41_46 = vect_cst_.42_45 / vect_var_.36_43;
vect_var_.41_47 = vect_cst_.42_45 / vect_var_.36_44;
D.2005_5 = 1.6e+1 / D.2004_4;
vect_var_.43_48 = VEC_PACK_FIX_TRUNC_EXPR < vect_var_.41_46, vect_var_.41_47
> ;
D.2006_6 = (unsigned int) D.2005_5;
But vectlower2 pass creates:
vect_var_.36_43 = VEC_UNPACK_FLOAT_LO_EXPR < vect_vec_iv_.40_41 > ;
vect_var_.36_44 = VEC_UNPACK_FLOAT_HI_EXPR < vect_vec_iv_.40_41 > ;
D.2004_4 = (double) x_13;
vect_var_.41_46 = vect_cst_.42_45 / vect_var_.36_43;
vect_var_.41_47 = vect_cst_.42_45 / vect_var_.36_44;
D.2005_5 = 1.6e+1 / D.2004_4;
D.2092_24 = BIT_FIELD_REF <vect_var_.41_46, 64, 0>;
D.2093_65 = BIT_FIELD_REF <vect_var_.41_47, 64, 0>;
D.2094_66 = VEC_PACK_FIX_TRUNC_EXPR < D.2092_24, D.2093_65 > ;
D.2095_67 = BIT_FIELD_REF <vect_var_.41_46, 64, 64>;
D.2096_68 = BIT_FIELD_REF <vect_var_.41_47, 64, 64>;
D.2097_69 = VEC_PACK_FIX_TRUNC_EXPR < D.2095_67, D.2096_68 > ;
D.2098_70 = VIEW_CONVERT_EXPR<vector unsigned int>({D.2094_66, D.2097_69});
vect_var_.43_48 = D.2098_70;
D.2006_6 = (unsigned int) D.2005_5;
I suspect that the code around VEC_PACK_FIX_TRUNC_EXPR is correct.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32216