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