Imported Upstream version 4.7.3
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.dg / vect / vect-reduc-10.c
1 #include "tree-vect.h"
2
3 extern void abort (void);
4 double ad[1024];
5 float af[1024];
6 short as[1024];
7 int ai[1024];
8 long long all[1024];
9 unsigned short aus[1024];
10 unsigned int au[1024];
11 unsigned long long aull[1024];
12
13 #define F(var) \
14 __attribute__((noinline, noclone)) __typeof (var[0]) \
15 f##var (void) \
16 { \
17   int i; \
18   __typeof (var[0]) r = 0; \
19   for (i = 0; i < 1024; i++) \
20     r = r > var[i] ? r : var[i]; \
21   return r; \
22 }
23
24 #define TESTS \
25 F (ad) F (af) F (as) F (ai) F (all) F (aus) F (au) F (aull)
26
27 TESTS
28
29 int
30 main ()
31 {
32   int i;
33
34   check_vect ();
35
36   for (i = 0; i < 1024; i++)
37     {
38 #undef F
39 #define F(var) var[i] = i;
40       TESTS
41     }
42   for (i = 1023; i < 32 * 1024; i += 1024 + 271)
43     {
44 #undef F
45 #define F(var) var[i & 1023] = i; if (f##var () != i) abort ();
46       TESTS
47     }
48   return 0;
49 }
50
51 /* { dg-final { cleanup-tree-dump "vect" } } */