Thanks Richard. Updated patch with comment attached ready for committing
(if it looks acceptable).

Cheers,
Will.


On 7 November 2013 00:25, Richard Smith <[email protected]> wrote:

> LGTM. But please add a comment to AST/Expr.cpp near the
> isCXX98IntegralConstantExpr check to say that we follow the C++98 rules in
> Microsoft mode.
>
>
> On Wed, Nov 6, 2013 at 5:31 AM, Will Wilson <[email protected]> wrote:
>
>> Thanks David! Patch attached...
>>
>>
>> On 6 November 2013 14:25, David Majnemer <[email protected]>wrote:
>>
>>> There doesn't seem to see a patch attached.
>>>
>>>
>>> On Wed, Nov 6, 2013 at 2:50 AM, Will Wilson <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]>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
>>>>>>> [email protected]
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Indefiant Ltd.*
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Indefiant Ltd.*
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> [email protected]
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>>
>>>>
>>>
>>
>>
>> --
>> *Indefiant Ltd.*
>>
>
>


-- 
*Indefiant Ltd.*

Attachment: isnullpointer_msvc2.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to