[PATCH] complex type canonicalization
[official-gcc.git] / gcc / testsuite / g++.dg / opt / pr83187.C
blob632d64b18e8bb5c1f1f83e901beea1cd33532cc3
1 // { dg-do compile { target c++11 } }
2 // { dg-additional-options "-O1 -Wno-pedantic" }
3 // PR c++/83187 ICE in get_alias_set due to canonical type confusion.
5 extern "C" {
6   double cos (double);
7   double sin (double);
10 template <typename> class COMPLEX;
12 template <>
13 struct COMPLEX<double>
15   COMPLEX(double r, double i);
17   __complex__ mem;
20 COMPLEX<double>::COMPLEX (double r, double i)
21   : mem {r, i} {}
23 typedef double dbl_t;
25 dbl_t var;
27 void foo (COMPLEX<double> *ptr)
29   const dbl_t unused = var;
31   *ptr = COMPLEX<double> (cos (var), sin (var));