[PATCH] Fix: Relax nullptr C++11 rules in ms-mode

David Majnemer david.majnemer at gmail.com
Wed Nov 6 05:25:43 PST 2013


There doesn't seem to see a patch attached.


On Wed, Nov 6, 2013 at 2:50 AM, Will Wilson <will at indefiant.com> wrote:

> Hi Richard,
>
> Only just had another crack at this MS mode issue. I've updated the patch
> and added your example to the test case. The new version correctly mirrors
> MSVC's handling in clang with C++11 mode active.
>
> All tests pass and clang-format applied. Let me know what you think.
>
> Cheers,
> Will.
>
>
> On 28 August 2013 03:11, Will Wilson <will at indefiant.com> wrote:
>
>> Thanks for the review (and catching the fail on my part)!
>>
>> MSVC accepts your templated example without complaint. The patched clang
>> asserts in EvalAddr() in SemaChecking.cpp after being called by
>> Sema::CheckReturnStackAddr() with "EvalAddr only works on pointers" using
>> your example case.
>>
>> Do you have some ideas on how best to support this facet of MSVC behavior
>> without uglifying the code too much?
>>
>> Thanks,
>> Will.
>>
>>
>> On 27 August 2013 22:04, Richard Smith <richard at metafoo.co.uk> wrote:
>>
>>> Please use isCXX98IntegralConstantExpr, not isIntegerConstantExpr, in
>>> C++11 + MicrosoftMode. (Take a look at how we behaved prior to r183883.) We
>>> *really* don't want to use full constexpr evaluation when determining
>>> whether an expression is a null pointer constant.
>>>
>>> Also, this patch tries to evaluate value-dependent potential null
>>> pointer constants in C++11 + MicrosoftMode. That's not OK, and will
>>> sometimes assert. How should we behave here? Does MSVC accept this:
>>>
>>> template<int N> int *f() { return N; }
>>> int *p = f<0>();
>>>
>>> ?
>>>
>>>
>>> On Tue, Aug 27, 2013 at 10:05 AM, Will Wilson <will at indefiant.com>wrote:
>>>
>>>> Hi All,
>>>>
>>>> This patch uses the more relaxed integer expression codepath in
>>>> Expr::isNullPointerConstant() when MicrosoftMode is enabled, this reflects
>>>> MSVC behavior and is required to compile various cases I've come across in
>>>> MSVC targeted code.
>>>>
>>>> Test case included. Built and tested against latest code. Please review
>>>> and commit if possible.
>>>>
>>>> Thanks!
>>>> Will.
>>>>
>>>> --
>>>> *Indefiant Ltd.*
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>
>>>>
>>>
>>
>>
>> --
>> *Indefiant Ltd.*
>>
>
>
>
> --
> *Indefiant Ltd.*
>
> _______________________________________________
> 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/20131106/5ae604ec/attachment.html>


More information about the cfe-commits mailing list