From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [IPv6:2620:20:4000:0:a9e:1ff:fe9b:1d1]) by sourceware.org (Postfix) with ESMTPS id EC6C3398B403 for ; Tue, 15 Jun 2021 10:20:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EC6C3398B403 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 78114117B53; Tue, 15 Jun 2021 06:20:52 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id lAmDwhG5zsbZ; Tue, 15 Jun 2021 06:20:52 -0400 (EDT) Received: from tron.gnat.com (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) by rock.gnat.com (Postfix) with ESMTP id 45151117987; Tue, 15 Jun 2021 06:20:52 -0400 (EDT) Received: by tron.gnat.com (Postfix, from userid 4862) id 441A01CA; Tue, 15 Jun 2021 06:20:52 -0400 (EDT) Date: Tue, 15 Jun 2021 06:20:52 -0400 From: Pierre-Marie de Rodat To: gcc-patches@gcc.gnu.org Cc: Bob Duff Subject: [Ada] Disable certain checks in predefined units Message-ID: <20210615102052.GA3373@adacore.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="IS0zKkzwUGydFO0o" Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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-List-Received-Date: Tue, 15 Jun 2021 10:20:56 -0000 --IS0zKkzwUGydFO0o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline This patch fixes a failure of ACATS test cxaib08, which was getting errors in instances of Bounded_Hashed_Maps about nonpreelaborable constructs. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * sem_cat.adb (Check_Non_Static_Default_Expr): Allow nonstatic expression in predefined unit with pragma Preelaborate. --IS0zKkzwUGydFO0o Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="patch.diff" diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb --- a/gcc/ada/sem_cat.adb +++ b/gcc/ada/sem_cat.adb @@ -356,6 +356,14 @@ package body Sem_Cat is if Present (Expression (Component_Decl)) and then Nkind (Expression (Component_Decl)) /= N_Null and then not Is_OK_Static_Expression (Expression (Component_Decl)) + + -- If we're in a predefined unit, we can put whatever we like in a + -- preelaborated package, and in fact in some cases it's necessary + -- to bend the rules. Ada.Containers.Bounded_Hashed_Maps contains + -- some code that would not be considered preelaborable in user + -- code, for example. + + and then not In_Predefined_Unit (Component_Decl) then Error_Msg_Sloc := Sloc (Component_Decl); Error_Msg_F --IS0zKkzwUGydFO0o--