This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/57979] G++ accepts constant expression defined using floating point non-constexpr glvalue


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57979

--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Wed Nov 19 22:06:17 2014
New Revision: 217814

URL: https://gcc.gnu.org/viewcvs?rev=217814&root=gcc&view=rev
Log:
    PR c++/57979
    * init.c (decl_really_constant_value): Rename from
    integral_constant_value.
    (scalar_constant_value): Similar but limited to scalar results.
    (decl_constant_value_safe): Remove.
    (constant_value_1): Respect return_aggregate_cst_ok_p.
    * typeck.c (decay_conversion): Use scalar_constant_value.
    * call.c (convert_like_real): Likewise.
    * cvt.c (ocp_convert): No need to check CLASS_TYPE_P.
    * typeck.c (decay_conversion): Or ARRAY_TYPE.
    * constexpr.c (struct constexpr_ctx): Add strict field.
    (cxx_eval_constant_expression) [VAR_DECL]: Use it to select between
    decl_constant_value and decl_really_constant_value.
    (cxx_eval_outermost_constant_expr): Add strict parm.
    (maybe_constant_init): Not strict.
    (potential_constant_expression_1): Add strict parm.
    Shorten most internal calls with RECUR macro.
    * cp-tree.h, pt.c, semantics.c: Adjust.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/call.c
    trunk/gcc/cp/constexpr.c
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/cvt.c
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/init.c
    trunk/gcc/cp/pt.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/cp/typeck.c
    trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
    trunk/gcc/testsuite/g++.dg/cpp0x/nullptr06.C


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]