diff mbox

[pph] Use REAL_IDENTIFIER_TYPE_VALUE instead of TREE_TYPE for IDENTIFIER_NODE (issue4965046)

Message ID 20110825221412.A62941C1EDC@gchare.mtv.corp.google.com
State New
Headers show

Commit Message

Gab Charette Aug. 25, 2011, 10:14 p.m. UTC
This was the last thing remaining on my cleanup list.

As suggested by Steven and Jason in issue4550121, we should use REAL_IDENTIFIER_TYPE_VALUE for IDENTIFIER_NODEs instead of TREE_TYPE (although the former resolves to the later in its macro definition, this is more robust to potential later changes to TREE_TYPE in trunk).
This patch does that change.

As mentionned by Steven in the same issue, we were accessing some fields directly instead of correctly using their corresponding accessor macros.
This patch makes use of the correct accessor macros for pph_read/write_tree_body.

There is no implementation change in this patch, every macro used resolves to what we it replaces, if anything this will make the pph code slightly more robust to trunk merges.

Tested with boostrap and pph regression testing on x64.

Cheers,
Gab

2011-08-25  Gabriel Charette  <gchare@google.com>

	* pph-streamer-in.c (pph_read_tree_body): Use accessor macros for
	all fields. Use REAL_IDENTIFIER_TYPE_VALUE instead of TREE_TYPE
	for the IDENTIFIER_NODE case.
	* pph-streamer-out.c (pph_write_tree_body): Likewise.


--
This patch is available for review at http://codereview.appspot.com/4965046

Comments

Diego Novillo Aug. 25, 2011, 10:17 p.m. UTC | #1
On Thu, Aug 25, 2011 at 18:14, Gabriel Charette <gchare@google.com> wrote:
> This was the last thing remaining on my cleanup list.
>
> As suggested by Steven and Jason in issue4550121, we should use REAL_IDENTIFIER_TYPE_VALUE for IDENTIFIER_NODEs instead of TREE_TYPE (although the former resolves to the later in its macro definition, this is more robust to potential later changes to TREE_TYPE in trunk).
> This patch does that change.
>
> As mentionned by Steven in the same issue, we were accessing some fields directly instead of correctly using their corresponding accessor macros.
> This patch makes use of the correct accessor macros for pph_read/write_tree_body.

Nice!  Thanks for this cleanup.

> 2011-08-25  Gabriel Charette  <gchare@google.com>
>
>        * pph-streamer-in.c (pph_read_tree_body): Use accessor macros for
>        all fields. Use REAL_IDENTIFIER_TYPE_VALUE instead of TREE_TYPE
>        for the IDENTIFIER_NODE case.
>        * pph-streamer-out.c (pph_write_tree_body): Likewise.

OK.


Diego.
diff mbox

Patch

diff --git a/gcc/cp/pph-streamer-in.c b/gcc/cp/pph-streamer-in.c
index f37feaf..2fcb436 100644
--- a/gcc/cp/pph-streamer-in.c
+++ b/gcc/cp/pph-streamer-in.c
@@ -1826,14 +1826,11 @@  pph_read_tree_body (pph_stream *stream, tree expr)
       break;
 
     case IDENTIFIER_NODE:
-      {
-        struct lang_identifier *id = LANG_IDENTIFIER_CAST (expr);
-        id->namespace_bindings = pph_in_cxx_binding (stream);
-        id->bindings = pph_in_cxx_binding (stream);
-        id->class_template_info = pph_in_tree (stream);
-        id->label_value = pph_in_tree (stream);
-	TREE_TYPE (expr) = pph_in_tree (stream);
-      }
+      IDENTIFIER_NAMESPACE_BINDINGS (expr) = pph_in_cxx_binding (stream);
+      IDENTIFIER_BINDING (expr) = pph_in_cxx_binding (stream);
+      IDENTIFIER_TEMPLATE (expr) = pph_in_tree (stream);
+      IDENTIFIER_LABEL_VALUE (expr) = pph_in_tree (stream);
+      REAL_IDENTIFIER_TYPE_VALUE (expr) = pph_in_tree (stream);
       break;
 
     case BASELINK:
@@ -1876,17 +1873,13 @@  pph_read_tree_body (pph_stream *stream, tree expr)
       break;
 
     case LAMBDA_EXPR:
-      {
-        struct tree_lambda_expr *e
-            = (struct tree_lambda_expr *)LAMBDA_EXPR_CHECK (expr);
-        pph_in_tree_common (stream, expr);
-	e->locus = pph_in_location (stream);
-        e->capture_list = pph_in_tree (stream);
-        e->this_capture = pph_in_tree (stream);
-        e->return_type = pph_in_tree (stream);
-        e->extra_scope = pph_in_tree (stream);
-        e->discriminator = pph_in_uint (stream);
-      }
+      pph_in_tree_common (stream, expr);
+      LAMBDA_EXPR_LOCATION (expr) = pph_in_location (stream);
+      LAMBDA_EXPR_CAPTURE_LIST (expr) = pph_in_tree (stream);
+      LAMBDA_EXPR_THIS_CAPTURE (expr) = pph_in_tree (stream);
+      LAMBDA_EXPR_RETURN_TYPE (expr) = pph_in_tree (stream);
+      LAMBDA_EXPR_EXTRA_SCOPE (expr) = pph_in_tree (stream);
+      LAMBDA_EXPR_DISCRIMINATOR (expr) = pph_in_uint (stream);
       break;
 
     case TREE_VEC:
@@ -1899,15 +1892,12 @@  pph_read_tree_body (pph_stream *stream, tree expr)
       break;
 
     case TEMPLATE_PARM_INDEX:
-      {
-        template_parm_index *p = TEMPLATE_PARM_INDEX_CAST (expr);
-        pph_in_tree_common (stream, expr);
-        p->index = pph_in_uint (stream);
-        p->level = pph_in_uint (stream);
-        p->orig_level = pph_in_uint (stream);
-        p->num_siblings = pph_in_uint (stream);
-        p->decl = pph_in_tree (stream);
-      }
+      pph_in_tree_common (stream, expr);
+      TEMPLATE_PARM_IDX (expr) = pph_in_uint (stream);
+      TEMPLATE_PARM_LEVEL (expr) = pph_in_uint (stream);
+      TEMPLATE_PARM_ORIG_LEVEL (expr) = pph_in_uint (stream);
+      TEMPLATE_PARM_NUM_SIBLINGS (expr) = pph_in_uint (stream);
+      TEMPLATE_PARM_DECL (expr) = pph_in_tree (stream);
       break;
 
     case DEFERRED_NOEXCEPT:
diff --git a/gcc/cp/pph-streamer-out.c b/gcc/cp/pph-streamer-out.c
index 3f7ac0c..27495e7 100644
--- a/gcc/cp/pph-streamer-out.c
+++ b/gcc/cp/pph-streamer-out.c
@@ -1612,14 +1612,11 @@  pph_write_tree_body (pph_stream *stream, tree expr)
       break;
 
     case IDENTIFIER_NODE:
-      {
-        struct lang_identifier *id = LANG_IDENTIFIER_CAST (expr);
-        pph_out_cxx_binding (stream, id->namespace_bindings);
-        pph_out_cxx_binding (stream, id->bindings);
-        pph_out_tree_1 (stream, id->class_template_info, 3);
-        pph_out_tree_1 (stream, id->label_value, 3);
-	pph_out_tree_1 (stream, TREE_TYPE (expr), 3);
-      }
+      pph_out_cxx_binding (stream, IDENTIFIER_NAMESPACE_BINDINGS (expr));
+      pph_out_cxx_binding (stream, IDENTIFIER_BINDING (expr));
+      pph_out_tree_1 (stream, IDENTIFIER_TEMPLATE (expr), 3);
+      pph_out_tree_1 (stream, IDENTIFIER_LABEL_VALUE (expr), 3);
+      pph_out_tree_1 (stream, REAL_IDENTIFIER_TYPE_VALUE (expr), 3);
       break;
 
     case BASELINK:
@@ -1661,17 +1658,13 @@  pph_write_tree_body (pph_stream *stream, tree expr)
       break;
 
     case LAMBDA_EXPR:
-      {
-        struct tree_lambda_expr *e
-            = (struct tree_lambda_expr *)LAMBDA_EXPR_CHECK (expr);
-        pph_out_tree_common (stream, expr);
-	pph_out_location (stream, e->locus);
-        pph_out_tree_1 (stream, e->capture_list, 3);
-        pph_out_tree_1 (stream, e->this_capture, 3);
-        pph_out_tree_1 (stream, e->return_type, 3);
-        pph_out_tree_1 (stream, e->extra_scope, 3);
-        pph_out_uint (stream, e->discriminator);
-      }
+      pph_out_tree_common (stream, expr);
+      pph_out_location (stream, LAMBDA_EXPR_LOCATION (expr));
+      pph_out_tree_1 (stream, LAMBDA_EXPR_CAPTURE_LIST (expr), 3);
+      pph_out_tree_1 (stream, LAMBDA_EXPR_THIS_CAPTURE (expr), 3);
+      pph_out_tree_1 (stream, LAMBDA_EXPR_RETURN_TYPE (expr), 3);
+      pph_out_tree_1 (stream, LAMBDA_EXPR_EXTRA_SCOPE (expr), 3);
+      pph_out_uint (stream, LAMBDA_EXPR_DISCRIMINATOR (expr));
       break;
 
     case TREE_VEC:
@@ -1684,15 +1677,12 @@  pph_write_tree_body (pph_stream *stream, tree expr)
       break;
 
     case TEMPLATE_PARM_INDEX:
-      {
-        template_parm_index *p = TEMPLATE_PARM_INDEX_CAST (expr);
-        pph_out_tree_common (stream, expr);
-        pph_out_uint (stream, p->index);
-        pph_out_uint (stream, p->level);
-        pph_out_uint (stream, p->orig_level);
-        pph_out_uint (stream, p->num_siblings);
-        pph_out_tree_1 (stream, p->decl, 3);
-      }
+      pph_out_tree_common (stream, expr);
+      pph_out_uint (stream, TEMPLATE_PARM_IDX (expr));
+      pph_out_uint (stream, TEMPLATE_PARM_LEVEL (expr));
+      pph_out_uint (stream, TEMPLATE_PARM_ORIG_LEVEL (expr));
+      pph_out_uint (stream, TEMPLATE_PARM_NUM_SIBLINGS (expr));
+      pph_out_tree_1 (stream, TEMPLATE_PARM_DECL (expr), 3);
       break;
 
     case DEFERRED_NOEXCEPT: