blob: 53599f7f4c331815ceebf77f363ef92755b989fe [file] [log] [blame]
// { dg-do compile { target c++11 } }
// { dg-options -Wabi=10 }
struct [[gnu::abi_tag ("foo")]] A
{
template <class T> static T f();
template <class T> static A g();
};
template <class T> struct B
{
static decltype(A::f<T>()) fa(decltype(A::f<T>()));
static decltype(A::f<T>()) fv(); // { dg-warning "mangled name" }
static decltype(A::g<T>()) ga(decltype(A::g<T>()));
static decltype(A::g<T>()) gv();
template <class U>
static decltype(A::f<U>()) hv();
};
int main()
{
B<int>::fa(0); // { dg-final { scan-assembler "_ZN1BIiE2faEi" } }
B<int>::fv(); // { dg-final { scan-assembler "_ZN1BIiE2fvEv" } }
B<int>::ga(A()); // { dg-final { scan-assembler "_ZN1BIiE2gaE1AB3foo" } }
B<int>::gv(); // { dg-final { scan-assembler "_ZN1BIiE2gvB3fooEv" } }
B<int>::hv<int>(); // { dg-final { scan-assembler "_ZN1BIiE2hvIiEEDTclsr1AB3foo1fIT_EEEv" } }
}