(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.target/
powerpc/
pr90259.C
/* { dg-require-effective-target long_double_ibm128 } */
/* { dg-options "-O2 -ffloat-store -fgcse -fnon-call-exceptions -fno-forward-propagate -fno-omit-frame-pointer -fstack-protector-all" } */
/* { dg-add-options long_double_ibm128 } */

/* Verify there is no ICE.  */

template <int a> struct b
{
  static constexpr int c = a;
};
template <bool a> using d = b<a>;
struct e
{
  int f;
  int
  g ()
  {
    return __builtin_ceil (f / (long double) h);
  }
  float h;
};
template <typename, typename> using k = d<!bool ()>;
template <typename> class n
{
public:
  e ae;
  void af ();
};
template <typename l>
void
n<l>::af ()
{
  ae.g ();
}
template <bool> using m = int;
template <typename ag, typename ah, typename ai = m<k<ag, ah>::c>>
using aj = n<ai>;
struct o
{
  void
  af ()
  {
    al.af ();
  }
  aj<int, int> al;
};
template <typename> class am;
template <typename i> class ao
{
protected:
  static i *ap (int);
};
template <typename, typename> class p;
template <typename ar, typename i, typename... j> class p<ar (j...), i> : ao<i>
{
public:
  static ar
  as (const int &p1, j...)
  {
    (*ao<i>::ap (p1)) (j ()...);
  }
};
template <typename ar, typename... j> class am<ar (j...)>
{
  template <typename, typename> using av = int;

public:
  template <typename i, typename = av<d<!bool ()>, void>,
	    typename = av<i, void>>
  am (i);
  using aw = ar (*) (const int &, j...);
  aw ax;
};
template <typename ar, typename... j>
template <typename i, typename, typename>
am<ar (j...)>::am (i)
{
  ax = p<ar (j...), i>::as;
}
struct G
{
  void ba (am<void (o)>);
};
struct q
{
  q ()
  {
    G a;
    a.ba (r ());
  }
  struct r
  {
    void
    operator() (o p1)
    try
      {
	p1.af ();
      }
    catch (int)
      {
      }
  };
} s;