This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/71264] [4.9/5/6 Regression] ICE in convert_move


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>;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]