------- Comment #10 from irar at il dot ibm dot com  2009-08-13 11:34 -------
Reduced testcase:

#include <stdlib.h>
#include <stdio.h>

#define N 4

long int a[N];
int main ()
{
  int k;

  for (k = 0; k < N; ++k)
    a[k] = a[k] != 5 ? 12 : 10;

  for (k = 0; k < N; ++k)
    printf ("%u ", a[k]);

  printf ("\n");

  return 0;
}

%gcc -O3 t.c
% ./a.out
0 0 0 0

%gcc -O2 t.c
% ./a.out
12 12 12 12

If the type of 'a' is int, there is no problem. The vectorizer produces almost
the same code in both cases (except for number of iterations and types).
I am attaching the assembly for int and long int versions.

Ira


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41019

Reply via email to