Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr88149.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
// { dg-do compile } // { dg-additional-options "-ftree-vectorize" } template <typename> struct a; template <typename b> struct a<b *> { typedef long c; typedef b &d; }; template <typename e> class f { e ab; typedef a<e> ac; public: typename ac::d operator[](typename ac::c o) { return ab[o]; } }; template <typename> struct au; template <typename b> au<b> operator+(au<b> o, au<b> p2) { au<b> ax = o; ax += p2; return ax; } template <typename b> au<b> operator-(au<b> o, au<b> p2) { au<b> ax = o; ax -= p2; return ax; } template <typename b> au<b> operator*(au<b>, au<b> &p2) { au<b> ax; ax *= p2; return ax; } template <> struct au<double> { double p() { return __real__ az; } double q() { return __imag__ az; } void operator+=(au o) { az += o.p(); __imag__ az += o.q(); } void operator-=(au o) { az -= o.p(); __imag__ az -= o.q(); } void operator*=(au &o) { _Complex bd = o.p(); __imag__ bd = o.q(); az *= bd; } _Complex az; }; long bm, m; f<au<double> *> g; au<double> h, i, l; void bn() { au<double> bq; for (long k; m;) { au<double> br; for (long j = 0; j < bm; ++j) { au<double> n = br * h; i = l + n; g[k] = l - bq; } } }