From patchwork Mon Oct 30 18:29:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 23970 Received: (qmail 4146 invoked by alias); 30 Oct 2017 18:29:58 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 4130 invoked by uid 89); 30 Oct 2017 18:29:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 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, 30 Oct 2017 18:29:55 +0000 Received: from ESESSHC019.ericsson.se (Unknown_Domain [153.88.183.75]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id C7.DF.07039.1AF67F95; Mon, 30 Oct 2017 19:29:53 +0100 (CET) Received: from EUR02-AM5-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, 30 Oct 2017 19:29:52 +0100 Received: from [142.133.49.2] (192.75.88.130) by AM3PR07MB305.eurprd07.prod.outlook.com (2a01:111:e400:881b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.4; Mon, 30 Oct 2017 18:29:50 +0000 Subject: Re: [PATCH] Introduce in_inclusive_range, fix -Wtautological-compare warnings To: John Baldwin , Simon Marchi CC: References: <189cefb7-aa0c-16bd-d78c-cc6f1e5c1344@baldwin.cx> <1509373931-16340-1-git-send-email-simon.marchi@ericsson.com> <414aebc6-2dc6-d2b2-a1b4-35f98adb78f9@FreeBSD.org> From: Simon Marchi Message-ID: Date: Mon, 30 Oct 2017 14:29:30 -0400 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: <414aebc6-2dc6-d2b2-a1b4-35f98adb78f9@FreeBSD.org> X-ClientProxiedBy: BN6PR10CA0044.namprd10.prod.outlook.com (2603:10b6:404:109::30) To AM3PR07MB305.eurprd07.prod.outlook.com (2a01:111:e400:881b::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39a9501b-0422-4d53-0799-08d51fc43566 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(2017052603238); SRVR:AM3PR07MB305; X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB305; 3:dDTnZbGI0hw39TALHEh78zumGjnRdd/wgnbHto6hqiz6Ky2Inj98s7jz1G2aubJDOi/uMySumTaZxuvMBSHrtVo3l9ybT6niHWstisnmSvtcdhvOof1sFl+UT/nCoQXO6bXbXi33+3qPcanhbC5Rliw/bt8Om8VbUbSwT00kvml9LDvDqUbA0J1hRs+JGImk1mE8m1FiKS8GmA7/0OQlU9I7HiPXqvjsLKXze5fy9sNBCT/WMbgSCJYah7hkPsJq; 25:M9d/P41BxGhQmfw6vq6PV+E/A+tqbV/SQUtffve09zLHnXVV3QMdDNumEiU8Fiu30IyGEkUM3yMPAJXQ7hlxMFgF1jNwj6/ph67h9Wzipo9PqXYY/EWUMrEUD4IPqLIV66OeLA+5LjicXGwfXSRu11MikR3NriVxdQ7IQmALRM2C/VC24hXJqJXN01LuLQWLaUsEPLu7LvU13qZybgirc7sCWPEvFhjk3aQTQ9LAcAylQJFRPFy42OGeX814cLSlDCesFeo7CQxYXdORGXl5jlXGpKv1Hsc0/enD8NQtpdMo/5cE1e7o+PkxeIqFELkqMpsTDJ1RfFW9rlyVnZnsu09c/lb2ltigASiOhAMU2d4=; 31:vCepaVN0b/9gjzGNAHXbozlak4jVCbzgkjZDaHTqgPwhMuWmq0TlhanK2KdkReuLIXq/THAIovfZkk4RYWoMNlkeLh6go5soH6Y6f0pxrmAS3YL7I2IWFpzmSpJKAFbmg3m7nK3GxAzkTnGu/NeD4Uor1ASRYE4vs9vZxoWcbxwDZQLee3/AS866YwlrBN9mFcs82HIusOKWOgdLUxX22wCNEq7+H/jkKI1iDPUX6IM= X-MS-TrafficTypeDiagnostic: AM3PR07MB305: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB305; 20:wpZqi+/YZgQa1hJ6KIPE0m6kNoyp99LG7/AE6JVJVrCPmFQqM0TigRhLGlAwbZWf5Gx+z2YyBwwmeMr/+jBPnwxtdvaifJbrAaNsysI8QNrGazWz0JoPpcV/WTuo3xThkTtPYpGSLmW1v+d4NNF6FRNJP2GsouRv5yR78anG1tsKDrBrU3bZBBPcPZ0qZbo8fR/heBerjQl2l2pHPCrpKynbuXCkV+VGb8vrhvMBa00XyXFVhctHLWMr809329sP63UeEqMkihp2/IjRItDKtIIR5lxO2XXJ4d8VM4JhTZm+dyvfyfXvi0eBfSCiyDpN0FSi+pUCdNIW0XSDTNbg6DyrBxtORvyGYbvIh/XaBHCc1bTsY+ooGth8ejgLfmoM7YMQpV3R35wLTHMKP7+Bh6angLs8QXHrz7Lxo+GPl08Mir4FeznHh1kRjbs5lghO0GQ9E8HkB7CwHkf4p6Y8+22e0Ru6xaE3WZX6fCXy/2kkO8v84FxU4vDBo83sA1oe; 4:FEipzL2DBb3EppDDmij0BIqO9yQrKpU1f//mdEq38Qnq+ykObNPAevZtGnM0x35hgLr5nuVLxtkpXLfZ5bdRcF5QMATZ6/UXELrF45MlGIzqPx6OP9mlvsQdE6TcE4wAMwTHAvHrd62yuM15k5b+v7wa296tRMNiV6JlT0MElEspjvzxsmWYOJD7JQ1cjr1EwfdG/7nzoAGuBKyle2OZV86I1tzUmvMCzVe6jgnyqSoSlRyW0+LyZCt+RNzvuV+EopTTKvdRbFe518hcdARQAe/G7qidWmth7mkLZKfcvKvrwyXpXYm8vvmtOcKosTJd X-Exchange-Antispam-Report-Test: UriScan:(37575265505322); 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)(3231020)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6041248)(20161123564025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM3PR07MB305; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM3PR07MB305; X-Forefront-PRVS: 0476D4AB88 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6049001)(39860400002)(346002)(376002)(377424004)(199003)(54534003)(189002)(24454002)(66066001)(36756003)(54356999)(6116002)(49976008)(3846002)(305945005)(16526018)(25786009)(478600001)(50466002)(68736007)(31686004)(33646002)(106356001)(105586002)(83506002)(65806001)(101416001)(65956001)(4326008)(50986999)(47776003)(64126003)(7736002)(8936002)(76176999)(6666003)(2950100002)(230700001)(53546010)(93886005)(16576012)(58126008)(316002)(110136005)(97736004)(86362001)(5660300001)(575784001)(81156014)(8676002)(189998001)(229853002)(31696002)(4001150100001)(81166006)(65826007)(6246003)(2906002)(6486002)(23676003)(53936002)(78286006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR07MB305; H:[142.133.49.2]; 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?MTtBTTNQUjA3TUIzMDU7MjM6OFptc0M1dnk5NEwwYVE3MGxiVFZCd3ZJMlcr?= =?utf-8?B?R2lwajVMU0c4cDkrcnhHNEFkWmc0UDVTVE5PaXVwa1NjekV1UUpRYTVrb0Fp?= =?utf-8?B?YnpNdVRlK0tyMHRUbFljVFFVUStKZzV3cUZlb3JscEE0d2FwUUVLQStnMFA4?= =?utf-8?B?bHpWY2hXS1pUekZlS3o0bVRuNjVxYW1SR0hNaTQ5NjFZWW90WXIzbGxNTWpk?= =?utf-8?B?MHZyYXB0OUJkRHdaR3hMY2cyME1hTWl3TG9KbXMrRjhaNFAwNkdDTjJJbDBJ?= =?utf-8?B?MTBjRHhiT3UySnlKU3BmTm9wdWl5b2RiSzdXdzh4ejJkVEp6UFR4T0RTejdP?= =?utf-8?B?MGJidmJ1azJ3VktaT3NvMGdEancrU084VGg1UE1mNjRCRkorQ1lOdVkvVEli?= =?utf-8?B?c21ITWdvNGZvempOYUtFSUFVaWFQRXNmR2orZ3ErQ3dkSHpGaGk4Z2dFLy9N?= =?utf-8?B?N2ZWRkJHcytCVGJSKzhwMHZsbm11emxRYUdvNGU4T3lwamovUXEwUFpvNXBm?= =?utf-8?B?WjFBMzdFWGFRSzJQT3p5SWN6Rkg3Nnh4Rk14N09LVXppcmVBVkE5T1FOS1pt?= =?utf-8?B?WGppZ3pWdEdPb2xob0N0Ym5YbFJsb0RmcmdtcnhkYU4yUnFZZi81TXRQR1VE?= =?utf-8?B?ckMyQXI3K0NOTXFzT2o1WGl4ZDVZYUgzTitVdXp6QS94S2VkVTAvMDdSQUI2?= =?utf-8?B?YVhWVXFxY3hQU0t2WDg5TlFMNnhtMXpFa2xuaEE4QmdBdHVsNDUrSE1vdlI0?= =?utf-8?B?bFNJcGF5azA4cEhuT1BlNkluaEttTVNKU3RILzI4TVFYTXVlekxhN0xFWEds?= =?utf-8?B?RVpVSEJqMm5QMlZtdlBnMndKbFlVYzBXYU90Y3NQcG9sT01Cbk1NcVRaU3hO?= =?utf-8?B?WTlFT2tFSFB6a1Yzek1iYXl6ZG5WZEJ3SVJzSFhFWHMrWXUrKzRselFrM2ti?= =?utf-8?B?blBpZmFsbm5FU1FHT0xvMVhta3Bla2pwOUJTVi8xWndhYStaeTlQRDF3S1Bm?= =?utf-8?B?UDhZdklzZGxhbjA1bHFQWWhNeVNzSCtrME5NMjlJdUc1SDVjTlBIakk4dG5Q?= =?utf-8?B?QVpPNjVaMk8yOVRVU2FSU0g2WGZYOVFqMkJwRE9BOU5seFluZGI0WThHdEZV?= =?utf-8?B?UXkyUGJtM3JINnN4NjhGaGo0YjZFVTRBczlzQW95M281K1pqTFNkUWJHNSs3?= =?utf-8?B?aVlqc1V0cStjQStuYUlsd0pqZWRxTWEwbnRzYnNJWEdpNU4xeEZDekRhc2l0?= =?utf-8?B?NWhmTTUyQ0ZwakNRRFJCTTlSZXNpL2ZUTXlWMXJJdGpFZkgvZk9tWVJVdElk?= =?utf-8?B?bzhsRmg5VFVPUWlWQ2NRWHJYYWtuNVRnQndYRS8vUWY1ZDNwV0w0VlZEQWxJ?= =?utf-8?B?cVNrb3FaQ21oRXhUblhzQ0NSZzhEUERaaWl4YUVoTHE2VXE4dGFCSGRqcFFv?= =?utf-8?B?cU5DTC9SalZHNjVvUEFPSmp3N0lSUHFTOWdtVjVRcmh2UUxoU1BaQ01jVlNR?= =?utf-8?B?REg3RmpzUXZhU0xyWWgrT1Y5SFhudHNTaWF2d1A4UExQaEg5Nkg4VE41WjBq?= =?utf-8?B?T2RsazZBTU01dTBNYWdGc2pjZXIzeWFkSGZtMVNiOHJ1UndGMXVKSklRS2xL?= =?utf-8?B?TytFK2ZvL1ZHbllGNHhOT1FIWm5xbCsyV1F0OVgzb0pBOWdYME9JQndlZHZm?= =?utf-8?B?U0djd0lFaDFGRC9GbnM2MVJ5eXlkWjBHbVp2SFFxem9KbnNYaE1vZHhoeW9F?= =?utf-8?B?WHpFVmdIaVd3Um94eGxXVVFGVzhXT1g1WlNaWHVabFptNThJYm5hRzNSZUVE?= =?utf-8?B?VWQ2NUJNR3FsNFhSN2dDcnI0cno3R0ZWTVo5TlMvMXpxUlZJM1phdVpNekpv?= =?utf-8?B?OGMvU2FrRFFmSzZmKzNVa1VXVzloOWtudDExQnV6ZE5UTzNDZ250Y2JETnpP?= =?utf-8?B?RVpqNGV1cmhoZjlla3gzdklGWjc5QVpuSmFvZHdOS3NZZVZsZGVJZEVDVTN0?= =?utf-8?B?TldDUm4zQkwrZ1pGWUM4ZmJtaEZSREpmSTNRPT0=?= X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB305; 6:2+Mk3Xc7KYJU0WVlJMMonuxOomLGEKg/nlCK/MqHrwd76XUEFKV/2HAa0YWXKEOf2WTbQmwbtsMf1MVK+fUcecLTp3VsXviw8IrmL4oL7H/CKhKY4+PPQFSEAPaTCuz2gjdftJTuvxJJ0iFyEElbYox6uX566sDTXVq6cvpafGfgCtGvPZajQEN3vAx0AvYs9coUOZY8munAqw6+bA0JQSetZx+T0Vaq9dfVqfIP3kjGJdLW+Ww3Xw0GJHUGZwh1Hw+oY8faeA1FY3gvB2OWKA5rvmuaKGYoegKd+gzwGA8aWtX0gmYouNaNRKU+EItVV8s77O7Icx+572rnZoQk7uqfLvkmvfBUME7W6JzgAtM=; 5:S70bXcsn2hwycXoGeW/9iD4CNW1bAXxHAIGeMQFGABHptCuRMqiz6gr88vYSLds0YKE7z/79bv3iMp6/YbzwHqttTHut8ujddlyDwbpXVhebRZ0UA6QR1FcNIkRl3iob6/nd0niqR+O59M0TJY/ZM7Luoe1wW7RTQlJMWS3OMbo=; 24:P5OTWKZJAL1aOK1Umn//koFKj0SeYemwSP0cm13Cc/YAn4vjxn+bGP+FIJT02Sq1Tg/8I0owbLQPx+Fybecn18PCyDkPYE+SxHjSzgv/f2M=; 7:No9qVxsMOMV8xBHP5IO6FIvUbp3ZhEH+DYv/3BQyxjBNbAo9+ZC/zHb372rBnJCrgQ8K0M1hw9W7JFk6eRrKbC5j7hxM4KR2+84+ZMskks1AAkKC57Oa7jMeyQd/M9F7ke4rSFA5p/Mp6BnNiHVgE+YyUS/oJH3kQo4jR1/sz/UIXCoOLITUUFiUZoE6ptpee1r4u/9VDQlCldh0WJdoxAB9oOm3jr5Ff8l3bbmxkuJZFnDpP1l0k8TbdeBBSBwC SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2017 18:29:50.6317 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39a9501b-0422-4d53-0799-08d51fc43566 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR07MB305 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes On 2017-10-30 12:05 PM, John Baldwin wrote: > It may be sufficient to just be consistent within a function? In arm-tdep.c > it is two instances in separate functions whereas for cris-tdep.c it is > multiple instances in the same function which is what stuck out to me. In arm-tdep.c, I ended changing the other instances in the functions that were already touched by the patch, for consistency. This is what I pushed: commit b020ff8074af22639e3f3c0f700f45d067521249 Author: Simon Marchi Date: Mon Oct 30 14:27:30 2017 -0400 Introduce in_inclusive_range, fix -Wtautological-compare warnings When compiling with clang or gcc 8, we see warnings like this: /home/emaisin/src/binutils-gdb/gdb/arm-tdep.c:10013:13: error: comparison of 0 <= unsigned expression is always true [-Werror,-Wtautological-compare] if (0 <= insn_op1 && 3 >= insn_op1) ~ ^ ~~~~~~~~ /home/emaisin/src/binutils-gdb/gdb/arm-tdep.c:11722:20: error: comparison of unsigned expression >= 0 is always true [-Werror,-Wtautological-compare] else if (opB >= 0 && opB <= 2) ~~~ ^ ~ This is because an unsigned integer (opB in this case) will always be >= 0. It is still useful to keep both bounds of the range in the expression, even if one is at the edge of the data type range. This patch introduces a utility function in_inclusive_range that gets rid of the warning while conveying that we are checking for a range. Tested by rebuilding. gdb/ChangeLog: * common/common-utils.h (in_inclusive_range): New function. * arm-tdep.c (arm_record_extension_space): Use in_inclusive_range. (thumb_record_ld_st_reg_offset): Use in_inclusive_range. * cris-tdep.c (cris_spec_reg_applicable): Use in_inclusive_range. diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2855f4d..5a680ed 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2017-10-30 Simon Marchi + + * common/common-utils.h (in_inclusive_range): New function. + * arm-tdep.c (arm_record_extension_space): Use + in_inclusive_range. + (thumb_record_ld_st_reg_offset): Use in_inclusive_range. + * cris-tdep.c (cris_spec_reg_applicable): Use + in_inclusive_range. + 2017-10-30 Pedro Alves Simon Marchi diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index def3958..46b7888 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -10010,13 +10010,13 @@ arm_record_extension_space (insn_decode_record *arm_insn_r) && !INSN_RECORDED(arm_insn_r)) { /* Handle MLA(S) and MUL(S). */ - if (0 <= insn_op1 && 3 >= insn_op1) + if (in_inclusive_range (insn_op1, 0U, 3U)) { record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15); record_buf[1] = ARM_PS_REGNUM; arm_insn_r->reg_rec_count = 2; } - else if (4 <= insn_op1 && 15 >= insn_op1) + else if (in_inclusive_range (insn_op1, 4U, 15U)) { /* Handle SMLAL(S), SMULL(S), UMLAL(S), UMULL(S). */ record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19); @@ -11712,14 +11712,14 @@ thumb_record_ld_st_reg_offset (insn_decode_record *thumb_insn_r) /* Handle load/store register offset. */ uint32_t opB = bits (thumb_insn_r->arm_insn, 9, 11); - if (opB >= 4 && opB <= 7) + if (in_inclusive_range (opB, 4U, 7U)) { /* LDR(2), LDRB(2) , LDRH(2), LDRSB, LDRSH. */ reg_src1 = bits (thumb_insn_r->arm_insn,0, 2); record_buf[0] = reg_src1; thumb_insn_r->reg_rec_count = 1; } - else if (opB >= 0 && opB <= 2) + else if (in_inclusive_range (opB, 0U, 2U)) { /* STR(2), STRB(2), STRH(2) . */ reg_src1 = bits (thumb_insn_r->arm_insn, 3, 5); diff --git a/gdb/common/common-utils.h b/gdb/common/common-utils.h index a32863c..4926a32 100644 --- a/gdb/common/common-utils.h +++ b/gdb/common/common-utils.h @@ -125,4 +125,13 @@ extern void free_vector_argv (std::vector &v); joining all the arguments with a whitespace separating them. */ extern std::string stringify_argv (const std::vector &argv); +/* Return true if VALUE is in [LOW, HIGH]. */ + +template +static bool +in_inclusive_range (T value, T low, T high) +{ + return value >= low && value <= high; +} + #endif diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index d623eb6..416843f 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -1434,19 +1434,19 @@ cris_spec_reg_applicable (struct gdbarch *gdbarch, /* Indeterminate/obsolete. */ return 0; case cris_ver_v0_3: - return (version >= 0 && version <= 3); + return in_inclusive_range (version, 0U, 3U); case cris_ver_v3p: return (version >= 3); case cris_ver_v8: - return (version == 8 || version == 9); + return in_inclusive_range (version, 8U, 9U); case cris_ver_v8p: return (version >= 8); case cris_ver_v0_10: - return (version >= 0 && version <= 10); + return in_inclusive_range (version, 0U, 10U); case cris_ver_v3_10: - return (version >= 3 && version <= 10); + return in_inclusive_range (version, 3U, 10U); case cris_ver_v8_10: - return (version >= 8 && version <= 10); + return in_inclusive_range (version, 8U, 10U); case cris_ver_v10: return (version == 10); case cris_ver_v10p: