From patchwork Thu Aug 3 14:21:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Turko X-Patchwork-Id: 130659 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp1184858vqx; Thu, 3 Aug 2023 07:24:46 -0700 (PDT) X-Google-Smtp-Source: APBJJlEydxxGhUi7EyY3QBEBc/jid+ozBA2JcSQTTw2EbOWA7RHUChnm4qIkbVG+WD/fdqcxHENb X-Received: by 2002:a17:906:3088:b0:992:a85d:278b with SMTP id 8-20020a170906308800b00992a85d278bmr7855554ejv.59.1691072686734; Thu, 03 Aug 2023 07:24:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691072686; cv=none; d=google.com; s=arc-20160816; b=whwRaJq0CfOjF4XhBKRo309RJA/5razm6xeB4R3ZLzNtLey9WOYaRejIUul76ruPPJ 8eoo6k0bRqkfAikHbctWCxKNYMNTcuEZbUtWbedO6CrxOTwN6o2KyGPioWM/ZRBLfRmY oozGlmlEydSEvJunxR20l/mWPtXHy03dwxFb88BEpopT+jMxJ39joiKtqJb/EvFGvc89 7IMJDttbf0IEI1vU8rs+F5JIgwl6XW1JBONa9iB9dOl3ljrca1j42lIx/mIivjCslDfe hAzCip8Qnu9LqSlXxDWBr9qRI9iHsRUdY6I77fLyP55ngGhHzrYLrOYCUnNQv5PTw/Dg LkbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=4ONfezsU+Y6Ocii25Q8nJtKgEUDTkvb/+sIK43Mafxs=; fh=k/nQU4IX+jAQueq710KA8dCAcoPPe4cl6LpGj9WeH7w=; b=XZbOKHYO90QJaXXnLW7onViWHp0FUHcOBh9zbAW18p0xwCUfe9YeHKqZA0W4ARfiXK n8PJNC4y/W4jXZzUnioLj50YSr0jh8ThAcdngDH1NnOXz50VLiD9T+oqR2cmV0yMPXwt P/6RF2XLgSRoYek8HSau3vrchDo8U6ua4atJu9Hqhrw5QztICynsM0+VRgQmtvpyRBLR pD44cWqO9wM6dfAOj89wsrFKhldpI2Dkf84OawJ/+6yjYDMJHFiOLEJW3/tV3wkG3quw wuVYeSlQT2zSaSWjIZjo7bYSNx9SqxKk1zUPmACkAAcqknWRnMhw3aVZeACtaQXhx5WR Cgpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=XWwd43yt; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id o5-20020a17090608c500b009787b15aa51si366986eje.713.2023.08.03.07.24.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:24:46 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=XWwd43yt; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 42F1C3853570 for ; Thu, 3 Aug 2023 14:23:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 42F1C3853570 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1691072630; bh=4ONfezsU+Y6Ocii25Q8nJtKgEUDTkvb/+sIK43Mafxs=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=XWwd43yti56RVsdDDyl7L/MVs6AlWmnip/g9N7Tf50D0Oa1rtnrOQlg3aXiOBOFSR BYsxuX+yUMwYagzjwBajjt5U4FZOw7hC80cgvWdqmWvioqiPVaHwTYoti3iu8U4clx 8cEgJPdDpdW6JdAyRvC+TZcVdql23jF/WgKOXt3Q= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by sourceware.org (Postfix) with ESMTPS id C13373858C5E for ; Thu, 3 Aug 2023 14:23:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C13373858C5E Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-3fba8e2aa52so10344055e9.1 for ; Thu, 03 Aug 2023 07:23:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691072582; x=1691677382; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4ONfezsU+Y6Ocii25Q8nJtKgEUDTkvb/+sIK43Mafxs=; b=ModKxJbrtdqVM4ncIPIbmPfzp3eZS3Z2JmpjwSjRkoNuDp2MGjBh974br0/5Yi5WUM EWYNchR+HiAdsKPosQxnzyVJcE7Ln/T+I/XizHjhhuH3E+/zsMDfaOaPbnzALEsR9WPe WESF3wMF7pD/A0kEtfSrWdL/iEGs9gw2H5cIeI8EZ1ITXncWnEGyNn6EpLaaWOv5V2Et 7sZGQ0L0JFC1S1rFHGtsDoTafL/ifamqrKkJX4LvsGkAFqEBk83IQUscRkiJlzxfzJEl +3N0ytB8/Hx4U8lRcmyWqFmdLqXmGIm2ql2QU5Ek8MoFkfciG5SftXRfN6rMf5QYaJdU VNkw== X-Gm-Message-State: ABy/qLbq2N4yKUzLzC7gDYbhu9gnp7JGmGjoVRkYJBzMnbX8jutwCDBc O++Vfl3Q1LehZrRSWGXB7m3ArLyKvFumpmOE X-Received: by 2002:a1c:7419:0:b0:3fb:e2af:49f6 with SMTP id p25-20020a1c7419000000b003fbe2af49f6mr6932498wmc.39.1691072582229; Thu, 03 Aug 2023 07:23:02 -0700 (PDT) Received: from amwld-aturko1.us.drwholdings.com ([149.14.21.6]) by smtp.gmail.com with ESMTPSA id f9-20020a7bc8c9000000b003fba92fad35sm4371349wml.26.2023.08.03.07.23.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Aug 2023 07:23:01 -0700 (PDT) To: gcc-patches@gcc.gnu.org Cc: Andrzej Turko Subject: [PATCH 2/3 v3] genmatch: Reduce variability of generated code Date: Thu, 3 Aug 2023 16:21:30 +0200 Message-Id: <20230803142131.250087-3-andrzej.turko@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230803142131.250087-1-andrzej.turko@gmail.com> References: <20230803142131.250087-1-andrzej.turko@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, 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: , X-Patchwork-Original-From: Andrzej Turko via Gcc-patches From: Andrzej Turko Reply-To: Andrzej Turko Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773218233820113147 X-GMAIL-MSGID: 1773218233820113147 So far genmatch has been using an unordered map to store information about functions to be generated. Since corresponding locations from match.pd were used as keys in the map, even small changes to match.pd which caused line number changes would change the order in which the functions are generated. This would reshuffle the functions between the generated .cc files. This way even a minimal modification to match.pd forces recompilation of all object files originating from match.pd on rebuild. This commit makes sure that functions are generated in the order of their processing (in contrast to the random order based on hashes of their locations in match.pd). This is done by replacing the unordered map with an ordered one. This way small changes to match.pd does not cause function renaming and reshuffling among generated source files. Together with the subsequent change to logging fprintf calls, this removes unnecessary changes to the files generated by genmatch allowing for reuse of already built object files during rebuild. The aim is to make editing of match.pd and subsequent testing easier. Signed-off-by: Andrzej Turko gcc/ChangeLog: * genmatch.cc: Make sinfo map ordered. * Makefile.in: Require the ordered map header for genmatch.o. --- gcc/Makefile.in | 4 ++-- gcc/genmatch.cc | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in index e99628cec07..2429128cbf2 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -3004,8 +3004,8 @@ build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \ $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) -build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) \ - $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \ +build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ + errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h ordered-hash-map.h \ tree.def builtins.def internal-fn.def case-cfn-macros.h $(CPPLIB_H) build/gencfn-macros.o : gencfn-macros.cc $(BCONFIG_H) $(SYSTEM_H) \ $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-set.h builtins.def \ diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc index 2302f2a7ff0..1deca505603 100644 --- a/gcc/genmatch.cc +++ b/gcc/genmatch.cc @@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see #include "hash-table.h" #include "hash-set.h" #include "is-a.h" +#include "ordered-hash-map.h" /* Stubs for GGC referenced through instantiations triggered by hash-map. */ @@ -1684,7 +1685,7 @@ struct sinfo_hashmap_traits : simple_hashmap_traits, template static inline void remove (T &) {} }; -typedef hash_map +typedef ordered_hash_map sinfo_map_t; /* Current simplifier ID we are processing during insertion into the