libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr88598-1.c
blobd4a0014f543d854d4e717f0af459678b1a6c111c
1 /* { dg-additional-options "-fdump-tree-optimized" } */
3 #include "tree-vect.h"
5 #define N 4
7 int a[N];
9 int __attribute__ ((noipa))
10 f1 (void)
12 int b[N] = { 15, 0, 0, 0 }, res = 0;
13 for (int i = 0; i < N; ++i)
14 res += a[i] & b[i];
15 return res;
18 int __attribute__ ((noipa))
19 f2 (void)
21 int b[N] = { 0, 31, 0, 0 }, res = 0;
22 for (int i = 0; i < N; ++i)
23 res += a[i] & b[i];
24 return res;
27 int __attribute__ ((noipa))
28 f3 (void)
30 int b[N] = { 0, 0, 0, -1 }, res = 0;
31 for (int i = 0; i < N; ++i)
32 res += a[i] & b[i];
33 return res;
36 int
37 main ()
39 check_vect ();
41 for (int i = 0; i < N; ++i)
42 a[i] = 0xe0 + i;
44 if (f1 () != (a[0] & 15)
45 || f2 () != (a[1] & 31)
46 || f3 () != a[N - 1])
47 __builtin_abort ();
49 return 0;
52 /* ??? We need more constant folding for this to work with fully-masked
53 loops. */
54 /* { dg-final { scan-tree-dump-not {REDUC_PLUS} "optimized" { xfail { aarch64_sve || riscv_v } } } } */