r217997 - Skip parens when detecting whether we're instantiating a function declaration.
Renato Golin
renato.golin at linaro.org
Thu Sep 18 10:16:41 PDT 2014
Hi Richard,
Have you had time to look at this?
http://lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/builds/21803
cheers,
--renato
On 18 September 2014 01:12, Richard Smith <richard-llvm at metafoo.co.uk> wrote:
> Author: rsmith
> Date: Wed Sep 17 19:12:09 2014
> New Revision: 217997
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217997&view=rev
> Log:
> Skip parens when detecting whether we're instantiating a function declaration.
>
> Modified:
> cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
> cfe/trunk/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp
>
> Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp?rev=217997&r1=217996&r2=217997&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp Wed Sep 17 19:12:09 2014
> @@ -1577,8 +1577,8 @@ TypeSourceInfo *Sema::SubstFunctionDeclT
>
> QualType Result;
>
> - // FIXME: What if the function type is parenthesized?
> - if (FunctionProtoTypeLoc Proto = TL.getAs<FunctionProtoTypeLoc>()) {
> + if (FunctionProtoTypeLoc Proto =
> + TL.IgnoreParens().getAs<FunctionProtoTypeLoc>()) {
> // Instantiate the type, other than its exception specification. The
> // exception specification is instantiated in InitFunctionInstantiation
> // once we've built the FunctionDecl.
>
> Modified: cfe/trunk/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp?rev=217997&r1=217996&r2=217997&view=diff
> ==============================================================================
> --- cfe/trunk/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp (original)
> +++ cfe/trunk/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp Wed Sep 17 19:12:09 2014
> @@ -58,6 +58,13 @@ namespace dr1330_example {
> S().f<S>(); // ok
> S().f<int>(); // expected-note {{instantiation of exception spec}}
> }
> +
> + template<typename T>
> + struct U {
> + void f() noexcept(T::error);
> + void (g)() noexcept(T::error);
> + };
> + U<int> uint; // ok
> }
>
> namespace core_19754_example {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list