From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10288 invoked by alias); 11 Dec 2017 20:55:16 -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 10262 invoked by uid 89); 11 Dec 2017 20:55:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sesbmg22.ericsson.net Received: from sesbmg22.ericsson.net (HELO sesbmg22.ericsson.net) (193.180.251.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 11 Dec 2017 20:55:12 +0000 Received: from ESESSHC019.ericsson.se (Unknown_Domain [153.88.183.75]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 6B.75.27591.EA0FE2A5; Mon, 11 Dec 2017 21:55:10 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.75) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 11 Dec 2017 21:55:09 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.49.104] (192.75.88.130) by AMSPR07MB312.eurprd07.prod.outlook.com (2a01:111:e400:802f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.323.4; Mon, 11 Dec 2017 20:55:07 +0000 Subject: Re: [PATCH v3 1/2] Reorganize code to handle TYPE_CODE_{STRUCT,UNION} on 'c_type_print_base' To: Sergio Durigan Junior , GDB Patches CC: Tom Tromey , Eli Zaretskii References: <20171121160709.23248-1-sergiodj@redhat.com> <20171211195757.18044-1-sergiodj@redhat.com> <20171211195757.18044-2-sergiodj@redhat.com> From: Simon Marchi Message-ID: <9f8ee5f9-6f73-107f-c9d7-d6c31b5be98c@ericsson.com> Date: Mon, 11 Dec 2017 20:55:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171211195757.18044-2-sergiodj@redhat.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR10CA0065.namprd10.prod.outlook.com (2603:10b6:300:2c::27) To AMSPR07MB312.eurprd07.prod.outlook.com (2a01:111:e400:802f::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 14d49f64-8b40-49f9-e526-08d540d976b7 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307);SRVR:AMSPR07MB312; X-Microsoft-Exchange-Diagnostics: 1;AMSPR07MB312;3:dKlD38xCMKGNcLjpOUrZLrQ0IBgdBj+39EXvP0uQnaskNhWWOpPn4w0svcegSBtzDSVg8gKZN7Gka6u6pvyy1kc4BdJazrcL4vbA7q9BDC0TdBxVhCevxnkzLPuFJ2L8mmXshw5yVLF7XP+zhM3a2mKz214Se8M934MupyE5FLB/nnVEiQDXBajLKCa8MwTHwzDhk7bZZoPWQObkVqX7Q8TtolO/kk/oAS6MmzDEnej3aE0mPJimeI7rzR4rL48h;25:Mn0GNAOvYU088LV8kEYOfgLhDz6n1H+AmB66kJn5VmswOVRgDDS0mhrGue0LIClIwLKE38WbEBMT4d50/H1Yc7FeFNLcPujolKK308Lry4/InrJRp03ik1dJ6cFvZcSjZa52K+NbJLxvHrRFr7b0Oysqd+B5UbvCG4E7pWgbzvr0S8hAKneJhR07ZFOMEEGPzn97iobQdySloPWhRM1N/acWFi6wwZey0yVNlRHQkXUCLabZOZxwVaeISFdcqLordXA5Fr6jXVoPO8ozNe3GdDeH9g1bDll76GD8+vCXNwWIhYPxVaL1EWtHo16i9B4/7qoro0wgBMwlCn8RV227ozx2ASwcXSkeFeg3aDBRHiU=;31:qw21N1Bi9WlTOAKgs37EW8jbTnDrBnI5ZbOx+iUI0a30MBhDSJCQpkSSkndXQZpOFruhjya8+5WK/FzxeSOg58F9NHAx5t5EmibFz5/Rcw1eCLiz6ARdgmiJ5BJF4JxqEBHAYQ3NQnOWWcgK1Yj4ZkYuJV7XAxcUkukyWGkSUtt4iiLGaXPA49QjXPVT54O96s7u7sCJkD+bL/v2qjO6rxXqpJ85xNJ1Sw+LPJhtVJY= X-MS-TrafficTypeDiagnostic: AMSPR07MB312: X-Microsoft-Exchange-Diagnostics: 1;AMSPR07MB312;20:vw8s3/gDGksIzmfKTl2j2yaXhdFpUWE2YVMwobExEKyahopaFwbCiVQgIn1WLnX0eG0+isST84LMibP4mfyLvYK54EOM+3TbUnQP3SU7rJ6PD7vu89RkBhfgVu3xyYvI931TELAx0fobJIsgZTq6bqqsQllUUFs50clktK/yvZAYQaI4daH5ediIi73wD6ENTbg5//x0cAmRTl4fP3VV3CWkjxB3Bn7yQgOKDR92vU+dG7C1034I+NZD0s8BHUdQDDK8UN+tdzubc7Dgt4zs+njFT8biOXc6Z0ckoDOPzbeXgmPQnQo7J081CYbRBrhFiznd+IPnKCypwarePH44uWvGnQG83/0mNWL4ax7Z3Y3MFheZeuZDyynDmbP8REDBYZJRCBkHhJi+tRT8+fjs/kLyVncykJ7XOPptBpD3CU5FEx8HKooyD1nRWu3YOh1ULxkB34NJiQJkuPjFagSV5rCvRro/HLh1hO8DV4N3cHeBehO2qyp/KvrgEFU0jI9x;4:XHflhkp1IaALfq5SAAYruEBz5RFfY02pYyY8dxJPhKEievOaBicPc8AI0Qn7jWMpuwP1VN9L7+DUOSRKMDz4J/zoO2/gUq/rrUT/sZNu7I6vlj+fWC6NrMdg9OtlJUh2ZfnKBxD2kllz0bKQltWivdw3v4Cdvyj0hiSDdnrniHnLUU+O3OdwwcWhzbu/Bo4J/YMB8+Y5IiWGOAgXF8Ibz09v2vcLXrjmvPzJWByaQtfaDoqScc5F9yL6NfCWYFW3r5zcrAOk2H7i9b8aOFiu8w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231023)(3002001)(10201501046)(93006095)(93001095)(6041248)(201703131423075)(201703011903075)(201702281528075)(201703061421075)(20161123555025)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(6072148)(201708071742011);SRVR:AMSPR07MB312;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AMSPR07MB312; X-Forefront-PRVS: 0518EEFB48 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(7966004)(346002)(366004)(39860400002)(376002)(24454002)(189003)(199004)(377424004)(54906003)(110136005)(53936002)(7736002)(6486002)(4001150100001)(16526018)(23676004)(52146003)(31686004)(6246003)(58126008)(97736004)(36756003)(25786009)(16576012)(4326008)(53546010)(47776003)(86362001)(52116002)(2486003)(229853002)(59450400001)(31696002)(64126003)(66066001)(65956001)(65806001)(49976008)(68736007)(2950100002)(508600001)(6666003)(2906002)(3846002)(105586002)(316002)(6116002)(106356001)(83506002)(8936002)(50466002)(5660300001)(65826007)(8676002)(81166006)(76176011)(81156014)(230700001)(305945005)(78286006)(142933001);DIR:OUT;SFP:1101;SCL:1;SRVR:AMSPR07MB312;H:[142.133.49.104];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTVNQUjA3TUIzMTI7MjM6Q1JoWGlBc1dlcTNEYmRkVG9UWUN6SVp6V0hm?= =?utf-8?B?OVNKNldmS1VoaUNZYldkS0JObVU5NVE1T1JEY0N1MVBwTk9tMG15LzFhYUMz?= =?utf-8?B?RVhnZHNiTDZaczBuR2pYQS9McndnbGJYbjJLMGhLSEJlVDFVSjRvY3R1a0VH?= =?utf-8?B?LzlibVlzZUNiZ2d0cUt0ak14OEE1MEhnelBxMllZZDcrS0F0dVpYbDdNN09M?= =?utf-8?B?UlQ0VTIvR3pxNVl4ckhFUW1QcHpUZEpxWmp4YW5QdjI3aEtVRWJ6dXE0LzY3?= =?utf-8?B?SFZJMVliaDdrRXJLbFBvc3RXSzI0a3BZUWZhQ1F5RWZmdDBmMTRZMStSblAy?= =?utf-8?B?amszZXZIWlE3MUlTeW0zcnFZNGFTV3FlWjlxMFphMmxIS3NORjU3TFg4a1ov?= =?utf-8?B?WVFBcm9jOHI3YnRnOVpCN1VzejhUdW5zck80SWRKNmFHaTFFWWJSKzV4R092?= =?utf-8?B?TllMVDJrNUlITk9sTVhBZ1RIRVhzMmU3ZmpNQTY3d2ZIakhvODJTZm5jQ2hF?= =?utf-8?B?OXd3Zmhic3hiU0NOWTEvdC8xRW5hdkZtMHhtdTFwYWNLeTlvZ0tJVHRxOFpH?= =?utf-8?B?N3JkQmUvRzlCa01DUXBmcVdGWTdhRGhHeEFGTmM0V0w1VkZmSDRNOUFzVits?= =?utf-8?B?aXd1WnB5SXYvMFRvb054YUVpcEJSQ2ZOOEV0cUFiTGJZcXZVMGROMk83aDJM?= =?utf-8?B?SzFQcm9nYmJwRHlzWCtDWWdLWkVHT3ZLeHBVODltNEh2ZzF1T0JYOUc4NW9Q?= =?utf-8?B?VnBSWmx1N08rdk1JQk1xZWJUdWJMeFdFU2FzYStLYjR2WUlkdVVvSXBndVNk?= =?utf-8?B?TCswZW5iSExVdXRsVVAwTHJib29MSXk5ZHF3UTUydURtdmxYcVdjOU01ZDR4?= =?utf-8?B?MEt3NzNPR0hHQ1puNzFjOFBtaFBBc2xLNlhQYlIzTW5jeUVaS0tabVRuOFpC?= =?utf-8?B?anNYL2ZLWmIwZUlidmlTYUsvdFJKMzZ3TGhvVmhLdkp5QXV0b2lDZUU5c0Fm?= =?utf-8?B?RFNRY3VPWUo4bEE4dEZqUHR1cFRnSkxaMENDOUxiMUpQSnhiUDhkSDE1Ni82?= =?utf-8?B?cjdCK3dKVCtYUUpmS0JTOHFCc25yWTVqRnEzbXR0MVVhY2lZa3hEbjl5TnVt?= =?utf-8?B?Z2o5bTUrcFVXYkp3V25GUU9lbWZnSU42ckk4Q1daZFUzUEZpVWE4cm9yZi8w?= =?utf-8?B?UlNiNTRLeGdLNlRQdW5rbFg1UHAyOGRvTnQ4cWJYeHdVcnpLZVJXbHhaVTBB?= =?utf-8?B?Y2FlNmZadWgxNDRNMXJEV3JWRG0wR0FLOTZ0bXM0cFBsS0kwYWdsT1dhT2Ji?= =?utf-8?B?NXc2WWN0VkQyVUdaS3ZzWGZIRXBoeGYydEU5WkVFWEE4QTFJZGJEeDY4U1Yz?= =?utf-8?B?SGl6LzN1SGJTYU82aFNqbFlNU0UvWk50Z1FERzhIdDNsM0VLMGNHb0RHSjI4?= =?utf-8?B?bjh3T2x0NmV6czFqaGxZa2taZm1RdGswMCtYMVZtZjJJTm50ZHV5d0R0TFZI?= =?utf-8?B?T2NzNDVZTk0vZDBnVmptV0I2ZDJNK3BPKzFEcS9DQXdWQ1ptT25SUXdzd1lC?= =?utf-8?B?U0hCdjd0ZjRTTzF2bVlGYktuKzBTaVRvZVJVNERvSWdzaSs3MmlRb3FyVWg3?= =?utf-8?B?enZaWjVBUHEzUzF6L3hNVTR2ZnArQjQ5NlYwckt2Sll3WWV2UEdHR3dzRXF6?= =?utf-8?B?WDY5VWYxcm9Bd3libXJZRUF2bEZheHJKa1NPSVI4U0ZuUzJlLzlWM3ZBWnZF?= =?utf-8?B?dlEzaVhpYVd2L21KSzBKZ1dsdGQ0ZUhiSWpKSDBqdUFROEpRZFdNekU1VEVp?= =?utf-8?B?SzFXN2JYUE1vVUtCd1ZsQ242TXhwUzUwY2lBOGRPemtFWFUrcFVTVEMwQW5B?= =?utf-8?B?UThxYzJrL3R0L0xySktBcUJpTkxMWVlwTHpaQzNiNVY2cFd5WXMyYlIwRGUv?= =?utf-8?B?N0xWdzl1YWFBTmw3L01aRm5icU5SekRHNVkxb29YSlJONUNMRU8rdU43blNi?= =?utf-8?Q?tnSWg?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR07MB312;6:rBSKhTQ3XT1Bj/E/3thYrRRs2tL3+m4609PKJjckiEWp/cHiMmvCnaptezrfochyiCRupHoFUMf+yuOaO4wbnlvWIIoF61hgn8XxC9HZYnpjOVt+EYMZb+dJM3CvlTxo9rb0s83HnBszaVpgSKs+hJLs4OqAOGmWqVLu438du8DGBhg1LT79KwbENm/I2sB1vmg8O5ldEMUp7qaAo1ZuEhHhyFuNswnqURAD2uZIrcTie8n0GtVoFFHt8Ha+YL//FqOYaLiwFKzLd2H6HEPY0p055YwQjdzVS8gxaHDY376Lc3fLpANDn9nEslrWtfzw2IGV10zj7nyvqou/zLAIu/HVB51Ss+fiVqLau3AgjvI=;5:m4p45QFL7N1yooqKRx6pepyxmaPqRRsRLdW5nrD5xR+tJDEZMAymD0MqfrXyit1UGNySXZeBNHI6o22JX7Jsdw6MLPXv680B57y5r41ZBvQ/wlLwUP3fyYSfMw4+iez9xfWPaOgbEvqInOTwh0rjIoekRDx2e5p3viiGO/jZutE=;24:PdQq7cwjAI9R+KW2LRaaNnxDuqmCMTRtEUN6NPH7u2K04vxkbeB2R+7gK92AbX8B+RWLOlhb43EGwRZupfr9eB3sJqJoTLfuCD1rCtM2qnk=;7:dyf45XNr/WHHTSGiGMXYoGMbl0/X/V35zVIgDG00PzrjL2bxakdreNy3S33YXp2D+7SOIdZagPtyoNbyDzQeTVDkBpmErVAchDQ60odtqXeh6GZ7UKx4wjhLm8ceWSJ1yXIUF5Mtjfv/LRqbyVFXmhlPLelZwmqjEjFv5G+jp8N5+w2Nk5qd7EVRuyFpnO9C1sWwYIHXd10kpA/kcfGf0uDQh7VXXDNNyTh7Tj3zeYimjyTgRCKVyke/Qn9bhjqQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2017 20:55:07.3199 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 14d49f64-8b40-49f9-e526-08d540d976b7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB312 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-12/txt/msg00249.txt.bz2 Hi Sergio, LGTM, with some nits. On 2017-12-11 02:57 PM, Sergio Durigan Junior wrote: > diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c > index f3c3e7d706..46c814fae8 100644 > --- a/gdb/c-typeprint.c > +++ b/gdb/c-typeprint.c > @@ -875,6 +875,458 @@ output_access_specifier (struct ui_file *stream, > return last_access; > } > > +/* Return true is an access label (i.e., "public:", "private:", > + "protected:") needs to be printed for TYPE. */ > + > +static bool > +need_access_label_p (struct type *type) > +{ > + bool need_access_label = false; > + int i, j; > + int len, len2; > + > + if (TYPE_DECLARED_CLASS (type)) > + { > + QUIT; > + len = TYPE_NFIELDS (type); > + for (i = TYPE_N_BASECLASSES (type); i < len; i++) > + if (!TYPE_FIELD_PRIVATE (type, i)) > + { > + need_access_label = true; > + break; > + } > + QUIT; > + if (!need_access_label) > + { > + len2 = TYPE_NFN_FIELDS (type); > + for (j = 0; j < len2; j++) > + { > + len = TYPE_FN_FIELDLIST_LENGTH (type, j); > + for (i = 0; i < len; i++) > + if (!TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, > + j), i)) > + { > + need_access_label = true; > + break; > + } > + if (need_access_label) > + break; > + } > + } > + QUIT; > + if (!need_access_label) > + { > + for (i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); ++i) > + { > + if (!TYPE_TYPEDEF_FIELD_PRIVATE (type, i)) > + { > + need_access_label = true; > + break; > + } > + } > + } > + } > + else > + { > + QUIT; > + len = TYPE_NFIELDS (type); > + for (i = TYPE_N_BASECLASSES (type); i < len; i++) > + if (TYPE_FIELD_PRIVATE (type, i) > + || TYPE_FIELD_PROTECTED (type, i)) > + { > + need_access_label = true; > + break; > + } > + QUIT; > + if (!need_access_label) > + { > + len2 = TYPE_NFN_FIELDS (type); > + for (j = 0; j < len2; j++) > + { > + QUIT; > + len = TYPE_FN_FIELDLIST_LENGTH (type, j); > + for (i = 0; i < len; i++) > + if (TYPE_FN_FIELD_PROTECTED (TYPE_FN_FIELDLIST1 (type, > + j), i) > + || TYPE_FN_FIELD_PRIVATE (TYPE_FN_FIELDLIST1 (type, > + j), > + i)) > + { > + need_access_label = true; > + break; > + } > + if (need_access_label) > + break; > + } > + } > + QUIT; > + if (!need_access_label) > + { > + for (i = 0; i < TYPE_TYPEDEF_FIELD_COUNT (type); ++i) > + { > + if (TYPE_TYPEDEF_FIELD_PROTECTED (type, i) > + || TYPE_TYPEDEF_FIELD_PRIVATE (type, i)) > + { > + need_access_label = true; > + break; > + } > + } > + } > + } > + > + return need_access_label; It seems to me that you could return immediately when you detect that a label is needed. It would allow removing a bunch of if (!need_access_label). > @@ -898,10 +1350,8 @@ c_type_print_base (struct type *type, struct ui_file *stream, > int show, int level, const struct type_print_options *flags) > { > int i; > - int len, real_len; > - enum access_specifier section_type; > - int need_access_label = 0; > - int j, len2; > + int len; > + int j; j is unused. Thanks, Simon