* constexpr.c: Tweak comments and formatting.
authorJason Merrill <jason@redhat.com>
Wed, 17 Dec 2014 20:41:07 +0000 (15:41 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 17 Dec 2014 20:41:07 +0000 (15:41 -0500)
From-SVN: r218830

gcc/cp/ChangeLog
gcc/cp/constexpr.c

index 42c0bb50db124648d5f9b948da0633d682610354..7c52b99a278d522070f7f59b6cf31d9fce690923 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-17  Jason Merrill  <jason@redhat.com>
+
+       * constexpr.c: Tweak comments and formatting.
+
 2014-12-16  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/58650
index 732a79cdf182bc512ef5b3ace35b0d04cf2682e3..1323111d3a9955bf269647b59f799618b33a33e8 100644 (file)
@@ -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<constexpr_call *>
    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<tree,tree> *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<tree,tree> map;
-  ctx.values = &map;
+  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 <tree, tree> map;
-  ctx.values = &map;
+  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;