From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iEjVHbjrsF8pOwAAWB0awg (envelope-from ) for ; Sun, 15 Nov 2020 03:50:00 -0500 Received: by simark.ca (Postfix, from userid 112) id 1F1551E776; Sun, 15 Nov 2020 03:49:59 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=MAILING_LIST_MULTI,RDNS_NONE autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 8049B1F08B for ; Sun, 15 Nov 2020 03:49:58 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 419D1388A40D; Sun, 15 Nov 2020 08:49:58 +0000 (GMT) Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id 759873857802 for ; Sun, 15 Nov 2020 08:49:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 759873857802 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=brobecke@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 55E1A5604E; Sun, 15 Nov 2020 03:49:55 -0500 (EST) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 8RlWySxWR9vB; Sun, 15 Nov 2020 03:49:55 -0500 (EST) Received: from tron.gnat.com (tron.gnat.com [205.232.38.10]) by rock.gnat.com (Postfix) with ESMTP id 462D856050; Sun, 15 Nov 2020 03:49:55 -0500 (EST) Received: by tron.gnat.com (Postfix, from userid 4233) id 44E5E111; Sun, 15 Nov 2020 03:49:55 -0500 (EST) From: Joel Brobecker To: gdb-patches@sourceware.org Subject: [RFA 5/6] Make function fixed_point_scaling_factor a method of struct type Date: Sun, 15 Nov 2020 03:49:43 -0500 Message-Id: <1605430184-81335-6-git-send-email-brobecker@adacore.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1605430184-81335-1-git-send-email-brobecker@adacore.com> References: <1604817017-25807-1-git-send-email-brobecker@adacore.com> <1605430184-81335-1-git-send-email-brobecker@adacore.com> X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Simon Marchi , Joel Brobecker Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" This logically connects this function to the object it inspects. gdb/ChangeLog: * gdbtypes.h (struct type) : New method, replacing fixed_point_scaling_factor. All callers updated throughout this project. (fixed_point_scaling_factor): Delete declaration. * gdbtypes.c (type::fixed_point_scaling_factor): Replaces fixed_point_scaling_factor. Adjust implementation accordingly. --- gdb/gdbtypes.c | 6 +++--- gdb/gdbtypes.h | 8 +++++--- gdb/typeprint.c | 2 +- gdb/valarith.c | 6 +++--- gdb/valops.c | 6 +++--- gdb/valprint.c | 2 +- gdb/value.c | 2 +- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index eb176c9..79c8121 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -4922,7 +4922,7 @@ static void print_fixed_point_type_info (struct type *type, int spaces) { printfi_filtered (spaces + 2, "scaling factor: %s\n", - fixed_point_scaling_factor (type).str ().c_str ()); + type->fixed_point_scaling_factor ().str ().c_str ()); } static struct obstack dont_print_type_obstack; @@ -5876,9 +5876,9 @@ type::fixed_point_type_base_type () /* See gdbtypes.h. */ const gdb_mpq & -fixed_point_scaling_factor (struct type *type) +type::fixed_point_scaling_factor () { - type = type->fixed_point_type_base_type (); + struct type *type = this->fixed_point_type_base_type (); return type->fixed_point_info ().scaling_factor; } diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 19f95f4..dc37f63 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -1224,6 +1224,11 @@ struct type struct type *fixed_point_type_base_type (); + /* * Assuming that THIS is a TYPE_CODE_FIXED_POINT, return its scaling + factor. */ + + const gdb_mpq &fixed_point_scaling_factor (); + /* * Return the dynamic property of the requested KIND from this type's list of dynamic properties. */ dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const; @@ -2589,9 +2594,6 @@ extern int type_not_associated (const struct type *type); a range type whose base type is a TYPE_CODE_FIXED_POINT. */ extern bool is_fixed_point_type (struct type *type); -/* Given TYPE, which is a fixed point type, return its scaling factor. */ -extern const gdb_mpq &fixed_point_scaling_factor (struct type *type); - /* Allocate a fixed-point type info for TYPE. This should only be called by INIT_FIXED_POINT_SPECIFIC. */ extern void allocate_fixed_point_type_info (struct type *type); diff --git a/gdb/typeprint.c b/gdb/typeprint.c index 0dd3b1c..a3fc9cc 100644 --- a/gdb/typeprint.c +++ b/gdb/typeprint.c @@ -667,7 +667,7 @@ print_type_scalar (struct type *type, LONGEST val, struct ui_file *stream) void print_type_fixed_point (struct type *type, struct ui_file *stream) { - std::string small_img = fixed_point_scaling_factor (type).str (); + std::string small_img = type->fixed_point_scaling_factor ().str (); fprintf_filtered (stream, "%s-byte fixed point (small = %s)", pulongest (TYPE_LENGTH (type)), small_img.c_str ()); diff --git a/gdb/valarith.c b/gdb/valarith.c index 8c47249..1c6ef2c 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -911,11 +911,11 @@ fixed_point_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) v1.read_fixed_point (gdb::array_view (value_contents (arg1), TYPE_LENGTH (type1)), type_byte_order (type1), type1->is_unsigned (), - fixed_point_scaling_factor (type1)); + type1->fixed_point_scaling_factor ()); v2.read_fixed_point (gdb::array_view (value_contents (arg2), TYPE_LENGTH (type2)), type_byte_order (type2), type2->is_unsigned (), - fixed_point_scaling_factor (type2)); + type2->fixed_point_scaling_factor ()); #define INIT_VAL_WITH_FIXED_POINT_VAL(RESULT) \ do { \ @@ -924,7 +924,7 @@ fixed_point_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) (gdb::array_view (value_contents_raw (val), \ TYPE_LENGTH (type1)), \ type_byte_order (type1), type1->is_unsigned (), \ - fixed_point_scaling_factor (type1)); \ + type1->fixed_point_scaling_factor ()); \ } while (0) switch (op) diff --git a/gdb/valops.c b/gdb/valops.c index b4c6d88..bfddf62 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -363,7 +363,7 @@ value_cast_to_fixed_point (struct type *to_type, struct value *from_val) mpq_set_z (vq.val, vz.val); if (is_fixed_point_type (from_type)) - mpq_mul (vq.val, vq.val, fixed_point_scaling_factor (from_type).val); + mpq_mul (vq.val, vq.val, from_type->fixed_point_scaling_factor ().val); } else @@ -373,7 +373,7 @@ value_cast_to_fixed_point (struct type *to_type, struct value *from_val) /* Divide that value by the scaling factor to obtain the unscaled value, first in rational form, and then in integer form. */ - mpq_div (vq.val, vq.val, fixed_point_scaling_factor (to_type).val); + mpq_div (vq.val, vq.val, to_type->fixed_point_scaling_factor ().val); gdb_mpz unscaled = vq.get_rounded (); /* Finally, create the result value, and pack the unscaled value @@ -528,7 +528,7 @@ value_cast (struct type *type, struct value *arg2) (gdb::array_view (value_contents (arg2), TYPE_LENGTH (type2)), type_byte_order (type2), type2->is_unsigned (), - fixed_point_scaling_factor (type2)); + type2->fixed_point_scaling_factor ()); struct value *v = allocate_value (to_type); target_float_from_host_double (value_contents_raw (v), diff --git a/gdb/valprint.c b/gdb/valprint.c index 66f8de9..0d66ed4 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -812,7 +812,7 @@ generic_val_print_fixed_point (struct value *val, struct ui_file *stream, f.read_fixed_point (gdb::array_view (valaddr, TYPE_LENGTH (type)), type_byte_order (type), type->is_unsigned (), - fixed_point_scaling_factor (type)); + type->fixed_point_scaling_factor ()); const char *fmt = TYPE_LENGTH (type) < 4 ? "%.11Fg" : "%.17Fg"; std::string str = gmp_string_asprintf (fmt, f.val); diff --git a/gdb/value.c b/gdb/value.c index f3f5169..0b3d463 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2814,7 +2814,7 @@ unpack_long (struct type *type, const gdb_byte *valaddr) gdb_mpq vq; vq.read_fixed_point (gdb::array_view (valaddr, len), byte_order, nosign, - fixed_point_scaling_factor (type)); + type->fixed_point_scaling_factor ()); gdb_mpz vz; mpz_tdiv_q (vz.val, mpq_numref (vq.val), mpq_denref (vq.val)); -- 2.1.4