From 13f649f66cbd81ef7c508e6b6e2740ba7eb566c0 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 17 Dec 2014 15:41:07 -0500 Subject: [PATCH] * constexpr.c: Tweak comments and formatting. From-SVN: r218830 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/constexpr.c | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 42c0bb50db1..7c52b99a278 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2014-12-17 Jason Merrill + + * constexpr.c: Tweak comments and formatting. + 2014-12-16 Paolo Carlini PR c++/58650 diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 732a79cdf18..1323111d3a9 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -1,6 +1,5 @@ -/* Perform the semantic phase of constexpr parsing, i.e., the process of - building tree structure, checking semantic consistency, and - building RTL. These routines are used both during actual parsing +/* Perform -*- C++ -*- constant expression evaluation, including calls to + constexpr functions. These routines are used both during actual parsing and during the instantiation of template functions. Copyright (C) 1998-2014 Free Software Foundation, Inc. @@ -866,11 +865,20 @@ struct constexpr_call_hasher : ggc_hasher is a map of values of variables initialized within the expression. */ struct constexpr_ctx { + /* The innermost call we're evaluating. */ constexpr_call *call; + /* Values for any temporaries or local variables within the + constant-expression. */ hash_map *values; + /* The CONSTRUCTOR we're currently building up for an aggregate + initializer. */ tree ctor; + /* The object we're building the CONSTRUCTOR for. */ tree object; + /* Whether we should error on a non-constant expression or fail quietly. */ bool quiet; + /* Whether we are strictly conforming to constant expression rules or + trying harder to get a constant value. */ bool strict; }; @@ -3428,9 +3436,8 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant, { bool non_constant_p = false; bool overflow_p = false; - constexpr_ctx ctx = { NULL, NULL, NULL, NULL, allow_non_constant, strict }; hash_map map; - ctx.values = ↦ + constexpr_ctx ctx = { NULL, &map, NULL, NULL, allow_non_constant, strict }; tree type = initialized_type (t); tree r = t; if (AGGREGATE_TYPE_P (type) || VECTOR_TYPE_P (type)) @@ -3537,9 +3544,8 @@ is_sub_constant_expr (tree t) { bool non_constant_p = false; bool overflow_p = false; - constexpr_ctx ctx = { NULL, NULL, NULL, NULL, true, true }; hash_map map; - ctx.values = ↦ + constexpr_ctx ctx = { NULL, &map, NULL, NULL, true, true }; cxx_eval_constant_expression (&ctx, t, false, &non_constant_p, &overflow_p); return !non_constant_p && !overflow_p; -- 2.30.2