1 /* { dg-do run } */
2 /* { dg-options "-fno-common" { target { hppa*-*-hpux* } } } */
3 #define vector __attribute__((vector_size(sizeof(int)*4) ))
4
5 /* Check to make sure that we extract and insert the vector at the same
6 location for vector subscripting and that vectors layout are the same
7 as arrays. */
8
9 struct TV4
10 {
11 vector int v;
12 };
13
14 typedef struct TV4 MYV4;
f(MYV4 * a,int i)15 static inline int *f(MYV4 *a, int i)
16 {
17 return &(a->v[i]);
18 }
19
myfunc2(int x,int y,int z,int w)20 static inline MYV4 myfunc2( int x, int y, int z, int w )
21 {
22 MYV4 temp;
23 *f(&temp, 0 ) = x;
24 *f(&temp, 1 ) = y;
25 *f(&temp, 2 ) = z;
26 *f(&temp, 3 ) = w;
27 return temp;
28 }
29
30 MYV4 val3;
31
modify(void)32 __attribute__((noinline)) void modify (void)
33 {
34 val3 = myfunc2( 1, 2, 3, 4 );
35 }
36
main(int argc,char * argv[])37 int main( int argc, char* argv[] )
38 {
39 int a[4];
40 int i;
41
42 modify();
43
44 if (*f(&val3, 0 ) != 1)
45 __builtin_abort ();
46 if (*f(&val3, 1 ) != 2)
47 __builtin_abort ();
48 if (*f(&val3, 2 ) != 3)
49 __builtin_abort ();
50 if (*f(&val3, 3 ) != 4)
51 __builtin_abort ();
52
53 __builtin_memcpy (a, &val3, sizeof(a));
54 for(i = 0; i < 4; i++)
55 if (a[i] != i+1)
56 __builtin_abort ();
57
58
59 return 0;
60 }
61
62