Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/opt/pr85196.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
line wrap: on
line source
// PR target/85196 // Testcase by Rainer Orth <ro@gcc.gnu.org> // { dg-do compile } // { dg-options "-O -fpermissive -w" } // { dg-additional-options "-fPIC" { target fpic } } class a; template <typename> class b; template <typename k> class d : public b<k> {}; class e {}; void f(int); template <class> class g { public: h(); a i(); }; template <> class b<e> : public g<e> {}; typedef (*j)(d<e>); template <class k> class l { public: k operator->() { return 0; } }; enum m { n, aa, o, ab, q, p }; inline s(m ac) { switch (ac) { case n: case aa: case p: return 1; case o: case ab: return 2; } } class D { int ad; public: *ae() { return &ad; } }; class a { l<D *> af; public: *r() { return af->ae(); } t(int *c) { int *w = af->ae(); return w == c; } }; class F : a { public: static int ah[]; static e v(F *); unsigned long ai() const; }; inline unsigned long F::ai() const { m aj = r() - &ah[0]; return s(aj); } inline e F::v(F *ak) { long al = ak->ai(); f(al); } template <typename> am() { return q; } class an : public F { public: static ao(d<e> u) { int *ap; m aq = am<unsigned>(); ap = &ah[aq]; return u.h() && u.i().t(ap); } template <e ar(F *)> static as() { F at; ar(&at); } template <e ar(F *)> static au(int *, unsigned, e *) { j av = ao; d<e> aw; if (av(aw)) as<ar>(); } }; int *ax; int ay; e az; ba() { an::au<an::v>(ax, ay, &az); }