comparison 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
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* { dg-do compile } */ 1 /* { dg-do compile } */
2 /* { dg-options "-O2 -std=gnu++11 -fopt-info-loop-missed -Wunsafe-loop-optimizations" } */ 2 /* { dg-options "-O2 -std=gnu++11 -fopt-info-loop-missed" } */
3 struct p
4 {
5 char *ay;
6 };
3 7
4 namespace a { 8 namespace a {
5 void b () __attribute__ ((__noreturn__)); 9 void b () __attribute__ ((__noreturn__));
6 template <typename> struct d; 10 template <typename> struct d;
7 template <typename e> struct d<e *> 11 template <typename e> struct d<e *>
17 template <typename j, typename> class k 21 template <typename j, typename> class k
18 { 22 {
19 j l; 23 j l;
20 24
21 public: 25 public:
22 typename d<j>::f operator* () {} 26 typename d<j>::f operator* () { return p(); }
23 void operator++ () { ++l; } 27 void operator++ () { ++l; }
24 j 28 j
25 aa () 29 aa ()
26 { 30 {
27 return l; 31 return l;
31 bool 35 bool
32 operator!= (k<m, ab> o, k<n, ab> p2) 36 operator!= (k<m, ab> o, k<n, ab> p2)
33 { 37 {
34 return o.aa () != p2.aa (); 38 return o.aa () != p2.aa ();
35 } 39 }
36 struct p;
37 namespace a { 40 namespace a {
38 struct F 41 struct F
39 { 42 {
40 struct q 43 struct q
41 { 44 {
73 template <typename at, typename au> 76 template <typename at, typename au>
74 at 77 at
75 av (au o) 78 av (au o)
76 { 79 {
77 o.aq ('\n'); 80 o.aq ('\n');
81 return at();
78 } 82 }
79 u ax; 83 u ax;
80 } 84 }
81 struct p
82 {
83 char *ay;
84 };
85 a::H t; 85 a::H t;
86 void 86 void
87 ShowHelpListCommands () 87 ShowHelpListCommands ()
88 { 88 {
89 for (auto c : t) /* { dg-message "note: missed loop optimization: niters analysis .*" } */ 89 for (auto c : t) /* { dg-missed "missed loop optimization: niters analysis .*" } */
90 a::ax << c.ay << a::av; 90 a::ax << c.ay << a::av;
91 } 91 }
92 92