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.*
isnullpointer_msvc2.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
