vector bug?

Not Real
Fri Mar 19 15:37:00 GMT 2004

Hi, I'm using gcc 3.4.0 20040305, on a pentium 4 red
hat system.  I'm trying to use the vector extensions. 
When I compile the following code with -O0 or -O1, it
does as I expect (it prints whatever was input plus
{1,2,3,4}.  When I compile with -O2 or -O3 on the
other hand, it prints garbage.  From the disassembly,
it is apparent that it is just not putting the right
arguments on the stack for the printf call.  Is my
code incorrect, or is this an optimization bug?

#include <stdio.h>

int main() {
  typedef int v4si __attribute__ ((mode(V4SI)));
  int vals[4];
  int ins[4];

  scanf("%d %d %d %d", &ins[0], &ins[1], &ins[2],
  v4si a = *(v4si*)ins, b = {1, 2, 3, 4}, c;

  c = a + b;
  *(v4si*)vals = c;
  printf("%d %d %d %d\n", vals[0], vals[1], vals[2],

Do you Yahoo!?
Yahoo! Mail - More reliable, more storage, less spam

More information about the Gcc-help mailing list