From patchwork Thu Sep 30 01:08:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Lu=C3=ADs_Ferreira?= X-Patchwork-Id: 45587 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A795C385780A for ; Thu, 30 Sep 2021 01:08:29 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from 7.mo5.mail-out.ovh.net (7.mo5.mail-out.ovh.net [178.32.124.100]) by sourceware.org (Postfix) with ESMTPS id 8BD7E3858C39 for ; Thu, 30 Sep 2021 01:08:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8BD7E3858C39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=lsferreira.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=lsferreira.net Received: from player698.ha.ovh.net (unknown [10.109.138.180]) by mo5.mail-out.ovh.net (Postfix) with ESMTP id 368E72D4C4E for ; Thu, 30 Sep 2021 03:08:10 +0200 (CEST) Received: from lsferreira.net (252.131.62.94.rev.vodafone.pt [94.62.131.252]) (Authenticated sender: contact@lsferreira.net) by player698.ha.ovh.net (Postfix) with ESMTPSA id 6D08122A89F6C; Thu, 30 Sep 2021 01:08:09 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-103G0059c0d417e-400b-4b80-8ec9-473bd926dc64, 68FA84281D3968F44CA5625D120D5927ACF446DC) smtp.auth=contact@lsferreira.net X-OVh-ClientIp: 94.62.131.252 From: =?utf-8?q?Lu=C3=ADs_Ferreira?= To: gcc-patches@gcc.gnu.org Subject: [PATCH] libiberty: d-demangle: use switch instead of if-else Date: Thu, 30 Sep 2021 02:08:04 +0100 Message-Id: <20210930010804.750229-1-contact@lsferreira.net> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 X-Ovh-Tracer-Id: 1007117470580013304 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvtddrudekfedgfeelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvffufffkofggtgfgsehtkeertdertdejnecuhfhrohhmpefnuhovshcuhfgvrhhrvghirhgruceotghonhhtrggttheslhhsfhgvrhhrvghirhgrrdhnvghtqeenucggtffrrghtthgvrhhnpeelvddvtddtffdukeffffejtdfgkeegudelhfehveeuudejueegjeduueefgedukeenucfkpheptddrtddrtddrtddpleegrdeivddrudefuddrvdehvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrheileekrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghonhhtrggttheslhhsfhgvrhhrvghirhgrrdhnvghtpdhrtghpthhtohepghgttgdqphgrthgthhgvshesghgttgdrghhnuhdrohhrgh X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Lu=C3=ADs_Ferreira?= Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch allows the compiler to efficiently generate jump tables instead of using if-else-if. Signed-off-by: Luís Ferreira --- libiberty/d-demangle.c | 44 +++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c index 3adf7b562d1..9748a925371 100644 --- a/libiberty/d-demangle.c +++ b/libiberty/d-demangle.c @@ -774,30 +774,26 @@ dlang_type (string *decl, const char *mangled, struct dlang_info *info) return mangled; case 'N': mangled++; - if (*mangled == 'g') /* wild(T) */ - { - mangled++; - string_append (decl, "inout("); - mangled = dlang_type (decl, mangled, info); - string_append (decl, ")"); - return mangled; - } - else if (*mangled == 'h') /* vector(T) */ - { - mangled++; - string_append (decl, "__vector("); - mangled = dlang_type (decl, mangled, info); - string_append (decl, ")"); - return mangled; - } - else if (*mangled == 'n') /* typeof(*null) */ - { - mangled++; - string_append (decl, "typeof(*null)"); - return mangled; - } - else - return NULL; + switch (*mangled) + { + case 'g': /* wild(T) */ + mangled++; + string_append (decl, "inout("); + mangled = dlang_type (decl, mangled, info); + string_append (decl, ")"); + return mangled; + case 'h': /* vector(T) */ + mangled++; + string_append (decl, "__vector("); + mangled = dlang_type (decl, mangled, info); + string_append (decl, ")"); + return mangled; + case 'n': /* typeof(*null) */ + mangled++; + string_append (decl, "typeof(*null)"); + return mangled; + } + return NULL; case 'A': /* dynamic array (T[]) */ mangled++; mangled = dlang_type (decl, mangled, info);