From patchwork Thu Aug 25 22:14:12 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gab Charette X-Patchwork-Id: 111682 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 0899CB6F7E for ; Fri, 26 Aug 2011 08:14:38 +1000 (EST) Received: (qmail 435 invoked by alias); 25 Aug 2011 22:14:35 -0000 Received: (qmail 426 invoked by uid 22791); 25 Aug 2011 22:14:34 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RP_MATCHES_RCVD, SPF_HELO_PASS, TW_CX X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 25 Aug 2011 22:14:17 +0000 Received: from hpaq13.eem.corp.google.com (hpaq13.eem.corp.google.com [172.25.149.13]) by smtp-out.google.com with ESMTP id p7PMEGdP020998; Thu, 25 Aug 2011 15:14:16 -0700 Received: from gchare.mtv.corp.google.com (gchare.mtv.corp.google.com [172.18.111.122]) by hpaq13.eem.corp.google.com with ESMTP id p7PMEDZ3002043; Thu, 25 Aug 2011 15:14:13 -0700 Received: by gchare.mtv.corp.google.com (Postfix, from userid 138564) id A62941C1EDC; Thu, 25 Aug 2011 15:14:12 -0700 (PDT) To: reply@codereview.appspotmail.com, crowl@google.com, dnovillo@google.com, jason@redhat.com, stevenb.gcc@gmail.com, gcc-patches@gcc.gnu.org Subject: [pph] Use REAL_IDENTIFIER_TYPE_VALUE instead of TREE_TYPE for IDENTIFIER_NODE (issue4965046) Message-Id: <20110825221412.A62941C1EDC@gchare.mtv.corp.google.com> Date: Thu, 25 Aug 2011 15:14:12 -0700 (PDT) From: gchare@google.com (Gabriel Charette) X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org 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 * 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 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: