From a09e44c75d13edfbdc0a70bf517e625886e092db Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 31 Jul 2013 21:00:18 +0000 Subject: Fix declaring class template methods with an attributed typedef This change unifies the logic for template instantiation of methods and functions declared with typedefs. It ensures that SubstFunctionType() always fills the Params out param with non-null ParmVarDecls or returns null. Reviewers: rsmith Differential Revision: http://llvm-reviews.chandlerc.com/D1135 llvm-svn: 187528 --- clang/test/SemaTemplate/instantiate-function-params.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'clang/test/SemaTemplate/instantiate-function-params.cpp') diff --git a/clang/test/SemaTemplate/instantiate-function-params.cpp b/clang/test/SemaTemplate/instantiate-function-params.cpp index 7ab21c7d7ed..5bfae537c04 100644 --- a/clang/test/SemaTemplate/instantiate-function-params.cpp +++ b/clang/test/SemaTemplate/instantiate-function-params.cpp @@ -81,18 +81,21 @@ namespace InstantiateFunctionTypedef { template struct X { typedef int functype(int, int); - functype func; + functype func1; + __attribute__((noreturn)) functype func2; typedef int stdfunctype(int, int) __attribute__((stdcall)); __attribute__((stdcall)) functype stdfunc1; stdfunctype stdfunc2; - // FIXME: Test a calling convention not supported by this target. + __attribute__((pcs("aapcs"))) functype pcsfunc; // expected-warning {{calling convention 'pcs' ignored for this target}} }; void f(X x) { - (void)x.func(1, 2); + (void)x.func1(1, 2); + (void)x.func2(1, 2); (void)x.stdfunc1(1, 2); (void)x.stdfunc2(1, 2); + (void)x.pcsfunc(1, 2); } } -- cgit v1.2.3