1// PR tree-optimization/60023
2// { dg-do compile }
3// { dg-additional-options "-O3 -std=c++11 -fnon-call-exceptions" }
4// { dg-additional-options "-mavx2" { target { i?86-*-* x86_64-*-* } } }
5
6struct A { A (); ~A (); };
7
8void
9f1 (int *p, int *q, int *r) noexcept (true)
10{
11  int i;
12  for (i = 0; i < 1024; i++)
13    if (r[i])
14      p[i] = q[i] + 1;
15}
16
17void
18f2 (int *p, int *q, int *r)
19{
20  int i;
21  for (i = 0; i < 1024; i++)
22    if (r[i])
23      p[i] = q[i] + 1;
24}
25
26void
27f3 (int *p, int *q) noexcept (true)
28{
29  int i;
30  for (i = 0; i < 1024; i++)
31    p[i] = q[i] + 1;
32}
33
34void
35f4 (int *p, int *q)
36{
37  int i;
38  for (i = 0; i < 1024; i++)
39    p[i] = q[i] + 1;
40}
41
42void
43f5 (int *p, int *q, int *r) noexcept (true)
44{
45  int i;
46  A a;
47  for (i = 0; i < 1024; i++)
48    if (r[i])
49      p[i] = q[i] + 1;
50}
51
52void
53f6 (int *p, int *q, int *r)
54{
55  int i;
56  A a;
57  for (i = 0; i < 1024; i++)
58    if (r[i])
59      p[i] = q[i] + 1;
60}
61
62void
63f7 (int *p, int *q) noexcept (true)
64{
65  int i;
66  A a;
67  for (i = 0; i < 1024; i++)
68    p[i] = q[i] + 1;
69}
70
71void
72f8 (int *p, int *q)
73{
74  int i;
75  A a;
76  for (i = 0; i < 1024; i++)
77    p[i] = q[i] + 1;
78}
79
80// { dg-final { cleanup-tree-dump "vect" } }
81