From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14074 invoked by alias); 19 Jan 2015 18:30:36 -0000 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 Received: (qmail 13891 invoked by uid 89); 19 Jan 2015 18:30:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f53.google.com Received: from mail-pa0-f53.google.com (HELO mail-pa0-f53.google.com) (209.85.220.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 19 Jan 2015 18:30:33 +0000 Received: by mail-pa0-f53.google.com with SMTP id kq14so40235358pab.12 for ; Mon, 19 Jan 2015 10:30:31 -0800 (PST) X-Received: by 10.68.217.97 with SMTP id ox1mr46421264pbc.53.1421692231466; Mon, 19 Jan 2015 10:30:31 -0800 (PST) Received: from seba.sebabeach.org.gmail.com (173-13-178-53-sfba.hfc.comcastbusiness.net. [173.13.178.53]) by mx.google.com with ESMTPSA id rj7sm728931pbc.58.2015.01.19.10.30.29 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jan 2015 10:30:30 -0800 (PST) From: Doug Evans To: gdb-patches@sourceware.org, gaius@glam.ac.uk Subject: m2-typeprint.c:m2_range's use of TYPE_DOMAIN_TYPE: Eh? Date: Mon, 19 Jan 2015 18:30:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg00531.txt.bz2 Hi. Does anyone know why m2_range uses TYPE_DOMAIN_TYPE here? AFAICT, use of TYPE_DOMAIN_TYPE is wrong here. It is only used for TYPE_CODE_{MEMBERPTR,METHODPTR,METHOD}. ref: gdbtypes.h: /* * For types with virtual functions (TYPE_CODE_STRUCT), VPTR_BASETYPE is the base class which defined the virtual function table pointer. For types that are pointer to member types (TYPE_CODE_METHODPTR, TYPE_CODE_MEMBERPTR), VPTR_BASETYPE is the type that this pointer is a member of. For method types (TYPE_CODE_METHOD), VPTR_BASETYPE is the aggregate type that contains the method. Unused otherwise. */ struct type *vptr_basetype; I ask because one symbol table improvement I want to make may be best implemented if I add a new field to struct main_type. However, this struct is space-critical, so I'm trying to find some cleanup that can be done. Question: Why doesn't vptr_fieldno, vptr_basetype live in type_specific.cplus_specific? Alas, vptr_basetype is overloaded and is used also for TYPE_DOMAIN_TYPE: #define TYPE_DOMAIN_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->vptr_basetype hence wondering why in the world m2_range is using it. :-) For TYPE_CODE_{MEMBERPTR,METHODPTR,METHOD}, any reason why their "domain type" (I'll want to rename that) cannot live in type_specific? --- void m2_range (struct type *type, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { if (TYPE_HIGH_BOUND (type) == TYPE_LOW_BOUND (type)) m2_print_type (TYPE_DOMAIN_TYPE (type), "", stream, show, level, flags); else { struct type *target = TYPE_TARGET_TYPE (type); fprintf_filtered (stream, "["); print_type_scalar (target, TYPE_LOW_BOUND (type), stream); fprintf_filtered (stream, ".."); print_type_scalar (target, TYPE_HIGH_BOUND (type), stream); fprintf_filtered (stream, "]"); } }