From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15209 invoked by alias); 16 Oct 2017 20:18:47 -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 15200 invoked by uid 89); 16 Oct 2017 20:18:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 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: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 16 Oct 2017 20:18:45 +0000 Received: from ESESSHC022.ericsson.se (Unknown_Domain [153.88.183.84]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id D0.CB.26775.22415E95; Mon, 16 Oct 2017 22:18:43 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.84) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 16 Oct 2017 22:18:42 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.49.59] (192.75.88.130) by DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.2; Mon, 16 Oct 2017 20:18:40 +0000 Subject: Re: [RFA 1/6] Use std::vector in end_symtab_get_static_block To: Tom Tromey , References: <20171016030427.21349-1-tom@tromey.com> <20171016030427.21349-2-tom@tromey.com> From: Simon Marchi Message-ID: <1cd5418f-2ae8-dcb4-3a00-48bb85fc49c1@ericsson.com> Date: Mon, 16 Oct 2017 20:18:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171016030427.21349-2-tom@tromey.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR10CA0049.namprd10.prod.outlook.com (2603:10b6:300:2c::11) To DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e192e0b0-0609-4d27-2505-08d514d317d5 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DBXPR07MB317; X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB317;3:x+kVayRO4psHFGv/wpqNl5UwluhB4Y9M5nLGaAt7hWDyrQPhFc4kzKrk49tD337bxKQdh3qhh49fF7UAhEr/myQLsbk+UGyQ4MEmxLxczlfMHrg2sp6EeH/+SjoiJQiQ/4i4hlfgGjMmsTQtaZy3ecv3NuPFwQmgVSaqj3LqJFcBgZ9Gc6C6QLOE3fAnRPbzFxX3rdzlcQBhJ1CsNiAFgNM12Z7yP5b1pD0HwSTcOzLTwX5FoFfg3W3yPhFdvTZC;25:EwaC6RktNtpDxY9gaaFFB72vvDks2urVXTEbaBcjehnkh+RoJ3SNrwPV1joApkhdsvNp9AiCDAOFSljiJWBSSboWVXw7LlMkYozp5Drb39uuFEmvNmr5biiTo/axLRGOu/BflHxkCPZhjzT3b4RDWjlljVoHOlokG47SDpzaKm7m8qllq3kjdPKKAZ6jMj/NrUn7+W4sGiZeRSZz3kkm/j+KczxJ6mpcoc5hymKggwx3TT1OB+Q4vjejn46jtIrFeomJbtY5mBtVrdoZKnr6R5dGq+R8dNanEn9psnPaWoqyoEHXbZyf7ZHXLrzfFOxc0VghLoOOutVWI4GSY64NcQ==;31:Y3Vr3yTh7c2IZcWxGnuQODnHB+mmKVGemOdfTgWl7VIKMTraZdXhXghk7UmlQE85Osw8K6ayNXQFR3MrT/ZZR9qeq1JvTNfELH0FjS3zbcM3bkleu/29kVlRoQngUnzEORO3BkymP5WTHjwFEwLbD39rjTiPh2sMhFXoFTjeqDItvO7I0Lb8cx0bOjkNV2OW2wENhDXODt3G2xwq+UJT6ST65UCDe/wLpByf5NV0fRA= X-MS-TrafficTypeDiagnostic: DBXPR07MB317: X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB317;20:DJKVlS4rRyZl7wpcFFdXK19unHp++wkzvYhlgeTJcYLdNwF4DVVZh1UO7RUFmMdFFc6Pv39GoPpIP7COyL7T3bEQa8BMM62jzHXCHklBbMfZjgWY6AMZZAgWPzk3L9QfURinaTwDJw3TzJ3Tqo7VOuUBWcE2Wb+NFKClbRYZvTo3V4TqSPNf4DPvL0YgNZK3BMhINHRafTdOKxyVeBFsTBXddTPmn4u3jae2tkWWmYDnTFR/s9x1lB98fcj2pgllCRB4hpRwh3mqWzEuPm5eBFTI7+koiTYqLw0mabiNfvgbT2ETJqg3mtrPdqO5Lx96GqIdrXgjP7Sx+ybBIAwfgISmlI1WZla8Dm8rcHa8ll/UaCdTCYq/r6IMR0Eq+uk3LS/nv8wfRubqNv1rS0cZpIXGdfZ2wd4mlrmREzXLJC1v+kGruH6hrnvgruaC0s/MljHBX0OoL8dYLfEY72AGtQYnAtvweptoqpQtqazP8GQxWCoGlcABS2fEAd53JSvI;4:B76f5+F4xuUCNDUvjSxGjGfPRhkYLSrXcokFrJNKAWnxwHcPCAxd+7Cm2yAnpZpdvP1ZEUO4Ue8h+HcLxCqwcXQiV+36p+FbxGL96VPFC9bzEuA9x56BI7LKarTki0lxFNfC+xYINtB8SPKvoOA6Vp5ywqwfbPG900qbSVoBtM3lN83b2MlTjSK4KW6Ja2tGXVRvUsFauIW1Q0QOttfuq4Dt1mHKl0gJxcfDmX1lWaQlHei7RJkYgXlxqmrJ2dCGdyhwzCrK9pb/IxA7hIx21WmiHcWzZfescPgdHi6UVgw= X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(20161123564025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DBXPR07MB317;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DBXPR07MB317; X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(346002)(39860400002)(376002)(54534003)(24454002)(377424004)(199003)(189002)(377454003)(65826007)(31696002)(53546010)(33646002)(305945005)(86362001)(229853002)(5660300001)(64126003)(68736007)(105586002)(106356001)(50466002)(58126008)(575784001)(2906002)(7736002)(54356999)(8936002)(6486002)(101416001)(50986999)(8676002)(83506001)(2950100002)(16576012)(316002)(76176999)(81156014)(81166006)(6666003)(65956001)(66066001)(65806001)(47776003)(4001150100001)(189998001)(97736004)(25786009)(16526018)(230700001)(49976008)(478600001)(31686004)(23676002)(36756003)(6116002)(6246003)(53936002)(3846002)(78286006);DIR:OUT;SFP:1101;SCL:1;SRVR:DBXPR07MB317;H:[142.133.49.59];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQlhQUjA3TUIzMTc7MjM6V3B6VEZlNXFudytSeTlRbXV1SS9EaVpTZXBx?= =?utf-8?B?cnRNTGt1bkwrMFArbTZ6cUlVeFZEWlhrQUh0M1B3dURvQytxbVpoMjI3MVA4?= =?utf-8?B?b1c1eWdoQWxzNXJXbm0vZ0NFd2lGOHJtQ2M0NU8ySDQ4Ti9KYW1vNUdWMm9t?= =?utf-8?B?ano4TFhwcGNIY09zZUFzNktLeThzVndRV0dLcUZFNXJkQjhYd25MdXQxTU9C?= =?utf-8?B?cFRXd3Jic295OVNESFhubENYN28yQzFFMGN1ZkdMNUhOVmEvaDEvMUFyU1RV?= =?utf-8?B?M1BUUzUzNXRpdlhFekZMVjdiV1dyb1FtaHA2V0UzemtZeHBmRGIvdnRrZnRq?= =?utf-8?B?L2tjdzQ3RkFkcUZXYnlvWEVuRWR0ZnRjcmR4RDFiMUJiZU1vZ1lvb01iSkt5?= =?utf-8?B?V0czdFR3ZGhVQ2hLMEYydjBCeW1QeUcyUkJYK3hWNkgrcVVWYnRCNkN2K0ls?= =?utf-8?B?aWlEaUdrNlhFc0NJeGpySHY3blZGME1GYUFLVXFKdS80eEtmUVpsK1dXZG5L?= =?utf-8?B?WjBzUXNqOXE3a1g1M0tUbEJERGNTaHAzcjU3d3l4cE4wRXNDRXgxbUQzSDFP?= =?utf-8?B?bW1EeTJFcFBERmlQZVhyYVdGQmRzYlU5eWtVbVBPTWtyUDRZaHBIWVN2Z1c3?= =?utf-8?B?Mll0NXN0TXhvdks5M053NkZ1b3I2OFhZendzVit5NjZMUnhCRi9GMytpQTRZ?= =?utf-8?B?VUg2ZWc3clpBdllSb0xwYTRxbHEzVy9aaUxOR3lITEM5aGF4NDM1ZlA5ZUFr?= =?utf-8?B?ZTBSN0V4ZzJvN2phQjlMZUlHMVR2TGFuSGhPSHduYUNmSXFvN0V0eU0zaHVq?= =?utf-8?B?VURKR1RhdE4xVWZ6dWxtOGtibDUwQlU4VVVRNHIxYlhHWUNvOW9EbDAzNWtM?= =?utf-8?B?a3RYdndvejJtY3BneFlhSTlGanhXNkM4dm1jUnBRMWROTHpKalRXODQ0U3pS?= =?utf-8?B?VE5OOGV2RDI2emFRb0M0bVFlcjBjSFlmVGlmcG1TUlk0Vms0Sk1LbnkwVnJ1?= =?utf-8?B?TCtPWXE5bkJuSC9tM2hzWGRha1lwaXVhQzhzSi9hUXNqNUNURVJMM0RSVlVt?= =?utf-8?B?VUkyeFA3T3puSjJyK2lMN3BXdk9PcFY0UitLMWZXN0lRRTNEdmRHZXVBZURI?= =?utf-8?B?Yy9oTmFWS3liTzNQai9sdkVZSzJmR2EwWldHelhycmpnZWNjWXR5QjdITExV?= =?utf-8?B?cG04RW9UdmNLSEdoUGNEYTZZWGJleEhJL25HQUJFQUhOOVZFcVVrUzByemtQ?= =?utf-8?B?cjY5dTY5SU9ZRjRqUVRUKzJ1a1lEV3FCNmY3UWQ4MWNNREdjMWxya2d1TW9y?= =?utf-8?B?cE5qb0hRK3h0Q3lxRDg1Y09NSTRGVHIySFUxLzZFWWFoNnBsTk5uaHYyaEMz?= =?utf-8?B?YmlGeGliVGx5TUlIb1JUdUZEczNVNzlHNVZTL1h5cnFoUUhqY0JIUFJqc21i?= =?utf-8?B?bDd2TUo2WlJlMWcrVXh0Z3I3Q3Y3RGZ6SkxjbGhzTERrOHNBeThQR25VNldk?= =?utf-8?B?QW1MdzZBbjR4Y2JDenZaSzR1dDlKRmx6cC9PRWZjUHlTSFVNT28rMFhqQWdt?= =?utf-8?B?MDR3WHdmc1VDM0xXRTlWTkRsbUYrMG5EQWVmTFptN1NUdzRkQnR0L1VRcW5z?= =?utf-8?B?SWdBUlFNQnM2QU1EUEk1bXNUQWRNSzd2Z253S3k2WWcvZEs3WWpDWHJ1UXdH?= =?utf-8?B?dGdtalJuR3M3TVU0RXpFUUk0WU5Jc2dJd1dOL1UyWmZBK1lnZiswZHFVTHBF?= =?utf-8?B?aEltK09ncnViZkFvSXhBUSt6eGFQeElNMWo3aGMzdVkrM1FRZDZaN3FhTFZT?= =?utf-8?B?VHkyc05PbCs1SmRnMXpXZ24xWHJXSEk5WFV6dUZtVlNFK1pzSzdxeUxiSm5Y?= =?utf-8?B?WGc2blptUVRaMmZIcFdYaG1LL3lDQ0dlTGUwNnkxaVIxdENOT2lMcjNCSlhz?= =?utf-8?Q?YtrPCOv1UNWFq0qNQZk+0hmvaPuuA=3D?= X-Microsoft-Exchange-Diagnostics: 1;DBXPR07MB317;6:AdOTC3HJBueYbUTlDt6Qh4QOlQe8/+qyM6bjyQBY2S7gGt4qTyJV/FCJrh/xVtmzcsOHVigTyVA9jsgMU4mhrY138e5jNQPRitja3nvfXWGydGf131SiNW9Y2qcK+75ceNTG1Afp7BS9QG/qZxUHRhWz98sgk6GpwcLR94sxlWBqylIK4jgpa46AeZmLSfmnYlwpnICUkZaEuvgxlXSOC1NP9FpKP9r6uxI838HYB6saOvHnPy4MXnkfHTdzwcoFEEtulG47W/tG4JtucvvKJzOPOzn+03xIujH2Gr9C01+ByG3/+Gjq3aYB437+nOqMBCDXhiih+aDjltvXppewbw==;5:nRPw28lvxKryjZS4fFsWU9aOotK49kPy1O1cUlLpKQhCSpJf1xxG1RpwwCnRojhv7nQNm0iwBR8ga+X7+zHMAe1GFIx3Teoyx47F7KkJLFBnjmqRxovm4I6BwpFeTpRqD075By43TczYz2iqWTJ3NQ==;24:ICASTaLajw4zAGLrIFtjuK+xp7iQqQwRpk6BJZyrfMDLKD/y7zPcJqXCiLAsHJ97mdcTAgOru0kOOK/+cCsr0/2gGOzlA7KwzYdr/4cTSFU=;7:a6aL6sImtMM7OsqOkr9WNkpaE/5NZIux9SlLTvk3EHA1cDTpI368Er75UG8bTb0yWtj6dzbMaFtjR13h94/LWXfmpOdqFiinUuWkBNC3ftMe8XibNT8Nxh2o/wRm1Pk1vfvihv3FwSgHbAo7fVojsMW43NPd53qTR1vC3avWIMaqo24dUE+VQXgcU+UvcRiK8p3uVlYQ4bqpzU/DXJOLb0IQDY5nhxtBdDnE9czwzE0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 20:18:40.4074 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e192e0b0-0609-4d27-2505-08d514d317d5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR07MB317 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00464.txt.bz2 On 2017-10-15 11:04 PM, Tom Tromey wrote: > Change end_symtab_get_static_block to use std::vector. This removes a > cleanup. > > ChangeLog > 2017-10-15 Tom Tromey > > * buildsym.c (block_compar): Remove. > (end_symtab_get_static_block): Use std::vector. > --- > gdb/ChangeLog | 5 +++++ > gdb/buildsym.c | 38 ++++++++++---------------------------- > 2 files changed, 15 insertions(+), 28 deletions(-) > > diff --git a/gdb/buildsym.c b/gdb/buildsym.c > index cbad027d0c..c3cfc37cd6 100644 > --- a/gdb/buildsym.c > +++ b/gdb/buildsym.c > @@ -86,6 +86,7 @@ > #include "cp-support.h" > #include "dictionary.h" > #include "addrmap.h" > +#include > > /* Ask buildsym.h to define the vars it normally declares `extern'. */ > #define EXTERN > @@ -1165,19 +1166,6 @@ watch_main_source_file_lossage (void) > } > } > > -/* Helper function for qsort. Parameters are `struct block *' pointers, > - function sorts them in descending order by their BLOCK_START. */ > - > -static int > -block_compar (const void *ap, const void *bp) > -{ > - const struct block *a = *(const struct block **) ap; > - const struct block *b = *(const struct block **) bp; > - > - return ((BLOCK_START (b) > BLOCK_START (a)) > - - (BLOCK_START (b) < BLOCK_START (a))); > -} > - > /* Reset state after a successful building of a symtab. > This exists because dbxread.c and xcoffread.c can call > start_symtab+end_symtab multiple times after one call to buildsym_init, > @@ -1254,28 +1242,22 @@ end_symtab_get_static_block (CORE_ADDR end_addr, int expandable, int required) > > if ((objfile->flags & OBJF_REORDERED) && pending_blocks) > { > - unsigned count = 0; > struct pending_block *pb; > - struct block **barray, **bp; > - struct cleanup *back_to; > - > - for (pb = pending_blocks; pb != NULL; pb = pb->next) > - count++; > > - barray = XNEWVEC (struct block *, count); > - back_to = make_cleanup (xfree, barray); > + std::vector barray; > > - bp = barray; > for (pb = pending_blocks; pb != NULL; pb = pb->next) > - *bp++ = pb->block; > + barray.push_back (pb->block); > > - qsort (barray, count, sizeof (*barray), block_compar); > + std::sort (barray.begin (), barray.end (), > + [] (const block *a, const block *b) > + { > + return BLOCK_START (a) > BLOCK_START (b); That made me doubt for a second, since we're more used to see "<" in these functions. I then saw that block_compar did sort them in descending order. Could you add a comment here to indicate that? > + }); > > - bp = barray; > + int i = 0; > for (pb = pending_blocks; pb != NULL; pb = pb->next) > - pb->block = *bp++; > - > - do_cleanups (back_to); > + pb->block = barray[i++]; > } I thought, why don't we replace pending_blocks by a vector and sort that in place rather than copy the pointers to a temporary vector and copy them back, but it's not easy and may not even be what we want. LGTM with the comment added. Simon