From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 756 invoked by alias); 1 Nov 2012 07:47:13 -0000 Received: (qmail 596 invoked by uid 22791); 1 Nov 2012 07:47:11 -0000 X-SWARE-Spam-Status: No, hits=-4.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,TW_CP X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 01 Nov 2012 07:47:07 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1TTpUY-0003gj-Kd from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Thu, 01 Nov 2012 00:47:06 -0700 Received: from SVR-ORW-FEM-04.mgc.mentorg.com ([147.34.97.41]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 1 Nov 2012 00:47:05 -0700 Received: from qiyao.dyndns.org.dyndns.org (147.34.91.1) by svr-orw-fem-04.mgc.mentorg.com (147.34.97.41) with Microsoft SMTP Server id 14.1.289.1; Thu, 1 Nov 2012 00:47:03 -0700 From: Yao Qi To: Subject: [PATCH 1/6] Remove OP_LABELED. Date: Thu, 01 Nov 2012 07:47:00 -0000 Message-ID: <1351756007-18242-2-git-send-email-yao@codesourcery.com> In-Reply-To: <1351756007-18242-1-git-send-email-yao@codesourcery.com> References: <1351756007-18242-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-11/txt/msg00005.txt.bz2 This patch is to remove OP_LABELED. Once OP_LABELED is removed, function get_label always return NULL, so this function can be removed as well, and its caller can be simplified. Indentation will be done in follow-up patch. gdb: 2012-11-01 Yao Qi * std-operator.def: Remove OP_LABELED. * eval.c: Remove the declaration of 'get_label'. (get_label): Remove. (evaluate_struct_tuple): Remove code handling OP_LABELED. * expprint.c (print_subexp_standard): Likewise. (dump_subexp_body_standard): Likewise. * parse.c (operator_length_standard): Likewise. --- gdb/eval.c | 86 -------------------------------------------------- gdb/expprint.c | 16 --------- gdb/parse.c | 1 - gdb/std-operator.def | 13 ------- 4 files changed, 0 insertions(+), 116 deletions(-) diff --git a/gdb/eval.c b/gdb/eval.c index 26e0cc8..011b3fe 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -56,8 +56,6 @@ static struct value *evaluate_subexp_for_sizeof (struct expression *, int *); static struct value *evaluate_subexp_for_address (struct expression *, int *, enum noside); -static char *get_label (struct expression *, int *); - static struct value *evaluate_struct_tuple (struct value *, struct expression *, int *, enum noside, int); @@ -280,25 +278,6 @@ extract_field_op (struct expression *exp, int *subexp) return result; } -/* If the next expression is an OP_LABELED, skips past it, - returning the label. Otherwise, does nothing and returns NULL. */ - -static char * -get_label (struct expression *exp, int *pos) -{ - if (exp->elts[*pos].opcode == OP_LABELED) - { - int pc = (*pos)++; - char *name = &exp->elts[pc + 2].string; - int tem = longest_to_int (exp->elts[pc + 1].longconst); - - (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1); - return name; - } - else - return NULL; -} - /* This function evaluates tuples (in (the deleted) Chill) or brace-initializers (in C/C++) for structure types. */ @@ -316,74 +295,10 @@ evaluate_struct_tuple (struct value *struct_val, while (--nargs >= 0) { - int pc = *pos; struct value *val = NULL; - int nlabels = 0; int bitpos, bitsize; bfd_byte *addr; - - /* Skip past the labels, and count them. */ - while (get_label (exp, pos) != NULL) - nlabels++; - - do { - char *label = get_label (exp, &pc); - - if (label) - { - for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); - fieldno++) - { - const char *field_name = - TYPE_FIELD_NAME (struct_type, fieldno); - - if (field_name != NULL && strcmp (field_name, label) == 0) - { - variantno = -1; - subfieldno = fieldno; - substruct_type = struct_type; - goto found; - } - } - for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); - fieldno++) - { - const char *field_name = - TYPE_FIELD_NAME (struct_type, fieldno); - - field_type = TYPE_FIELD_TYPE (struct_type, fieldno); - if ((field_name == 0 || *field_name == '\0') - && TYPE_CODE (field_type) == TYPE_CODE_UNION) - { - variantno = 0; - for (; variantno < TYPE_NFIELDS (field_type); - variantno++) - { - substruct_type - = TYPE_FIELD_TYPE (field_type, variantno); - if (TYPE_CODE (substruct_type) == TYPE_CODE_STRUCT) - { - for (subfieldno = 0; - subfieldno < TYPE_NFIELDS (substruct_type); - subfieldno++) - { - if (strcmp(TYPE_FIELD_NAME (substruct_type, - subfieldno), - label) == 0) - { - goto found; - } - } - } - } - } - } - error (_("there is no field named %s"), label); - found: - ; - } - else { /* Unlabelled tuple element - go to next field. */ if (variantno >= 0) @@ -444,7 +359,6 @@ evaluate_struct_tuple (struct value *struct_val, memcpy (addr, value_contents (val), TYPE_LENGTH (value_type (val))); } - while (--nlabels > 0); } return struct_val; } diff --git a/gdb/expprint.c b/gdb/expprint.c index baaa08a..129dfa7 100644 --- a/gdb/expprint.c +++ b/gdb/expprint.c @@ -328,21 +328,6 @@ print_subexp_standard (struct expression *exp, int *pos, } return; - case OP_LABELED: - tem = longest_to_int (exp->elts[pc + 1].longconst); - (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1); - /* Gcc support both these syntaxes. Unsure which is preferred. */ -#if 1 - fputs_filtered (&exp->elts[pc + 2].string, stream); - fputs_filtered (": ", stream); -#else - fputs_filtered (".", stream); - fputs_filtered (&exp->elts[pc + 2].string, stream); - fputs_filtered ("=", stream); -#endif - print_subexp (exp, pos, stream, PREC_SUFFIX); - return; - case TERNOP_COND: if ((int) prec > (int) PREC_COMMA) fputs_filtered ("(", stream); @@ -1031,7 +1016,6 @@ dump_subexp_body_standard (struct expression *exp, case OP_BOOL: case OP_M2_STRING: case OP_THIS: - case OP_LABELED: case OP_NAME: fprintf_filtered (stream, "Unknown format"); } diff --git a/gdb/parse.c b/gdb/parse.c index 3ec1e25..afe1c18 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -951,7 +951,6 @@ operator_length_standard (const struct expression *expr, int endpos, oplen++; break; - case OP_LABELED: case STRUCTOP_STRUCT: case STRUCTOP_PTR: args = 1; diff --git a/gdb/std-operator.def b/gdb/std-operator.def index dcba39f..5df0081 100644 --- a/gdb/std-operator.def +++ b/gdb/std-operator.def @@ -286,19 +286,6 @@ OP (OP_OBJC_SELECTOR) a string, which, of course, is variable length. */ OP (OP_SCOPE) -/* Used to represent named structure field values in brace - initializers (or tuples as they are called in (the deleted) - Chill). - - The gcc C syntax is NAME:VALUE or .NAME=VALUE, the (the - deleted) Chill syntax is .NAME:VALUE. Multiple labels (as in - the (the deleted) Chill syntax .NAME1,.NAME2:VALUE) is - represented as if it were .NAME1:(.NAME2:VALUE) (though that is - not valid (the deleted) Chill syntax). - - The NAME is represented as for STRUCTOP_STRUCT; VALUE follows. */ -OP (OP_LABELED) - /* OP_TYPE is for parsing types, and used with the "ptype" command so we can look up types that are qualified by scope, either with the GDB "::" operator, or the Modula-2 '.' operator. */ -- 1.7.7.6