From patchwork Sun May 22 09:02:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Sayle X-Patchwork-Id: 54268 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 2DD2B38387D9 for ; Sun, 22 May 2022 09:03:02 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from server.nextmovesoftware.com (server.nextmovesoftware.com [162.254.253.69]) by sourceware.org (Postfix) with ESMTPS id D616A3865C2A for ; Sun, 22 May 2022 09:02:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D616A3865C2A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=nextmovesoftware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=nextmovesoftware.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nextmovesoftware.com; s=default; h=Content-Type:MIME-Version:Message-ID: Date:Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=vfWAM7lyfLK4Z8Qr5rWlvdTcWbzHwDBX7j+e68/QvRQ=; b=QWTv2zudlTH2nyYNzEtmxnP5LW sgjBqpCNYtSMkXnS232StshWy+kQCnTb49Qeb5Lmsfw4sk13ET+IsrqXaNf/waIpyg2Mb3ewpFogg 9CLyPk9sGIo9YNBouO+N2aM41GcUxtfzxWzHYTf/AT/cHL2Ii7cOhM4bSf8gE9QxHgcy6elx2FQtt or6kYfAwIRS3lKKZI+zEjJN6ixJkmngs3ixxzytlTRArBJcnAop0qXv1cHWLVWjbSAuc8mJ/OuOgb q/H4eZMGSVdl1drrVY/6krSm9mnGT+Ao382OkXceSvHem5I2NWhE9mJDwjAz1TZ0ABg7jWXqFwaKb g/LpBKIQ==; Received: from host109-154-46-241.range109-154.btcentralplus.com ([109.154.46.241]:60255 helo=Dell) by server.nextmovesoftware.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nshU4-0000tO-RF for gcc-patches@gcc.gnu.org; Sun, 22 May 2022 05:02:45 -0400 From: "Roger Sayle" To: Subject: [PATCH] Minor improvement to genpreds.cc Date: Sun, 22 May 2022 10:02:42 +0100 Message-ID: <020b01d86dba$b2e29cd0$18a7d670$@nextmovesoftware.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AdhtufncFbJlVx86QZuunAWGuYuSjA== Content-Language: en-gb X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server.nextmovesoftware.com X-AntiAbuse: Original Domain - gcc.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - nextmovesoftware.com X-Get-Message-Sender-Via: server.nextmovesoftware.com: authenticated_id: roger@nextmovesoftware.com X-Authenticated-Sender: server.nextmovesoftware.com: roger@nextmovesoftware.com X-Source: X-Source-Args: X-Source-Dir: X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This simple patch implements Richard Biener's suggestion in comment #6 of PR tree-optimization/52171 (from February 2013) that the insn-preds code generated by genpreds can avoid using strncmp when matching constant strings of length one. The effect of this patch is best explained by the diff of insn-preds.cc: < if (!strncmp (str + 1, "g", 1)) --- > if (str[1] == 'g') 3104c3104 < if (!strncmp (str + 1, "m", 1)) --- > if (str[1] == 'm') 3106c3106 < if (!strncmp (str + 1, "c", 1)) --- > if (str[1] == 'c') ... The equivalent optimization is performed by GCC (but perhaps not by the host compiler), but generating simpler/smaller code may encourage further optimizations (such as use of a switch statement). This patch has been tested on x86_64-pc-linux-gnu with make bootstrap and make -k check with no new failures. Ok for mainline? 2022-05-22 Roger Sayle gcc/ChangeLog * genpreds.cc (write_lookup_constraint_1): Avoid generating a call to strncmp for strings of length one. Roger -- diff --git a/gcc/genpreds.cc b/gcc/genpreds.cc index f71da09..4571ac7 100644 --- a/gcc/genpreds.cc +++ b/gcc/genpreds.cc @@ -1089,10 +1089,15 @@ write_lookup_constraint_1 (void) { do { - printf (" if (!strncmp (str + 1, \"%s\", %lu))\n" - " return CONSTRAINT_%s;\n", - c->name + 1, (unsigned long int) c->namelen - 1, - c->c_name); + if (c->namelen > 2) + printf (" if (!strncmp (str + 1, \"%s\", %lu))\n" + " return CONSTRAINT_%s;\n", + c->name + 1, (unsigned long int) c->namelen - 1, + c->c_name); + else + printf (" if (str[1] == '%c')\n" + " return CONSTRAINT_%s;\n", + c->name[1], c->c_name); c = c->next_this_letter; } while (c);