From patchwork Fri Nov 4 13:58:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 15552 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp423210wru; Fri, 4 Nov 2022 07:06:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4i+qzqZYDnFgBL3IiZIOHNzaG5QkdVYtsIlUAcMniOy4m2icbGb8GiHP9EpKCBIOTxcc7y X-Received: by 2002:aa7:c6c1:0:b0:460:f684:901a with SMTP id b1-20020aa7c6c1000000b00460f684901amr36059498eds.6.1667570771497; Fri, 04 Nov 2022 07:06:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667570771; cv=none; d=google.com; s=arc-20160816; b=qS+XpUvZwgpEdKK5rJhIdH4ZDmeVVeyP5ag6IQfxDVtZtZqPuS58p0S7GzIWlY93/9 YUNR+eMRG/MaQkvRau6/GhGuSm29xCzQkqbYIdu2koAVERZMVXW+wg0DGUr+F4HauEw9 ksMn1U2lHVJo0IZde7z0sNlB89QG8EcJ3uKO/ePJ4WflntxBW4F6PB5ttg3MCqP0hCti ursC27rfKS3fHcR9tuySHg8WA6dRQRW5BH20NlOPcc5N7cLRaNLjHSJTcWqdHImxlb2d qgbO0YtcBTRqd5Ker+z9adFaqvlY3PLV4GnrshyhgGTArZUA+DcZuKw+kuxzRsRSOUi1 jjrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:reply-to:from:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=w7U/l8RjTIFuFGlr6+NFa/o+lff/UZ0x5zYXsLqDJHM=; b=GshkA8Pso/VYtKvVL4VDeP7jnPid+SZDUCF9HLY3sXpGPisuDLhVbwAemrTiRsOtFc gmlHGSJobTNYcm5Xe4lv39i1VkjAhMPEX1SCOLh6DgIy6fbjpM9BVoQV2BGbbMTkx42/ GpLozpQxBgsYE3PcommHttXyU0GHWDLxmcKKM5t9S2WVugn7URdpCdpPiWg4t7zs628T PkB88dDFXk+uGecAyMRP8nV5vYwT2nGvO/i8kT2pb+WnZpx7b0ZFRZcDG+CRexJ9QlDs qZq9Weqr3YUx5kfGj5nGdgtIv0n8uvI5Glm+fVkvBMK2k1PSuI6vYOMQOrdvCs0iqC/e qe+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=MihQJOXp; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id g14-20020a056402428e00b00458d1c48708si4746843edc.303.2022.11.04.07.06.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 07:06:11 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=MihQJOXp; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 7A0A13899018 for ; Fri, 4 Nov 2022 14:00:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7A0A13899018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1667570453; bh=w7U/l8RjTIFuFGlr6+NFa/o+lff/UZ0x5zYXsLqDJHM=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=MihQJOXpP+VR7Ewwn+gBsdqAWqzz7hdrqxyUnD5+plqR1A9PIH4nWLju2hzUB2JB/ BV+fBKHatCZoPBmC/q/CVEkjiwD0kSLakqI6c3umtev8mYgyhyLAkrXmGogBM6yCU9 fiKfNIvkU4kCF5wnWS01W7sVHnwqYWBi2WIFJRvk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by sourceware.org (Postfix) with ESMTPS id D245C385AC22 for ; Fri, 4 Nov 2022 13:58:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D245C385AC22 Received: by mail-wm1-x32f.google.com with SMTP id i5-20020a1c3b05000000b003cf47dcd316so5462217wma.4 for ; Fri, 04 Nov 2022 06:58:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=w7U/l8RjTIFuFGlr6+NFa/o+lff/UZ0x5zYXsLqDJHM=; b=OwTtx2qrYqdZuibfrc0HXXeCfPiPmNZKY99gUZe/3/REj/NI/RmWZbluU1m4PqLGON Ugu3uH80qbxKJfUNJ6A6gszkvJmnml4Ml0hmlIWjwwZ1skUEWvKPPYCOozfxkSzOWpqz i3T736r+wVJSvgjQADW5vjzqAnoPuUvyfGEdAadcQmWXIjJ4+5mQxa4bOBnvJnMVgluK AwmZfXdRYxUowqdUEz9erWOn2VbDG7Dpe8aiII3gMuq3jYQsKLMKlWzBO20L+RvHM4qB lTRXi2N+VGoxRcK0CUpBeWf06vWbS37xMVCfLvUT4TkMKioaKck1porZBLVMW0LFETxV gJyA== X-Gm-Message-State: ACrzQf284gEbv8WBGB+tNElkQ0gPITz2kWuKTYgE7rNZAmnMntBaVAu7 Qq1MydVYESb4qo2W8/5vdySB0sPFKkK+/w== X-Received: by 2002:a1c:7c14:0:b0:3b5:1133:d2ed with SMTP id x20-20020a1c7c14000000b003b51133d2edmr23712085wmc.133.1667570285681; Fri, 04 Nov 2022 06:58:05 -0700 (PDT) Received: from localhost.localdomain (static-176-191-105-132.ftth.abo.bbox.fr. [176.191.105.132]) by smtp.gmail.com with ESMTPSA id e7-20020a5d5007000000b00236644228besm3546227wrt.40.2022.11.04.06.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 06:58:05 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [COMMITTED] ada: Avoid repeated iteration over private protected components Date: Fri, 4 Nov 2022 14:58:01 +0100 Message-Id: <20221104135801.86694-1-poulhies@adacore.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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: =?utf-8?q?Marc_Poulhi=C3=A8s_via_Gcc-patches?= From: =?utf-8?q?Marc_Poulhi=C3=A8s?= Reply-To: =?utf-8?q?Marc_Poulhi=C3=A8s?= Cc: Piotr Trojanek Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748574689709525607?= X-GMAIL-MSGID: =?utf-8?q?1748574689709525607?= From: Piotr Trojanek The First_Entity/Next_Entity chain includes private entities, so there it no need to iterate starting both from First_Entity and First_Private_Entity. Code cleanup related to improved detection of references to uninitialized objects; behavior is unaffected. gcc/ada/ * sem_util.adb (Check_Components): Iterate using First/Next_Component_Or_Discriminant. (Has_Preelaborable_Initialization): Avoid repeated iteration with calls to Check_Components with First_Entity and First_Private_Entity. (Is_Independent_Object_Entity): Tune indentation. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_util.adb | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 9a7640b3147..536d5fadefb 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -13679,15 +13679,12 @@ package body Sem_Util is Exp : Node_Id; begin - -- Loop through entities of record or protected type + -- Loop through components and discriminants of record or protected + -- type. - Ent := E; + Ent := First_Component_Or_Discriminant (E); while Present (Ent) loop - -- We are interested only in components and discriminants - - Exp := Empty; - case Ekind (Ent) is when E_Component => @@ -13698,6 +13695,8 @@ package body Sem_Util is if Present (Declaration_Node (Ent)) then Exp := Expression (Declaration_Node (Ent)); + else + Exp := Empty; end if; when E_Discriminant => @@ -13710,7 +13709,7 @@ package body Sem_Util is Exp := Discriminant_Default_Value (Ent); when others => - goto Check_Next_Entity; + raise Program_Error; end case; -- A component has PI if it has no default expression and the @@ -13731,8 +13730,7 @@ package body Sem_Util is exit; end if; - <> - Next_Entity (Ent); + Next_Component_Or_Discriminant (Ent); end loop; end Check_Components; @@ -13842,7 +13840,7 @@ package body Sem_Util is -- If OK, check extension components (if any) if Has_PE and then Is_Record_Type (E) then - Check_Components (First_Entity (E)); + Check_Components (E); end if; -- Check specifically for 10.2.1(11.4/2) exception: a controlled type @@ -13882,7 +13880,7 @@ package body Sem_Util is elsif Is_Record_Type (E) then Has_PE := True; - Check_Components (First_Entity (E)); + Check_Components (E); -- Protected types must not have entries, and components must meet -- same set of rules as for record components. @@ -13892,8 +13890,7 @@ package body Sem_Util is Has_PE := False; else Has_PE := True; - Check_Components (First_Entity (E)); - Check_Components (First_Private_Entity (E)); + Check_Components (E); end if; -- Type System.Address always has preelaborable initialization @@ -18305,7 +18302,7 @@ package body Sem_Util is Is_Object (Id) and then (Is_Independent (Id) or else - Is_Independent (Etype (Id))); + Is_Independent (Etype (Id))); end Is_Independent_Object_Entity; -------------------------------------