https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118931

--- Comment #2 from Li Pan <pan2.li at intel dot com> ---
  13   │ int main ()
  14   │ {
  15   │   vector(16) unsigned char vect__3.5;
  16   │   unsigned char a_lsm.2;
  17   │   long long int _5;
  18   │   vector(16) unsigned char _13;
  19   │   unsigned char _29;
  20   │
  21   │   <bb 2> [local count: 71618576]:
  22   │   a_lsm.2_20 = a;
  23   │   _13 = {a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20,
a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20,
a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20, a_lsm.2_20};
  24   │   vect__3.5_25 = _13 * { 151, 17, 7, 33, 119, 49, 231, 65, 87, 81,
199, 97, 55, 113, 167, 129 };
  25   │   _29 = .VEC_EXTRACT (vect__3.5_25, 13);
  26   │   a = _29;
  27   │   _5 = (long long int) _29;
  28   │   __builtin_printf ("%llu\n", _5);
  29   │   return 0;
  30   │
  31   │ }

It is correct from the tree-optimized, (unsigned char )(109 * 113) = 29 is what
we expect.  Should be a backend issue.

Reply via email to