annotate gcc/testsuite/g++.dg/tree-ssa/pr81408.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 /* { dg-options "-O2 -std=gnu++11 -fopt-info-loop-missed" } */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 struct p
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
4 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
5 char *ay;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
6 };
111
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 namespace a {
kono
parents:
diff changeset
9 void b () __attribute__ ((__noreturn__));
kono
parents:
diff changeset
10 template <typename> struct d;
kono
parents:
diff changeset
11 template <typename e> struct d<e *>
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 typedef e f;
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15 struct g
kono
parents:
diff changeset
16 {
kono
parents:
diff changeset
17 template <typename h> using i = h *;
kono
parents:
diff changeset
18 };
kono
parents:
diff changeset
19 }
kono
parents:
diff changeset
20 using a::d;
kono
parents:
diff changeset
21 template <typename j, typename> class k
kono
parents:
diff changeset
22 {
kono
parents:
diff changeset
23 j l;
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 public:
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
26 typename d<j>::f operator* () { return p(); }
111
kono
parents:
diff changeset
27 void operator++ () { ++l; }
kono
parents:
diff changeset
28 j
kono
parents:
diff changeset
29 aa ()
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 return l;
kono
parents:
diff changeset
32 }
kono
parents:
diff changeset
33 };
kono
parents:
diff changeset
34 template <typename m, typename n, typename ab>
kono
parents:
diff changeset
35 bool
kono
parents:
diff changeset
36 operator!= (k<m, ab> o, k<n, ab> p2)
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 return o.aa () != p2.aa ();
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40 namespace a {
kono
parents:
diff changeset
41 struct F
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 struct q
kono
parents:
diff changeset
44 {
kono
parents:
diff changeset
45 using ai = g::i<p>;
kono
parents:
diff changeset
46 };
kono
parents:
diff changeset
47 using r = q::ai;
kono
parents:
diff changeset
48 };
kono
parents:
diff changeset
49 class H
kono
parents:
diff changeset
50 {
kono
parents:
diff changeset
51 public:
kono
parents:
diff changeset
52 k<F::r, int> begin ();
kono
parents:
diff changeset
53 k<F::r, int> end ();
kono
parents:
diff changeset
54 };
kono
parents:
diff changeset
55 int s;
kono
parents:
diff changeset
56 class I
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 public:
kono
parents:
diff changeset
59 void
kono
parents:
diff changeset
60 aq (char)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 if (s)
kono
parents:
diff changeset
63 b ();
kono
parents:
diff changeset
64 }
kono
parents:
diff changeset
65 };
kono
parents:
diff changeset
66 class u : public I
kono
parents:
diff changeset
67 {
kono
parents:
diff changeset
68 public:
kono
parents:
diff changeset
69 void
kono
parents:
diff changeset
70 operator<< (u o (u))
kono
parents:
diff changeset
71 {
kono
parents:
diff changeset
72 o (*this);
kono
parents:
diff changeset
73 }
kono
parents:
diff changeset
74 u operator<< (void *);
kono
parents:
diff changeset
75 };
kono
parents:
diff changeset
76 template <typename at, typename au>
kono
parents:
diff changeset
77 at
kono
parents:
diff changeset
78 av (au o)
kono
parents:
diff changeset
79 {
kono
parents:
diff changeset
80 o.aq ('\n');
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
81 return at();
111
kono
parents:
diff changeset
82 }
kono
parents:
diff changeset
83 u ax;
kono
parents:
diff changeset
84 }
kono
parents:
diff changeset
85 a::H t;
kono
parents:
diff changeset
86 void
kono
parents:
diff changeset
87 ShowHelpListCommands ()
kono
parents:
diff changeset
88 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
89 for (auto c : t) /* { dg-missed "missed loop optimization: niters analysis .*" } */
111
kono
parents:
diff changeset
90 a::ax << c.ay << a::av;
kono
parents:
diff changeset
91 }
kono
parents:
diff changeset
92