This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/71264] [4.9/5/6 Regression] ICE in convert_move
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 30 May 2016 14:20:32 +0000
- Subject: [Bug tree-optimization/71264] [4.9/5/6 Regression] ICE in convert_move
- Auto-submitted: auto-generated
- References: <bug-71264-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71264
--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 30 May 2016, ro at CeBiTec dot Uni-Bielefeld.DE wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71264
>
> --- Comment #10 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> ---
> > --- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
> > Does adding
> >
> > ptr = __builtin_assume_alinged (alignof (footype), ptr);
> > mask = __builtin_assume_aligned (alignof (footype), mask);
> >
> > help?
>
> The failure mode changes: if I spell it as
>
> ptr = __builtin_assume_aligned (ptr, __alignof__ (footype));
> mask = __builtin_assume_aligned (mask, __alignof__ (footype));
>
> the dump now has
>
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/vect/pr71264.c:14:3: note: not
> vectorized: vector stmt in loop:_16 = VIEW_CONVERT_EXPR<vector(4) unsigned
> char>(_15);
what does it say before this line? Sth like "no vector type for ..."?
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/vect/pr71264.c:14:3: note:
> can't determine vectorization factor.
> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/vect/pr71264.c:7:6: note:
> vectorized 0 loops in function.
Hmm, so the idea is that the source uses SImode "vectors" which should
get vectorized as V4SImode (four loop iterations). It looks like
typedef uint8_t footype __attribute__((vector_size(4)));
doesn't get SImode for you? Or the target doesn't have integer vectors?
I see on x86_64 before vectorization
<bb 3>:
# i_22 = PHI <i_13(4), 0(2)>
# ivtmp_26 = PHI <ivtmp_25(4), 4(2)>
_1 = (sizetype) i_22;
_2 = ptr_9(D) + _1;
_10 = MEM[(char * {ref-all})_2];
temp_15 = VIEW_CONVERT_EXPR<footype>(_10);
_3 = mv_14 ^ temp_15;
_11 = VIEW_CONVERT_EXPR<unsigned int>(_3);
MEM[(char * {ref-all})_2] = _11;
i_13 = i_22 + 4;
ivtmp_25 = ivtmp_26 - 1;
if (ivtmp_25 != 0)
goto <bb 4>;
else
goto <bb 5>;
<bb 4>:
goto <bb 3>;