r215609 - Sema: Permit nullptr template args in MSVC compat mode

Bill Wendling isanbard at gmail.com
Sun Aug 17 22:27:27 PDT 2014


Done.

-bw

On Aug 13, 2014, at 6:08 PM, Richard Smith <richard at metafoo.co.uk> wrote:

> Yes, please.
> 
> 
> On Wed, Aug 13, 2014 at 6:03 PM, David Majnemer <david.majnemer at gmail.com> wrote:
> Should this get merged for the next release?
> 
> 
> On Wed, Aug 13, 2014 at 5:49 PM, David Majnemer <david.majnemer at gmail.com> wrote:
> Author: majnemer
> Date: Wed Aug 13 19:49:23 2014
> New Revision: 215609
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=215609&view=rev
> Log:
> Sema: Permit nullptr template args in MSVC compat mode
> 
> This fixes a regression I caused back in r211766.
> 
> Modified:
>     cfe/trunk/lib/Sema/SemaTemplate.cpp
>     cfe/trunk/test/Parser/MicrosoftExtensions.cpp
> 
> Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplate.cpp?rev=215609&r1=215608&r2=215609&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Wed Aug 13 19:49:23 2014
> @@ -4189,7 +4189,7 @@ isNullPointerValueTemplateArgument(Sema
>    if (Arg->isValueDependent() || Arg->isTypeDependent())
>      return NPV_NotNullPointer;
> 
> -  if (!S.getLangOpts().CPlusPlus11 || S.getLangOpts().MSVCCompat)
> +  if (!S.getLangOpts().CPlusPlus11)
>      return NPV_NotNullPointer;
> 
>    // Determine whether we have a constant expression.
> 
> Modified: cfe/trunk/test/Parser/MicrosoftExtensions.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/MicrosoftExtensions.cpp?rev=215609&r1=215608&r2=215609&view=diff
> ==============================================================================
> --- cfe/trunk/test/Parser/MicrosoftExtensions.cpp (original)
> +++ cfe/trunk/test/Parser/MicrosoftExtensions.cpp Wed Aug 13 19:49:23 2014
> @@ -118,7 +118,7 @@ typedef COM_CLASS_TEMPLATE_REF<struct_wi
> 
>  COM_CLASS_TEMPLATE_REF<int, __uuidof(struct_with_uuid)> good_template_arg;
> 
> -COM_CLASS_TEMPLATE<int, __uuidof(struct_with_uuid)> bad_template_arg; // expected-error {{non-type template argument of type 'const _GUID' cannot be converted to a value of type 'const GUID *' (aka 'const _GUID *')}}
> +COM_CLASS_TEMPLATE<int, __uuidof(struct_with_uuid)> bad_template_arg; // expected-error {{non-type template argument of type 'const _GUID' is not a constant expression}}
> 
>  namespace PR16911 {
>  struct __declspec(uuid("{12345678-1234-1234-1234-1234567890aB}")) uuid;
> @@ -357,3 +357,7 @@ void *_alloca(int);
>  void foo(void) {
>    __declspec(align(16)) int *buffer = (int *)_alloca(9);
>  }
> +
> +template <int *>
> +struct NullptrArg {};
> +NullptrArg<nullptr> a;
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140817/8e292fcc/attachment.html>


More information about the cfe-commits mailing list