1// Origin: PR 44641
2// { dg-do compile }
3// { dg-options "-g -O0 -dA" }
4
5template <class A> struct MisplacedDbg;
6template<class T> struct MisplacedDbg<T*>;
7struct Full;
8template<> struct MisplacedDbg<Full>;
9
10struct Arg;
11typedef MisplacedDbg<Arg> Typedef1;
12typedef MisplacedDbg<Arg*> Typedef2;
13typedef MisplacedDbg<Full> Typedef3;
14
15template<typename T> struct Base  {
16  int i;
17  virtual ~Base() {
18  }
19};
20
21template <>
22struct MisplacedDbg<Full>  // { dg-function-on-line {_ZN12MisplacedDbgI4FullEC[12]Ev} }
23                           // { dg-function-on-line {_ZN12MisplacedDbgI4FullED0Ev} { target *-*-* } 22 }
24
25    : public Base<int> {
26};
27
28template <class T>
29struct MisplacedDbg<T*>  // { dg-function-on-line {_ZN12MisplacedDbgIP3ArgEC[12]Ev} }
30                         // { dg-function-on-line {_ZN12MisplacedDbgIP3ArgED0Ev} { target *-*-* } 29 }
31    : public Base<int> {
32};
33
34template <class A>
35struct MisplacedDbg  // { dg-function-on-line {_ZN12MisplacedDbgI3ArgEC[12]Ev} }
36                     // { dg-function-on-line {_ZN12MisplacedDbgI3ArgED0Ev} { target *-*-* } 35 }
37    : public Base<int> {
38};
39
40static MisplacedDbg<Arg> static_var1;
41static MisplacedDbg<Arg*> static_var2;
42static MisplacedDbg<Full> static_var3;
43