OSDN Git Service

PR tree-optimization/40542
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / slp-multitypes-11.c
1 /* { dg-require-effective-target vect_int } */
2
3 #include <stdarg.h>
4 #include <stdio.h>
5 #include "tree-vect.h"
6
7 #define N 18 
8
9 struct s 
10 {
11   int a;
12   int b;
13   int c;
14 };
15
16 char in[N*3] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53};
17
18 __attribute__ ((noinline)) int
19 main1 ()
20 {
21   int i;
22   struct s out[N];
23
24   for (i = 0; i < N; i++)
25     {
26       out[i].a = (int) in[i*3] + 1;
27       out[i].b = (int) in[i*3 + 1] + 2;
28       out[i].c = (int) in[i*3 + 2] + 3;
29     }
30
31   /* check results:  */
32   for (i = 0; i < N; i++)
33     {
34       if (out[i].a !=  (int) in[i*3] + 1
35          || out[i].b != (int) in[i*3 + 1] + 2
36          || out[i].c != (int) in[i*3 + 2] + 3)
37         abort ();
38     }
39
40   return 0;
41 }
42
43 int main (void)
44 {
45   check_vect ();
46
47   main1 ();
48
49   return 0;
50 }
51
52 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
53 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
54 /* { dg-final { cleanup-tree-dump "vect" } } */
55