view gcc/testsuite/g++.dg/tree-ssa/pr81408.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line source

/* { dg-do compile } */
/* { dg-options "-O2 -std=gnu++11 -fopt-info-loop-missed -Wunsafe-loop-optimizations" } */

namespace a {
void b () __attribute__ ((__noreturn__));
template <typename> struct d;
template <typename e> struct d<e *>
{
  typedef e f;
};
struct g
{
  template <typename h> using i = h *;
};
}
using a::d;
template <typename j, typename> class k
{
  j l;

public:
  typename d<j>::f operator* () {}
  void operator++ () { ++l; }
  j
  aa ()
  {
    return l;
  }
};
template <typename m, typename n, typename ab>
bool
operator!= (k<m, ab> o, k<n, ab> p2)
{
  return o.aa () != p2.aa ();
}
struct p;
namespace a {
struct F
{
  struct q
  {
    using ai = g::i<p>;
  };
  using r = q::ai;
};
class H
{
public:
  k<F::r, int> begin ();
  k<F::r, int> end ();
};
int s;
class I
{
public:
  void
  aq (char)
  {
    if (s)
      b ();
  }
};
class u : public I
{
public:
  void
  operator<< (u o (u))
  {
    o (*this);
  }
  u operator<< (void *);
};
template <typename at, typename au>
at
av (au o)
{
  o.aq ('\n');
}
u ax;
}
struct p
{
  char *ay;
};
a::H t;
void
ShowHelpListCommands ()
{
  for (auto c : t) /* { dg-message "note: missed loop optimization: niters analysis .*" } */
    a::ax << c.ay << a::av;
}