From patchwork Thu Jun 20 08:52:51 2024 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: 1949986 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=OLIYVVLV; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Z6f457gz20XW for ; Thu, 20 Jun 2024 18:54:16 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B1208388A027 for ; Thu, 20 Jun 2024 08:54:14 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id 89A7E3888C7D for ; Thu, 20 Jun 2024 08:53:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 89A7E3888C7D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 89A7E3888C7D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::430 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873614; cv=none; b=h1TngZSZOLp0iVu/uOd4l06ht+7SHzE5DJGtjkY9FB/6nG1AEiqw5Hy4PfvXfDkPLM3+oM4uqR+hF77f1XUWnQkK5b6oUIWUw7GFHcef71TWFjeXxGn9dk3fQDt47GFyp4LcVS/Kdu/qiSuZbdggMGQe6F3WvvTnBnDOlo6gmnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873614; c=relaxed/simple; bh=pV5U4JpNYn4CmPVs7DcpHK63PJiB0lv/t0VrDCASUyw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Gy2sYDiKjDfYBJ3shrHJikqu60Xz22YgFDcFsjvmWUkYttppELUtG0AtjL/hUOZF7tqRtnL8eOP+0rPZlKYD8NhiLZvA7pP5QenQNkQFMyC62Jz3CO0CG+5LxLzds0fJdQyjVfdvNG+/aepyBHMrgtICyqNSvVeBTrHZvf+MKdM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3629c517da9so714705f8f.2 for ; Thu, 20 Jun 2024 01:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873611; x=1719478411; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=9oMmeWUqQdZa3gjvTaepViQc+Kcx/kABlCjzHVqtVxo=; b=OLIYVVLVHFu6Txxs6Y2JjMRzO927KqWKpfKrpqWIA+9bYyiMigB2XlPZTYK0CgJLdW AchIgCje7uPmuKd0/RAg/u5JBcl92RvYErq9A/2MX+3OTtmjWsBedH8yFMKw6n4vLTT4 FSFp4VUVa7dgzWLx5qxdjk+nQK8mn+WfgkCQH5NYw64yzoQrNTvfrUHIb/lDQCqJJqeH m/pKcGbLRbNECuywkF87mmc944ZagZE38rBvLu6UHdof5LEEWD6LhRSXoBhHu+whCYk/ IuS3Qft74VgvGq5ZNirPvL3SOGHqTXgY+Hs97VgLBDJmwonM4mFpSXYutpU94Q8lRtV+ uSRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873611; x=1719478411; 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=9oMmeWUqQdZa3gjvTaepViQc+Kcx/kABlCjzHVqtVxo=; b=Y2HUSWGcW3kSQNOTKTKkYMNNqI0us0/sLIdEoK5Rj0EaJcrTXw1LapIAlhX8pby+04 y/KrS2zsrWyHFbqAT7+TbI2lS5Jo/UI4sYTl//8Pqq8smrn+sqyLJLTaNcn+lXm6ImMs yfGa2XItjmmjMalBZb5BN9JuesH49qZNdZlYDk+gb8a8n3JPSzBEO7gAXeirvkdceSUU LeHbfRLth7Vg/vLQ6ScEI4AUrC4APQLP2RQNsUsPHYXEqoRxACvikAl5ZhgVQfPPvcwd 9/Sya5Jwj+V4OZDbDO8NP1Fpg8yR0bKvcxdFg39skKoZ8RKv7mPEqbytcG65s6MXRW9i Ah2Q== X-Gm-Message-State: AOJu0YzLVpqiv8ClfAjo8v4hyzWN+hEjDHWvigdBkdL0HiNkDmXXLelA aGzUoYXtww2a4bB95V/ap1RcAv+W8ToOoCl7PRPLjb4mprXx6SwgAOXYddLzcGM1sDHKnxpK80s = X-Google-Smtp-Source: AGHT+IGkEZMDWckQt2QAqWvTWNDkdvGbX5ZLDQJyfPmKpmy581WGaGI+IIINzRzNbDeYQ3q+AJwrKw== X-Received: by 2002:adf:e84e:0:b0:361:78c8:2eb6 with SMTP id ffacd0b85a97d-363175b904emr3945019f8f.25.1718873610811; Thu, 20 Jun 2024 01:53:30 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:30 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Piotr Trojanek Subject: [COMMITTED 01/30] ada: Fix list of attributes defined by Ada 2022 Date: Thu, 20 Jun 2024 10:52:51 +0200 Message-ID: <20240620085321.2412421-1-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Piotr Trojanek Recognize references to attributes Put_Image and Object_Size as language-defined in Ada 2022 and implementation-defined in earlier versions of Ada. Other attributes listed in Ada 2022 RM, K.2 and currently implemented in GNAT are correctly categorized. This change only affects code with restriction No_Implementation_Attributes. gcc/ada/ * sem_attr.adb (Attribute_22): Add Put_Image and Object_Size. * sem_attr.ads (Attribute_Impl_Def): Remove Object_Size. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_attr.adb | 4 +++- gcc/ada/sem_attr.ads | 11 ----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 9c3bc62d321..c2bb094492d 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -185,7 +185,9 @@ package body Sem_Attr is (Attribute_Enum_Rep | Attribute_Enum_Val | Attribute_Index | - Attribute_Preelaborable_Initialization => True, + Attribute_Object_Size | + Attribute_Preelaborable_Initialization | + Attribute_Put_Image => True, others => False); -- The following array contains all attributes that imply a modification diff --git a/gcc/ada/sem_attr.ads b/gcc/ada/sem_attr.ads index 52359e40ef6..17dce1fb0b0 100644 --- a/gcc/ada/sem_attr.ads +++ b/gcc/ada/sem_attr.ads @@ -381,17 +381,6 @@ package Sem_Attr is -- other composite object passed by reference, there is no other way -- of specifying that a zero address should be passed. - ----------------- - -- Object_Size -- - ----------------- - - Attribute_Object_Size => True, - -- Type'Object_Size is the same as Type'Size for all types except - -- fixed-point types and discrete types. For fixed-point types and - -- discrete types, this attribute gives the size used for default - -- allocation of objects and components of the size. See section in - -- Einfo ("Handling of Type'Size values") for further details. - ------------------------- -- Passed_By_Reference -- ------------------------- From patchwork Thu Jun 20 08:52:52 2024 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: 1949985 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Ko9i6OZQ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Z6f00bdz20KL for ; Thu, 20 Jun 2024 18:54:16 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1DACE388A039 for ; Thu, 20 Jun 2024 08:54:15 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id F07F33888C5E for ; Thu, 20 Jun 2024 08:53:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F07F33888C5E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F07F33888C5E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::431 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873615; cv=none; b=FmxHfqEtM4zOlNT4MfdKCMLD8FYxFbASONiRdmKwV54s5L2E5CGFP0b9N+kWJG4gVwIPeCCVqsuDO8zBTmO42+8v7Lh+1DfxPIN5FGqK8ESoBkF4VzuI2rlbsOo2gSqz3VV9OpP0ODGpgtKQ7s7jLMGrhuRntEdr8SZug8Mic/M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873615; c=relaxed/simple; bh=/7CDwyYlrRKytJDlqrdaEfJk6dmagX65yM2Wqk1wUVc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=YQLkWIWHf0EHQJKoYCk+dXARvn0Vkthq/NDdFm2x/JnqYdx1MWp8RPP5g5m3HllcuZ52lhjs3LwGF8v94SeJBo6HReaGc82g/VCiZ8j6Z2CSoAyP2fyGSYveqOKMUHZHAGiluZkhF9B4571fplM9pTFVedHTm1CO/h1Oi7KHH2g= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-364ff42999eso333179f8f.3 for ; Thu, 20 Jun 2024 01:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873612; x=1719478412; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wjVPvVW5rua7NspFITnlhefmx9Gq501eC+Ur00ikpZc=; b=Ko9i6OZQhTXJIpbpiGywVvv5/yhTGhD6uYIS7jNTlqxLM7PMY0mrbfnnqv7MIikcFN ++z7dtpzfkXY+yI/MsCV5A6CdLik64QcOT4G3FVSniYOdxLy64uXrkoQdOzA3nNZ58Cb v0ptZR4Q+dut/iPLW905qqLOpviExhUliXtvVOW0Aez7MYWoxb5urv8b9aFrCnfnb4AN +GUGGUV9NPby9wAzo5Pvpv+Blcjn5duiHWAf2uOL0Q632xKNkgQp+z6JkZJJdyJ0Uagv 1039/+T/btU20wxO6DAoRptB11cU4sukO/A0f+cPIMeW0syb4X4IQIMLjJZGltDzcidc PYlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873612; x=1719478412; 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=wjVPvVW5rua7NspFITnlhefmx9Gq501eC+Ur00ikpZc=; b=EGqrbfTZOQxt3lrfjbBM03iTGudtPidduvVux3r7eWTL+PsvjFcxTC8g8uadq0OhFl cy5lldWMezVK3JuZWfrxPLn6LLYVtwEYC58Xlj0PvluYuFUhos5DTU3MSWhdRkHtn09E 31ZeY97fHhvUa7ixfouI+z90LvNhF+5CtK8F7LM0+AqoKtmvGksVgLio4LFqwZJooPgH GK3m0VQ3PlVuWfFqWH9DMixZioYD9w+uk4E3iwyFqhnjVGFREP60zCB99FwF5NUpV4oF VQwlCsVPtFfKY8qqE4Tyr+42syjN9iR9um+qrZnhZSg1sjbHSc/Xuy/97gv3XpNCVQ3I YuqQ== X-Gm-Message-State: AOJu0YzCRiIJt7yJ4LP1cdmtkcT9FTSOjXdThciI1X2ykDEfmWyehT1i pFFcG5owW+xvkjwLGDqlw1Cu8mPs9i2zAJqbmzW4EETVmGuq/ZTZmW2lxXnpHUtfAIZU1QMrvR8 = X-Google-Smtp-Source: AGHT+IGQJsjp4BkTUXNL2Th67sUNooSvbERpM+sRqPOZsP7nQwSP04NANja2r2B8cu0mJ4ZyMhxrQw== X-Received: by 2002:a5d:4406:0:b0:360:7c17:5936 with SMTP id ffacd0b85a97d-36319990561mr4199644f8f.58.1718873611567; Thu, 20 Jun 2024 01:53:31 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:31 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Steve Baird Subject: [COMMITTED 02/30] ada: Improve preprocessor error handling. Date: Thu, 20 Jun 2024 10:52:52 +0200 Message-ID: <20240620085321.2412421-2-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Steve Baird In some cases, gnatprep would correctly emit an error message and then incorrectly exit with a return code of zero, indicating success. In some cases, a correct message about an error detected by the integrated preprocessor would be accompanied by an incorrect message indicating that a source file could not be found. gcc/ada/ * gprep.adb (Process_Files.Process_One_File): When calling OS_Exit in an error path, pass in a Status parameter of 1 instead of 0 (because 0 indicates success). * lib-load.adb (Load_Main_Source): Do not emit a message about a missing source file if other error messages were generated by calling Load_Source_File; the file isn't missing - it failed preprocessing. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/gprep.adb | 2 +- gcc/ada/lib-load.adb | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ada/gprep.adb b/gcc/ada/gprep.adb index a95cd634cc1..3cb8026a042 100644 --- a/gcc/ada/gprep.adb +++ b/gcc/ada/gprep.adb @@ -552,7 +552,7 @@ package body GPrep is Errutil.Finalize (Source_Type => "input"); - OS_Exit (0); + OS_Exit (1); -- Otherwise, close the output file, and we are done diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb index 59adabc612c..d5ea087a4fa 100644 --- a/gcc/ada/lib-load.adb +++ b/gcc/ada/lib-load.adb @@ -313,6 +313,7 @@ package body Lib.Load is Is_Predefined_Renaming_File_Name (Fname); GNAT_Name : constant Boolean := Is_GNAT_File_Name (Fname); + Saved_Error_Count : constant Nat := Total_Errors_Detected; Version : Word := 0; begin @@ -336,7 +337,14 @@ package body Lib.Load is if Main_Source_File > No_Source_File then Version := Source_Checksum (Main_Source_File); - else + -- If we get here and Saved_Error_Count /= Total_Errors_Detected, + -- then an error occurred during preprocessing. In this case + -- we have already generated an error message during preprocessing + -- and we do not want to emit an incorrect "file foo.adb not found" + -- message here. + + elsif Saved_Error_Count = Total_Errors_Detected then + -- To avoid emitting a source location (since there is no file), -- we write a custom error message instead of using the machinery -- in errout.adb. From patchwork Thu Jun 20 08:52:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1949991 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Hq7kUlz2; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZDk2Nsnz20X8 for ; Thu, 20 Jun 2024 18:59:34 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 47E90388A411 for ; Thu, 20 Jun 2024 08:59:32 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id 32DBF388982B for ; Thu, 20 Jun 2024 08:53:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 32DBF388982B Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 32DBF388982B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873625; cv=none; b=TtAqPhM5uW++OqCCQac0/XoFxsjlDeb33MWxAEaG0/t7KXim2LJtX6azl7Yurz6htJUyh4NAz+SLB6RJLFePXANPYkmhkA2OaePV9Hvlhj6WIGaWPihAfsJT5kGIwA6GX3Zb2K1Q9MhCmLipBgwx6t3tiRSPod48pO3m8dn+MIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873625; c=relaxed/simple; bh=WIf3yVH0TRAJli55rsYjLnljuRygFTEzVyL/9DxeIzU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=bbk7tS0fzBY03o1vQaioPzi6dLwI8zpIetiAph6pVL6UmmtPyYBhK0oTCDSp6/tT4KCPSbZCqDyTEw7UZGpWrtbPKQkGol9CRjlaclVj/OFP72Y9JTA6b1XtT3bcMxjAzJC58GqV5Dcwm67Q4O+M+wYGJqnV597AxPceHteBJwA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-361b376236fso496622f8f.3 for ; Thu, 20 Jun 2024 01:53:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873615; x=1719478415; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T+hS/DueiTqgXVl9du9mkYdE63nE13shxNQuZMg6JhM=; b=Hq7kUlz2FhMQSid2hAu9gFy9yU3VfLfrMWtGpD6dULyuPXl0eW4Wn229hw0jOAQIGz VlTAv0qFRjAZ3WA89mx+kFlfCeU0sLUW4g2OuX03NpVP9C5Ne/KduIXe06v8YjODmsIh f5CZAcNDBeLBVUTpIUwWMQbTS/cjhoyYRVuBPyGXKZzs4i6GQr8Eei9dPvROzc6mTa61 kBoJsDnxy5IxdQwFhHk825wnKdVdxlFDfW2AEF9jOWsnCYcJlutsk5vMO411IEgQ45M2 AcfuNA1lScC5ctL2D35+r8KLnmW7z/lCQDw6TPa4dhA6qU7/fLaTmiAxYE72dP290AW+ EPPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873615; x=1719478415; 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=T+hS/DueiTqgXVl9du9mkYdE63nE13shxNQuZMg6JhM=; b=RGKLqTL/QCyMtwG3afxmE0Ga3L0zf9HnGe6WEfN0KkVoP+Fesv7E39WFf5Xd3T/G5T FkjCd9CfgkiJbSOnIJIYuc6iQivrQY5JA+97wbnb1QHy6GuJPdx04i7VgNCorp2G9+MR NlNG9tuTrrIKxMJaRNdmj/anNtf0Z6NZSgQMR7w/iFMQjktiiUdzXMVEzvgSFk4xsSQv krqvNy64ocWb7+XLdcnClXMtYGb1uPQOCxBr+g5ecF5w6IICZluruuj0rLhhjZR2aMWP 2PpgHBU+nms04HLRNYJso6kSaEU6H2TpXN2hsACxuVzug6wM7iKYuaP5dcFVpc5X0Erj dLKg== X-Gm-Message-State: AOJu0Yz85jSZ2sABOchvBgYI9SsKJ4KgRg9ruUp4q3KK6a/lJjOoLV8Z dSbRDsQUtrkrQji+lNuWCfsGfjRfB6w1Pz/Kkecp8MnUMge6+HBB5x1e7ungBW98bPSz4CcHenE = X-Google-Smtp-Source: AGHT+IGdUu/YvXQ3F189IOzbPkfoFrs9ZKDRTIMtnxrjk56tGx3pymT3/CwRJcggkZwJk6bX4yaF9g== X-Received: by 2002:adf:fc4d:0:b0:362:3b56:dbda with SMTP id ffacd0b85a97d-363171e2c41mr3663485f8f.9.1718873612901; Thu, 20 Jun 2024 01:53:32 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:32 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Justin Squirek Subject: [COMMITTED 03/30] ada: Update documentation for 'Super Date: Thu, 20 Jun 2024 10:52:53 +0200 Message-ID: <20240620085321.2412421-3-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Justin Squirek This patch moves the documentation for 'Super from gnat language extensions to experimental language extensions. gcc/ada/ * doc/gnat_rm/gnat_language_extensions.rst: Add entry for 'Super. * doc/gnat_rm/implementation_defined_attributes.rst: Remove entry for 'Super. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../doc/gnat_rm/gnat_language_extensions.rst | 27 + .../implementation_defined_attributes.rst | 24 - gcc/ada/gnat_rm.texi | 933 +++++++++--------- gcc/ada/gnat_ugn.texi | 4 +- 4 files changed, 497 insertions(+), 491 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst index cf1ad60f13c..99cab9d2816 100644 --- a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst +++ b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst @@ -368,6 +368,33 @@ support interactions with GPU. Here is a link to the full RFC: https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-storage-model.rst +Attribute Super +--------------- +.. index:: Super + +The ``Super`` attribute can be applied to objects of tagged types in order +to obtain a view conversion to the most immediate specific parent type. + +It cannot be applied to objects of types without any ancestors, or types whose +immediate parent is abstract. + +.. code-block:: ada + + type T1 is tagged null record; + procedure P (V : T1); + + type T2 is new T1 with null record; + procedure P (V : T2); + + procedure Call (V : T2'Class) is + begin + V'Super.P; -- Equivalent to "P (T1 (V));", a nondispatching call + -- to T1's primitive procedure P. + end; + +Here is a link to the full RFC: +https://github.com/QuentinOchem/ada-spark-rfcs/blob/oop/considered/rfc-oop-super.rst + Simpler accessibility model --------------------------- diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst b/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst index d5a55b920fe..2db245a0b88 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst @@ -1225,30 +1225,6 @@ type ``RACW_Stub_Type`` declared in the internal implementation-defined unit ``System.Partition_Interface``. Use of this attribute will create an implicit dependency on this unit. -Attribute Super -=============== -.. index:: Super - -The ``Super`` attribute can be applied to objects of tagged types in order -to obtain a view conversion to the most immediate specific parent type. - -It cannot be applied to objects of types without any ancestors, or types whose -immediate parent is an interface type. - -.. code-block:: ada - - type T1 is tagged null record; - procedure P (V : T1); - - type T2 is new T1 with null record; - procedure P (V : T2); - - procedure Call (V : T2'Class) is - begin - V'Super.P; -- Equivalent to "P (T1 (V));", a nondispatching call - -- to T1's primitive procedure P. - end; - Attribute System_Allocator_Alignment ==================================== .. index:: Alignment, allocator diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 4dfb896e42f..8068b4de4c6 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -19,7 +19,7 @@ @copying @quotation -GNAT Reference Manual , May 28, 2024 +GNAT Reference Manual , Jun 14, 2024 AdaCore @@ -433,7 +433,6 @@ Implementation Defined Attributes * Attribute Small_Numerator:: * Attribute Storage_Unit:: * Attribute Stub_Type:: -* Attribute Super:: * Attribute System_Allocator_Alignment:: * Attribute Target_Name:: * Attribute To_Address:: @@ -902,6 +901,7 @@ Curated Extensions Experimental Language Extensions * Pragma Storage_Model:: +* Attribute Super:: * Simpler accessibility model:: * Case pattern matching:: * Mutably Tagged Types with Size’Class Aspect:: @@ -10277,7 +10277,6 @@ consideration, you should minimize the use of these attributes. * Attribute Small_Numerator:: * Attribute Storage_Unit:: * Attribute Stub_Type:: -* Attribute Super:: * Attribute System_Allocator_Alignment:: * Attribute Target_Name:: * Attribute To_Address:: @@ -11667,7 +11666,7 @@ with coprime factors (i.e. as an irreducible fraction). @code{Standard'Storage_Unit} (@code{Standard} is the only allowed prefix) provides the same value as @code{System.Storage_Unit}. -@node Attribute Stub_Type,Attribute Super,Attribute Storage_Unit,Implementation Defined Attributes +@node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1b0} @section Attribute Stub_Type @@ -11691,35 +11690,8 @@ type @code{RACW_Stub_Type} declared in the internal implementation-defined unit @code{System.Partition_Interface}. Use of this attribute will create an implicit dependency on this unit. -@node Attribute Super,Attribute System_Allocator_Alignment,Attribute Stub_Type,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-super}@anchor{1b1} -@section Attribute Super - - -@geindex Super - -The @code{Super} attribute can be applied to objects of tagged types in order -to obtain a view conversion to the most immediate specific parent type. - -It cannot be applied to objects of types without any ancestors, or types whose -immediate parent is an interface type. - -@example -type T1 is tagged null record; -procedure P (V : T1); - -type T2 is new T1 with null record; -procedure P (V : T2); - -procedure Call (V : T2'Class) is -begin - V'Super.P; -- Equivalent to "P (T1 (V));", a nondispatching call - -- to T1's primitive procedure P. -end; -@end example - -@node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Super,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b2} +@node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes +@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b1} @section Attribute System_Allocator_Alignment @@ -11736,7 +11708,7 @@ with alignment too large or to enable a realignment circuitry if the alignment request is larger than this value. @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b3} +@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b2} @section Attribute Target_Name @@ -11749,7 +11721,7 @@ standard gcc target name without the terminating slash (for example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”). @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b4} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b3} @section Attribute To_Address @@ -11772,7 +11744,7 @@ modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on a 32 bits machine). @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b5} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b4} @section Attribute To_Any @@ -11782,7 +11754,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b6} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b5} @section Attribute Type_Class @@ -11812,7 +11784,7 @@ applies to all concurrent types. This attribute is designed to be compatible with the DEC Ada 83 attribute of the same name. @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b7} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b6} @section Attribute Type_Key @@ -11824,7 +11796,7 @@ about the type or subtype. This provides improved compatibility with other implementations that support this attribute. @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1b8} +@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1b7} @section Attribute TypeCode @@ -11834,7 +11806,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1b9} +@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1b8} @section Attribute Unconstrained_Array @@ -11848,7 +11820,7 @@ still static, and yields the result of applying this test to the generic actual. @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1ba} +@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1b9} @section Attribute Universal_Literal_String @@ -11876,7 +11848,7 @@ end; @end example @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1bb} +@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ba} @section Attribute Unrestricted_Access @@ -12063,7 +12035,7 @@ In general this is a risky approach. It may appear to “work” but such uses o of GNAT to another, so are best avoided if possible. @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1bc} +@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1bb} @section Attribute Update @@ -12144,7 +12116,7 @@ A := A'Update ((1, 2) => 20, (3, 4) => 30); which changes element (1,2) to 20 and (3,4) to 30. @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1bd} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1bc} @section Attribute Valid_Value @@ -12156,7 +12128,7 @@ a String, and returns Boolean. @code{T'Valid_Value (S)} returns True if and only if @code{T'Value (S)} would not raise Constraint_Error. @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1be} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1bd} @section Attribute Valid_Scalars @@ -12190,7 +12162,7 @@ write a function with a single use of the attribute, and then call that function from multiple places. @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1bf} +@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1be} @section Attribute VADS_Size @@ -12210,7 +12182,7 @@ gives the result that would be obtained by applying the attribute to the corresponding type. @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16c}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1c0} +@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16c}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1bf} @section Attribute Value_Size @@ -12224,7 +12196,7 @@ a value of the given subtype. It is the same as @code{type'Size}, but, unlike @code{Size}, may be set for non-first subtypes. @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c1} +@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c0} @section Attribute Wchar_T_Size @@ -12236,7 +12208,7 @@ primarily for constructing the definition of this type in package @code{Interfaces.C}. The result is a static constant. @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c2} +@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c1} @section Attribute Word_Size @@ -12247,7 +12219,7 @@ prefix) provides the value @code{System.Word_Size}. The result is a static constant. @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top -@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c2}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} @chapter Standard and Implementation Defined Restrictions @@ -12276,7 +12248,7 @@ language defined or GNAT-specific, are listed in the following. @end menu @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c5} @section Partition-Wide Restrictions @@ -12369,7 +12341,7 @@ then all compilation units in the partition must obey the restriction). @end menu @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c6} @subsection Immediate_Reclamation @@ -12381,7 +12353,7 @@ deallocation, any storage reserved at run time for an object is immediately reclaimed when the object no longer exists. @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1c8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1c7} @subsection Max_Asynchronous_Select_Nesting @@ -12393,7 +12365,7 @@ detected at compile time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1c9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1c8} @subsection Max_Entry_Queue_Length @@ -12414,7 +12386,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1ca} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1c9} @subsection Max_Protected_Entries @@ -12425,7 +12397,7 @@ bounds of every entry family of a protected unit shall be static, or shall be defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1cb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1ca} @subsection Max_Select_Alternatives @@ -12434,7 +12406,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. [RM D.7] Specifies the maximum number of alternatives in a selective accept. @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1cc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1cb} @subsection Max_Storage_At_Blocking @@ -12445,7 +12417,7 @@ Storage_Size that can be retained by a blocked task. A violation of this restriction causes Storage_Error to be raised. @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1cd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1cc} @subsection Max_Task_Entries @@ -12458,7 +12430,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1ce} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1cd} @subsection Max_Tasks @@ -12471,7 +12443,7 @@ time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1cf} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1ce} @subsection No_Abort_Statements @@ -12481,7 +12453,7 @@ Storage_Error to be raised. no calls to Task_Identification.Abort_Task. @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1d0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1cf} @subsection No_Access_Parameter_Allocators @@ -12492,7 +12464,7 @@ occurrences of an allocator as the actual parameter to an access parameter. @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d0} @subsection No_Access_Subprograms @@ -12502,7 +12474,7 @@ parameter. declarations of access-to-subprogram types. @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d1} @subsection No_Allocators @@ -12512,7 +12484,7 @@ declarations of access-to-subprogram types. occurrences of an allocator. @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d2} @subsection No_Anonymous_Allocators @@ -12522,7 +12494,7 @@ occurrences of an allocator. occurrences of an allocator of anonymous access type. @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d3} @subsection No_Asynchronous_Control @@ -12532,7 +12504,7 @@ occurrences of an allocator of anonymous access type. dependences on the predefined package Asynchronous_Task_Control. @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d4} @subsection No_Calendar @@ -12542,7 +12514,7 @@ dependences on the predefined package Asynchronous_Task_Control. dependences on package Calendar. @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d5} @subsection No_Coextensions @@ -12552,7 +12524,7 @@ dependences on package Calendar. coextensions. See 3.10.2. @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d6} @subsection No_Default_Initialization @@ -12569,7 +12541,7 @@ is to prohibit all cases of variables declared without a specific initializer (including the case of OUT scalar parameters). @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1d8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1d7} @subsection No_Delay @@ -12579,7 +12551,7 @@ initializer (including the case of OUT scalar parameters). delay statements and no semantic dependences on package Calendar. @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1d9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1d8} @subsection No_Dependence @@ -12622,7 +12594,7 @@ to support specific constructs of the language. Here are some examples: @end itemize @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1da} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1d9} @subsection No_Direct_Boolean_Operators @@ -12635,7 +12607,7 @@ protocol requires the use of short-circuit (and then, or else) forms for all composite boolean operations. @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1db} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1da} @subsection No_Dispatch @@ -12645,7 +12617,7 @@ composite boolean operations. occurrences of @code{T'Class}, for any (tagged) subtype @code{T}. @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1dc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1db} @subsection No_Dispatching_Calls @@ -12706,7 +12678,7 @@ end Example; @end example @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1dd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1dc} @subsection No_Dynamic_Attachment @@ -12725,7 +12697,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1de} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1dd} @subsection No_Dynamic_Priorities @@ -12734,7 +12706,7 @@ warnings on obsolescent features are activated). [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities. @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1df} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1de} @subsection No_Entry_Calls_In_Elaboration_Code @@ -12746,7 +12718,7 @@ restriction, the compiler can assume that no code past an accept statement in a task can be executed at elaboration time. @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1e0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1df} @subsection No_Enumeration_Maps @@ -12757,7 +12729,7 @@ enumeration maps are used (that is Image and Value attributes applied to enumeration types). @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e0} @subsection No_Exception_Handlers @@ -12782,7 +12754,7 @@ statement generated by the compiler). The Line parameter when nonzero represents the line number in the source program where the raise occurs. @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e1} @subsection No_Exception_Propagation @@ -12799,7 +12771,7 @@ the package GNAT.Current_Exception is not permitted, and reraise statements (raise with no operand) are not permitted. @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e2} @subsection No_Exception_Registration @@ -12813,7 +12785,7 @@ code is simplified by omitting the otherwise-required global registration of exceptions when they are declared. @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e3} @subsection No_Exceptions @@ -12824,7 +12796,7 @@ raise statements and no exception handlers and also suppresses the generation of language-defined run-time checks. @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e4} @subsection No_Finalization @@ -12865,7 +12837,7 @@ object or a nested component, either declared on the stack or on the heap. The deallocation of a controlled object no longer finalizes its contents. @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e5} @subsection No_Fixed_Point @@ -12875,7 +12847,7 @@ deallocation of a controlled object no longer finalizes its contents. occurrences of fixed point types and operations. @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e6} @subsection No_Floating_Point @@ -12885,7 +12857,7 @@ occurrences of fixed point types and operations. occurrences of floating point types and operations. @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1e8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1e7} @subsection No_Implicit_Conditionals @@ -12901,7 +12873,7 @@ normal manner. Constructs generating implicit conditionals include comparisons of composite objects and the Max/Min attributes. @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1e9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1e8} @subsection No_Implicit_Dynamic_Code @@ -12931,7 +12903,7 @@ foreign-language convention; primitive operations of nested tagged types. @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1ea} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1e9} @subsection No_Implicit_Heap_Allocations @@ -12940,7 +12912,7 @@ types. [RM D.7] No constructs are allowed to cause implicit heap allocation. @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1eb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ea} @subsection No_Implicit_Protected_Object_Allocations @@ -12950,7 +12922,7 @@ types. protected object. @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1ec} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1eb} @subsection No_Implicit_Task_Allocations @@ -12959,7 +12931,7 @@ protected object. [GNAT] No constructs are allowed to cause implicit heap allocation of a task. @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ed} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ec} @subsection No_Initialize_Scalars @@ -12971,7 +12943,7 @@ code, and in particular eliminates dummy null initialization routines that are otherwise generated for some record and array types. @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1ee} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1ed} @subsection No_IO @@ -12982,7 +12954,7 @@ dependences on any of the library units Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO. @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1ef} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1ee} @subsection No_Local_Allocators @@ -12993,7 +12965,7 @@ occurrences of an allocator in subprograms, generic subprograms, tasks, and entry bodies. @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1f0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1ef} @subsection No_Local_Protected_Objects @@ -13003,7 +12975,7 @@ and entry bodies. only declared at the library level. @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f0} @subsection No_Local_Tagged_Types @@ -13013,7 +12985,7 @@ only declared at the library level. declared at the library level. @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f1} @subsection No_Local_Timing_Events @@ -13023,7 +12995,7 @@ declared at the library level. declared at the library level. @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f2} @subsection No_Long_Long_Integers @@ -13035,7 +13007,7 @@ implicit base type is Long_Long_Integer, and modular types whose size exceeds Long_Integer’Size. @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f3} @subsection No_Multiple_Elaboration @@ -13051,7 +13023,7 @@ possible, including non-Ada main programs and Stand Alone libraries, are not permitted and will be diagnosed by the binder. @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f4} @subsection No_Nested_Finalization @@ -13060,7 +13032,7 @@ permitted and will be diagnosed by the binder. [RM D.7] All objects requiring finalization are declared at the library level. @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f5} @subsection No_Protected_Type_Allocators @@ -13070,7 +13042,7 @@ permitted and will be diagnosed by the binder. expressions that attempt to allocate protected objects. @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f6} @subsection No_Protected_Types @@ -13080,7 +13052,7 @@ expressions that attempt to allocate protected objects. declarations of protected types or protected objects. @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1f8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1f7} @subsection No_Recursion @@ -13090,7 +13062,7 @@ declarations of protected types or protected objects. part of its execution. @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1f9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1f8} @subsection No_Reentrancy @@ -13100,7 +13072,7 @@ part of its execution. two tasks at the same time. @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1fa} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1f9} @subsection No_Relative_Delay @@ -13111,7 +13083,7 @@ relative statements and prevents expressions such as @code{delay 1.23;} from appearing in source code. @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fa} @subsection No_Requeue_Statements @@ -13129,7 +13101,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on oNobsolescent features are activated). @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fb} @subsection No_Secondary_Stack @@ -13142,7 +13114,7 @@ stack is used to implement functions returning unconstrained objects secondary stacks for tasks (excluding the environment task) at run time. @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1fd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1fc} @subsection No_Select_Statements @@ -13152,7 +13124,7 @@ secondary stacks for tasks (excluding the environment task) at run time. kind are permitted, that is the keyword @code{select} may not appear. @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1fe} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1fd} @subsection No_Specific_Termination_Handlers @@ -13162,7 +13134,7 @@ kind are permitted, that is the keyword @code{select} may not appear. or to Ada.Task_Termination.Specific_Handler. @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1ff} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1fe} @subsection No_Specification_of_Aspect @@ -13173,7 +13145,7 @@ specification, attribute definition clause, or pragma is given for a given aspect. @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{200} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1ff} @subsection No_Standard_Allocators_After_Elaboration @@ -13185,7 +13157,7 @@ library items of the partition has completed. Otherwise, Storage_Error is raised. @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{201} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{200} @subsection No_Standard_Storage_Pools @@ -13197,7 +13169,7 @@ have an explicit Storage_Pool attribute defined specifying a user-defined storage pool. @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{202} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{201} @subsection No_Stream_Optimizations @@ -13210,7 +13182,7 @@ due to their superior performance. When this restriction is in effect, the compiler performs all IO operations on a per-character basis. @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{203} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{202} @subsection No_Streams @@ -13237,7 +13209,7 @@ configuration pragmas to avoid exposing entity names at binary level for the entire partition. @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{204} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{203} @subsection No_Tagged_Type_Registration @@ -13252,7 +13224,7 @@ are declared. This restriction may be necessary in order to also apply the No_Elaboration_Code restriction. @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{205} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{204} @subsection No_Task_Allocators @@ -13262,7 +13234,7 @@ the No_Elaboration_Code restriction. or types containing task subcomponents. @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{206} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{205} @subsection No_Task_At_Interrupt_Priority @@ -13274,7 +13246,7 @@ a consequence, the tasks are always created with a priority below that an interrupt priority. @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{207} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{206} @subsection No_Task_Attributes_Package @@ -13291,7 +13263,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{208} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{207} @subsection No_Task_Hierarchy @@ -13301,7 +13273,7 @@ warnings on obsolescent features are activated). directly on the environment task of the partition. @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{209} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{208} @subsection No_Task_Termination @@ -13310,7 +13282,7 @@ directly on the environment task of the partition. [RM D.7] Tasks that terminate are erroneous. @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{20a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{209} @subsection No_Tasking @@ -13323,7 +13295,7 @@ and cause an error message to be output either by the compiler or binder. @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20a} @subsection No_Terminate_Alternatives @@ -13332,7 +13304,7 @@ binder. [RM D.7] There are no selective accepts with terminate alternatives. @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20b} @subsection No_Unchecked_Access @@ -13342,7 +13314,7 @@ binder. occurrences of the Unchecked_Access attribute. @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20c} @subsection No_Unchecked_Conversion @@ -13352,7 +13324,7 @@ occurrences of the Unchecked_Access attribute. dependences on the predefined generic function Unchecked_Conversion. @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{20e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{20d} @subsection No_Unchecked_Deallocation @@ -13362,7 +13334,7 @@ dependences on the predefined generic function Unchecked_Conversion. dependences on the predefined generic procedure Unchecked_Deallocation. @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{20f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{20e} @subsection No_Use_Of_Attribute @@ -13372,7 +13344,7 @@ dependences on the predefined generic procedure Unchecked_Deallocation. earlier versions of Ada. @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{210} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{20f} @subsection No_Use_Of_Entity @@ -13392,7 +13364,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line @end example @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{211} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{210} @subsection No_Use_Of_Pragma @@ -13402,7 +13374,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line earlier versions of Ada. @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{212} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{211} @subsection Pure_Barriers @@ -13453,7 +13425,7 @@ but still ensures absence of side effects, exceptions, and recursion during the evaluation of the barriers. @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{213} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{212} @subsection Simple_Barriers @@ -13472,7 +13444,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{214} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{213} @subsection Static_Priorities @@ -13483,7 +13455,7 @@ are static, and that there are no dependences on the package @code{Ada.Dynamic_Priorities}. @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{215} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{214} @subsection Static_Storage_Size @@ -13493,7 +13465,7 @@ are static, and that there are no dependences on the package in a Storage_Size pragma or attribute definition clause is static. @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{216}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{217} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{215}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{216} @section Program Unit Level Restrictions @@ -13524,7 +13496,7 @@ other compilation units in the partition. @end menu @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{218} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{217} @subsection No_Elaboration_Code @@ -13580,7 +13552,7 @@ associated with the unit. This counter is typically used to check for access before elaboration and to control multiple elaboration attempts. @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{219} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{218} @subsection No_Dynamic_Accessibility_Checks @@ -13629,7 +13601,7 @@ In all other cases, the level of T is as defined by the existing rules of Ada. @end itemize @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{21a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{219} @subsection No_Dynamic_Sized_Objects @@ -13647,7 +13619,7 @@ access discriminants. It is often a good idea to combine this restriction with No_Secondary_Stack. @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21a} @subsection No_Entry_Queue @@ -13660,7 +13632,7 @@ checked at compile time. A program execution is erroneous if an attempt is made to queue a second task on such an entry. @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21b} @subsection No_Implementation_Aspect_Specifications @@ -13671,7 +13643,7 @@ GNAT-defined aspects are present. With this restriction, the only aspects that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21c} @subsection No_Implementation_Attributes @@ -13683,7 +13655,7 @@ attributes that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{21e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{21d} @subsection No_Implementation_Identifiers @@ -13694,7 +13666,7 @@ implementation-defined identifiers (marked with pragma Implementation_Defined) occur within language-defined packages. @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{21f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{21e} @subsection No_Implementation_Pragmas @@ -13705,7 +13677,7 @@ GNAT-defined pragmas are present. With this restriction, the only pragmas that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{220} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{21f} @subsection No_Implementation_Restrictions @@ -13717,7 +13689,7 @@ are present. With this restriction, the only other restriction identifiers that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{221} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{220} @subsection No_Implementation_Units @@ -13728,7 +13700,7 @@ mention in the context clause of any implementation-defined descendants of packages Ada, Interfaces, or System. @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{222} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{221} @subsection No_Implicit_Aliasing @@ -13743,7 +13715,7 @@ to be aliased, and in such cases, it can always be replaced by the standard attribute Unchecked_Access which is preferable. @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{223} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{222} @subsection No_Implicit_Loops @@ -13760,7 +13732,7 @@ arrays larger than about 5000 scalar components. Note that if this restriction is set in the spec of a package, it will not apply to its body. @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{224} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{223} @subsection No_Obsolescent_Features @@ -13770,7 +13742,7 @@ is set in the spec of a package, it will not apply to its body. features are used, as defined in Annex J of the Ada Reference Manual. @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{225} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{224} @subsection No_Wide_Characters @@ -13784,7 +13756,7 @@ appear in the program (that is literals representing characters not in type @code{Character}). @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{226} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{225} @subsection Static_Dispatch_Tables @@ -13794,7 +13766,7 @@ type @code{Character}). associated with dispatch tables can be placed in read-only memory. @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{227} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{226} @subsection SPARK_05 @@ -13817,7 +13789,7 @@ gnatprove -P project.gpr --mode=check_all @end example @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top -@anchor{gnat_rm/implementation_advice doc}@anchor{228}@anchor{gnat_rm/implementation_advice id1}@anchor{229}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} +@anchor{gnat_rm/implementation_advice doc}@anchor{227}@anchor{gnat_rm/implementation_advice id1}@anchor{228}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} @chapter Implementation Advice @@ -13915,7 +13887,7 @@ case the text describes what GNAT does and why. @end menu @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{22a} +@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{229} @section RM 1.1.3(20): Error Detection @@ -13932,7 +13904,7 @@ or diagnosed at compile time. @geindex Child Units @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22b} +@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22a} @section RM 1.1.3(31): Child Units @@ -13948,7 +13920,7 @@ Followed. @geindex Bounded errors @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22c} +@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22b} @section RM 1.1.5(12): Bounded Errors @@ -13965,7 +13937,7 @@ runtime. @geindex Pragmas @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice -@anchor{gnat_rm/implementation_advice id2}@anchor{22d}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{22e} +@anchor{gnat_rm/implementation_advice id2}@anchor{22c}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{22d} @section RM 2.8(16): Pragmas @@ -14078,7 +14050,7 @@ that this advice not be followed. For details see @ref{7,,Implementation Defined Pragmas}. @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{22f} +@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{22e} @section RM 2.8(17-19): Pragmas @@ -14099,14 +14071,14 @@ replacing @code{library_items}.” @end itemize @end quotation -See @ref{22e,,RM 2.8(16); Pragmas}. +See @ref{22d,,RM 2.8(16); Pragmas}. @geindex Character Sets @geindex Alternative Character Sets @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{230} +@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{22f} @section RM 3.5.2(5): Alternative Character Sets @@ -14134,7 +14106,7 @@ there is no such restriction. @geindex Integer types @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{231} +@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{230} @section RM 3.5.4(28): Integer Types @@ -14153,7 +14125,7 @@ are supported for convenient interface to C, and so that all hardware types of the machine are easily available. @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{232} +@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{231} @section RM 3.5.4(29): Integer Types @@ -14169,7 +14141,7 @@ Followed. @geindex Enumeration values @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{233} +@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{232} @section RM 3.5.5(8): Enumeration Values @@ -14189,7 +14161,7 @@ Followed. @geindex Float types @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{234} +@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{233} @section RM 3.5.7(17): Float Types @@ -14219,7 +14191,7 @@ is a software rather than a hardware format. @geindex multidimensional @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{235} +@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{234} @section RM 3.6.2(11): Multidimensional Arrays @@ -14237,7 +14209,7 @@ Followed. @geindex Duration'Small @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{236} +@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{235} @section RM 9.6(30-31): Duration’Small @@ -14258,7 +14230,7 @@ it need not be the same time base as used for @code{Calendar.Clock}.” Followed. @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{237} +@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{236} @section RM 10.2.1(12): Consistent Representation @@ -14280,7 +14252,7 @@ advice without severely impacting efficiency of execution. @geindex Exception information @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{238} +@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{237} @section RM 11.4.1(19): Exception Information @@ -14311,7 +14283,7 @@ Pragma @code{Discard_Names}. @geindex suppression of @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{239} +@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{238} @section RM 11.5(28): Suppression of Checks @@ -14326,7 +14298,7 @@ Followed. @geindex Representation clauses @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{23a} +@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{239} @section RM 13.1 (21-24): Representation Clauses @@ -14375,7 +14347,7 @@ Followed. @geindex Packed types @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23b} +@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23a} @section RM 13.2(6-8): Packed Types @@ -14406,7 +14378,7 @@ subcomponent of the packed type. @geindex Address clauses @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23c} +@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23b} @section RM 13.3(14-19): Address Clauses @@ -14459,7 +14431,7 @@ Followed. @geindex Alignment clauses @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23d} +@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23c} @section RM 13.3(29-35): Alignment Clauses @@ -14516,7 +14488,7 @@ Followed. @geindex Size clauses @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{23e} +@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{23d} @section RM 13.3(42-43): Size Clauses @@ -14534,7 +14506,7 @@ object’s @code{Alignment} (if the @code{Alignment} is nonzero).” Followed. @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{23f} +@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{23e} @section RM 13.3(50-56): Size Clauses @@ -14585,7 +14557,7 @@ Followed. @geindex Component_Size clauses @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{240} +@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{23f} @section RM 13.3(71-73): Component Size Clauses @@ -14619,7 +14591,7 @@ Followed. @geindex enumeration @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{241} +@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{240} @section RM 13.4(9-10): Enumeration Representation Clauses @@ -14641,7 +14613,7 @@ Followed. @geindex records @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{242} +@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{241} @section RM 13.5.1(17-22): Record Representation Clauses @@ -14701,7 +14673,7 @@ and all mentioned features are implemented. @geindex Storage place attributes @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{243} +@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{242} @section RM 13.5.2(5): Storage Place Attributes @@ -14721,7 +14693,7 @@ Followed. There are no such components in GNAT. @geindex Bit ordering @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{244} +@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{243} @section RM 13.5.3(7-8): Bit Ordering @@ -14741,7 +14713,7 @@ Thus non-default bit ordering is not supported. @geindex as private type @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{245} +@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{244} @section RM 13.7(37): Address as Private @@ -14759,7 +14731,7 @@ Followed. @geindex operations of @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{246} +@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{245} @section RM 13.7.1(16): Address Operations @@ -14777,7 +14749,7 @@ operation raises @code{Program_Error}, since all operations make sense. @geindex Unchecked conversion @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{247} +@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{246} @section RM 13.9(14-17): Unchecked Conversion @@ -14821,7 +14793,7 @@ Followed. @geindex implicit @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{248} +@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{247} @section RM 13.11(23-25): Implicit Heap Usage @@ -14872,7 +14844,7 @@ Followed. @geindex Unchecked deallocation @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{249} +@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{248} @section RM 13.11.2(17): Unchecked Deallocation @@ -14887,7 +14859,7 @@ Followed. @geindex Stream oriented attributes @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{24a} +@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{249} @section RM 13.13.2(1.6): Stream Oriented Attributes @@ -14918,7 +14890,7 @@ scalar types. This XDR alternative can be enabled via the binder switch -xdr. @geindex Stream oriented attributes @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24b} +@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24a} @section RM A.1(52): Names of Predefined Numeric Types @@ -14936,7 +14908,7 @@ Followed. @geindex Ada.Characters.Handling @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24c} +@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24b} @section RM A.3.2(49): @code{Ada.Characters.Handling} @@ -14953,7 +14925,7 @@ Followed. GNAT provides no such localized definitions. @geindex Bounded-length strings @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24d} +@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24c} @section RM A.4.4(106): Bounded-Length String Handling @@ -14968,7 +14940,7 @@ Followed. No implicit pointers or dynamic allocation are used. @geindex Random number generation @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{24e} +@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{24d} @section RM A.5.2(46-47): Random Number Generation @@ -14997,7 +14969,7 @@ condition here to hold true. @geindex Get_Immediate @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{24f} +@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{24e} @section RM A.10.7(23): @code{Get_Immediate} @@ -15021,7 +14993,7 @@ this functionality. @geindex Containers @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{250} +@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{24f} @section RM A.18: @code{Containers} @@ -15042,7 +15014,7 @@ follow the implementation advice. @geindex Export @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{251} +@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{250} @section RM B.1(39-41): Pragma @code{Export} @@ -15090,7 +15062,7 @@ Followed. @geindex Interfaces @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{252} +@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{251} @section RM B.2(12-13): Package @code{Interfaces} @@ -15120,7 +15092,7 @@ Followed. GNAT provides all the packages described in this section. @geindex interfacing with @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{253} +@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{252} @section RM B.3(63-71): Interfacing with C @@ -15208,7 +15180,7 @@ Followed. @geindex interfacing with @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{254} +@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{253} @section RM B.4(95-98): Interfacing with COBOL @@ -15249,7 +15221,7 @@ Followed. @geindex interfacing with @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{255} +@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{254} @section RM B.5(22-26): Interfacing with Fortran @@ -15300,7 +15272,7 @@ Followed. @geindex Machine operations @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{256} +@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{255} @section RM C.1(3-5): Access to Machine Operations @@ -15335,7 +15307,7 @@ object that is specified as exported.” Followed. @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{257} +@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{256} @section RM C.1(10-16): Access to Machine Operations @@ -15396,7 +15368,7 @@ Followed on any target supporting such operations. @geindex Interrupt support @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{258} +@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{257} @section RM C.3(28): Interrupt Support @@ -15414,7 +15386,7 @@ of interrupt blocking. @geindex Protected procedure handlers @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{259} +@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{258} @section RM C.3.1(20-21): Protected Procedure Handlers @@ -15440,7 +15412,7 @@ Followed. Compile time warnings are given when possible. @geindex Interrupts @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{25a} +@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{259} @section RM C.3.2(25): Package @code{Interrupts} @@ -15458,7 +15430,7 @@ Followed. @geindex Pre-elaboration requirements @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25b} +@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25a} @section RM C.4(14): Pre-elaboration Requirements @@ -15474,7 +15446,7 @@ Followed. Executable code is generated in some cases, e.g., loops to initialize large arrays. @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25c} +@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25b} @section RM C.5(8): Pragma @code{Discard_Names} @@ -15492,7 +15464,7 @@ Followed. @geindex Task_Attributes @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25d} +@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25c} @section RM C.7.2(30): The Package Task_Attributes @@ -15513,7 +15485,7 @@ Not followed. This implementation is not targeted to such a domain. @geindex Locking Policies @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{25e} +@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{25d} @section RM D.3(17): Locking Policies @@ -15530,7 +15502,7 @@ whose names (@code{Inheritance_Locking} and @geindex Entry queuing policies @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{25f} +@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{25e} @section RM D.4(16): Entry Queuing Policies @@ -15545,7 +15517,7 @@ Followed. No such implementation-defined queuing policies exist. @geindex Preemptive abort @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{260} +@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{25f} @section RM D.6(9-10): Preemptive Abort @@ -15571,7 +15543,7 @@ Followed. @geindex Tasking restrictions @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{261} +@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{260} @section RM D.7(21): Tasking Restrictions @@ -15590,7 +15562,7 @@ pragma @code{Profile (Restricted)} for more details. @geindex monotonic @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{262} +@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{261} @section RM D.8(47-49): Monotonic Time @@ -15625,7 +15597,7 @@ Followed. @geindex PCS @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{263} +@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{262} @section RM E.5(28-29): Partition Communication Subsystem @@ -15653,7 +15625,7 @@ GNAT. @geindex COBOL support @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{264} +@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{263} @section RM F(7): COBOL Support @@ -15673,7 +15645,7 @@ Followed. @geindex Decimal radix support @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{265} +@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{264} @section RM F.1(2): Decimal Radix Support @@ -15689,7 +15661,7 @@ representations. @geindex Numerics @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{266} +@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{265} @section RM G: Numerics @@ -15709,7 +15681,7 @@ Followed. @geindex Complex types @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{267} +@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{266} @section RM G.1.1(56-58): Complex Types @@ -15771,7 +15743,7 @@ Followed. @geindex Complex elementary functions @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{268} +@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{267} @section RM G.1.2(49): Complex Elementary Functions @@ -15793,7 +15765,7 @@ Followed. @geindex Accuracy requirements @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{269} +@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{268} @section RM G.2.4(19): Accuracy Requirements @@ -15817,7 +15789,7 @@ Followed. @geindex complex arithmetic @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{26a} +@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{269} @section RM G.2.6(15): Complex Arithmetic Accuracy @@ -15835,7 +15807,7 @@ Followed. @geindex Sequential elaboration policy @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26b} +@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26a} @section RM H.6(15/2): Pragma Partition_Elaboration_Policy @@ -15850,7 +15822,7 @@ immediately terminated.” Not followed. @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top -@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26c}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26d}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} +@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26b}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26c}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} @chapter Implementation Defined Characteristics @@ -17145,7 +17117,7 @@ When the @code{Pattern} parameter is not the null string, it is interpreted according to the syntax of regular expressions as defined in the @code{GNAT.Regexp} package. -See @ref{26e,,GNAT.Regexp (g-regexp.ads)}. +See @ref{26d,,GNAT.Regexp (g-regexp.ads)}. @itemize * @@ -18243,7 +18215,7 @@ Information on those subjects is not yet available. Execution is erroneous in that case. @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top -@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} +@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} @chapter Intrinsic Subprograms @@ -18281,7 +18253,7 @@ Ada standard does not require Ada compilers to implement this feature. @end menu @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{272} +@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{271} @section Intrinsic Operators @@ -18312,7 +18284,7 @@ It is also possible to specify such operators for private types, if the full views are appropriate arithmetic types. @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{273}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{274} +@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{273} @section Compilation_ISO_Date @@ -18326,7 +18298,7 @@ application program should simply call the function the current compilation (in local time format YYYY-MM-DD). @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{275}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{276} +@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{275} @section Compilation_Date @@ -18336,7 +18308,7 @@ Same as Compilation_ISO_Date, except the string is in the form MMM DD YYYY. @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{277}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{278} +@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{276}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{277} @section Compilation_Time @@ -18350,7 +18322,7 @@ application program should simply call the function the current compilation (in local time format HH:MM:SS). @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{279}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{27a} +@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{278}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{279} @section Enclosing_Entity @@ -18364,7 +18336,7 @@ application program should simply call the function the current subprogram, package, task, entry, or protected subprogram. @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27b}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27c} +@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27a}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27b} @section Exception_Information @@ -18378,7 +18350,7 @@ so an application program should simply call the function the exception information associated with the current exception. @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27d}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{27e} +@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{27d} @section Exception_Message @@ -18392,7 +18364,7 @@ so an application program should simply call the function the message associated with the current exception. @node Exception_Name,File,Exception_Message,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{27f}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{280} +@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{27f} @section Exception_Name @@ -18406,7 +18378,7 @@ so an application program should simply call the function the name of the current exception. @node File,Line,Exception_Name,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms file}@anchor{281}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{282} +@anchor{gnat_rm/intrinsic_subprograms file}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{281} @section File @@ -18420,7 +18392,7 @@ application program should simply call the function file. @node Line,Shifts and Rotates,File,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{283}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{284} +@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{283} @section Line @@ -18434,7 +18406,7 @@ application program should simply call the function source line. @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{285}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{286} +@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{285} @section Shifts and Rotates @@ -18477,7 +18449,7 @@ corresponding operator for modular type. In particular, shifting a negative number may change its sign bit to positive. @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{287}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{288} +@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{287} @section Source_Location @@ -18491,7 +18463,7 @@ application program should simply call the function source file location. @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top -@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} +@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} @chapter Representation Clauses and Pragmas @@ -18537,7 +18509,7 @@ and this section describes the additional capabilities provided. @end menu @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28c} +@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28b} @section Alignment Clauses @@ -18668,7 +18640,7 @@ assumption is non-portable, and other compilers may choose different alignments for the subtype @code{RS}. @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28d}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{28e} +@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{28d} @section Size Clauses @@ -18745,7 +18717,7 @@ if it is known that a Size value can be accommodated in an object of type Integer. @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{28f}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{290} +@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{28f} @section Storage_Size Clauses @@ -18818,7 +18790,7 @@ Of course in practice, there will not be any explicit allocators in the case of such an access declaration. @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{291}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{292} +@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{291} @section Size of Variant Record Objects @@ -18928,7 +18900,7 @@ the maximum size, regardless of the current variant value, the variant value. @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{293}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{294} +@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{293} @section Biased Representation @@ -18966,7 +18938,7 @@ biased representation can be used for all discrete types except for enumeration types for which a representation clause is given. @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{296} +@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{295} @section Value_Size and Object_Size Clauses @@ -19282,7 +19254,7 @@ definition clause forces biased representation. This warning can be turned off using @code{-gnatw.B}. @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{298} +@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{297} @section Component_Size Clauses @@ -19330,7 +19302,7 @@ and a pragma Pack for the same array type. if such duplicate clauses are given, the pragma Pack will be ignored. @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{29a} +@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{299} @section Bit_Order Clauses @@ -19436,7 +19408,7 @@ if desired. The following section contains additional details regarding the issue of byte ordering. @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29c} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29b} @section Effect of Bit_Order on Byte Ordering @@ -19693,7 +19665,7 @@ to set the boolean constant @code{Master_Byte_First} in an appropriate manner. @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29d}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{29e} +@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{29d} @section Pragma Pack for Arrays @@ -19813,7 +19785,7 @@ Here 31-bit packing is achieved as required, and no warning is generated, since in this case the programmer intention is clear. @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{29f}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2a0} +@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{29f} @section Pragma Pack for Records @@ -19897,7 +19869,7 @@ array that is longer than 64 bits, so it is itself non-packable on boundary, and takes an integral number of bytes, i.e., 72 bits. @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a1}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a2} +@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a1} @section Record Representation Clauses @@ -19976,7 +19948,7 @@ end record; @end example @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a3}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a4} +@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a3} @section Handling of Records with Holes @@ -20052,7 +20024,7 @@ for Hrec'Size use 64; @end example @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a5}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a6} +@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a5} @section Enumeration Clauses @@ -20095,7 +20067,7 @@ the overhead of converting representation values to the corresponding positional values, (i.e., the value delivered by the @code{Pos} attribute). @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a7}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2a8} +@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2a7} @section Address Clauses @@ -20435,7 +20407,7 @@ then the program compiles without the warning and when run will generate the output @code{X was not clobbered}. @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2a9}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2aa} +@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2a9} @section Use of Address Clauses for Memory-Mapped I/O @@ -20493,7 +20465,7 @@ provides the pragma @code{Volatile_Full_Access} which can be used in lieu of pragma @code{Atomic} and will give the additional guarantee. @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2ab}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ac} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ab} @section Effect of Convention on Representation @@ -20571,7 +20543,7 @@ when one of these values is read, any nonzero value is treated as True. @end itemize @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2ad}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2ae} +@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2ad} @section Conventions and Anonymous Access Types @@ -20647,7 +20619,7 @@ package ConvComp is @end example @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2af}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2b0} +@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2af} @section Determining the Representations chosen by GNAT @@ -20799,7 +20771,7 @@ generated by the compiler into the original source to fix and guarantee the actual representation to be used. @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top -@anchor{gnat_rm/standard_library_routines doc}@anchor{2b1}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b2}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} +@anchor{gnat_rm/standard_library_routines doc}@anchor{2b0}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b1}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} @chapter Standard Library Routines @@ -21623,7 +21595,7 @@ For packages in Interfaces and System, all the RM defined packages are available in GNAT, see the Ada 2012 RM for full details. @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top -@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} +@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} @chapter The Implementation of Standard I/O @@ -21675,7 +21647,7 @@ these additional facilities are also described in this chapter. @end menu @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b5} @section Standard I/O Packages @@ -21746,7 +21718,7 @@ flush the common I/O streams and in particular Standard_Output before elaborating the Ada code. @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2b8} +@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2b7} @section FORM Strings @@ -21772,7 +21744,7 @@ unrecognized keyword appears in a form string, it is silently ignored and not considered invalid. @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2ba} +@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2b9} @section Direct_IO @@ -21791,7 +21763,7 @@ There is no limit on the size of Direct_IO files, they are expanded as necessary to accommodate whatever records are written to the file. @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2bc} +@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2bb} @section Sequential_IO @@ -21838,7 +21810,7 @@ using Stream_IO, and this is the preferred mechanism. In particular, the above program fragment rewritten to use Stream_IO will work correctly. @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2be} +@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2bd} @section Text_IO @@ -21921,7 +21893,7 @@ the file. @end menu @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2c0} +@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2bf} @subsection Stream Pointer Positioning @@ -21957,7 +21929,7 @@ between two Ada files, then the difference may be observable in some situations. @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c2} +@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c1} @subsection Reading and Writing Non-Regular Files @@ -22008,7 +21980,7 @@ to read data past that end of file indication, until another end of file indication is entered. @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c4} +@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c3} @subsection Get_Immediate @@ -22026,7 +21998,7 @@ possible), it is undefined whether the FF character will be treated as a page mark. @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c5} @subsection Treating Text_IO Files as Streams @@ -22042,7 +22014,7 @@ skipped and the effect is similar to that described above for @code{Get_Immediate}. @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2c8} +@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2c7} @subsection Text_IO Extensions @@ -22070,7 +22042,7 @@ the string is to be read. @end itemize @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2ca} +@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2c9} @subsection Text_IO Facilities for Unbounded Strings @@ -22118,7 +22090,7 @@ files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings. @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2cc} +@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2cb} @section Wide_Text_IO @@ -22365,12 +22337,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2ce} +@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2cd} @subsection Stream Pointer Positioning @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2be,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2bd,,Text_IO}). There is one additional case: If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22389,7 +22361,7 @@ to a normal program using @code{Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2d0} +@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2cf} @subsection Reading and Writing Non-Regular Files @@ -22400,7 +22372,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d2} +@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d1} @section Wide_Wide_Text_IO @@ -22569,12 +22541,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d3} @subsection Stream Pointer Positioning @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2be,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2bd,,Text_IO}). There is one additional case: If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22593,7 +22565,7 @@ to a normal program using @code{Wide_Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d5}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d5} @subsection Reading and Writing Non-Regular Files @@ -22604,7 +22576,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d7}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2d8} +@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2d7} @section Stream_IO @@ -22626,7 +22598,7 @@ manner described for stream attributes. @end itemize @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2d9}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2da} +@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2d9} @section Text Translation @@ -22660,7 +22632,7 @@ mode. (corresponds to_O_U16TEXT). @end itemize @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2db}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2dc} +@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2db} @section Shared Files @@ -22723,7 +22695,7 @@ heterogeneous input-output. Although this approach will work in GNAT if for this purpose (using the stream attributes) @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2dd}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2de} +@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2dd} @section Filenames encoding @@ -22763,7 +22735,7 @@ platform. On the other Operating Systems the run-time is supporting UTF-8 natively. @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2df}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2e0} +@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2df} @section File content encoding @@ -22796,7 +22768,7 @@ Unicode 8-bit encoding This encoding is only supported on the Windows platform. @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e1}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e2} +@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e1} @section Open Modes @@ -22899,7 +22871,7 @@ subsequently requires switching from reading to writing or vice-versa, then the file is reopened in @code{r+} mode to permit the required operation. @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e3}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e4} +@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e3} @section Operations on C Streams @@ -23059,7 +23031,7 @@ end Interfaces.C_Streams; @end example @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e5}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e6} +@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e5} @section Interfacing to C Streams @@ -23152,7 +23124,7 @@ imported from a C program, allowing an Ada file to operate on an existing C file. @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top -@anchor{gnat_rm/the_gnat_library doc}@anchor{2e7}@anchor{gnat_rm/the_gnat_library id1}@anchor{2e8}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} +@anchor{gnat_rm/the_gnat_library doc}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id1}@anchor{2e7}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} @chapter The GNAT Library @@ -23337,7 +23309,7 @@ of GNAT, and will generate a warning message. @end menu @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2e9}@anchor{gnat_rm/the_gnat_library id2}@anchor{2ea} +@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id2}@anchor{2e9} @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads}) @@ -23354,7 +23326,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2eb}@anchor{gnat_rm/the_gnat_library id3}@anchor{2ec} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id3}@anchor{2eb} @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads}) @@ -23371,7 +23343,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ed}@anchor{gnat_rm/the_gnat_library id4}@anchor{2ee} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id4}@anchor{2ed} @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads}) @@ -23388,7 +23360,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2ef}@anchor{gnat_rm/the_gnat_library id5}@anchor{2f0} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id5}@anchor{2ef} @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads}) @@ -23405,7 +23377,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f1}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f2} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f1} @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads}) @@ -23422,7 +23394,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f4} +@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f3} @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads}) @@ -23434,7 +23406,7 @@ This child of @code{Ada.Containers} defines a modified version of Indefinite_Holders that avoids heap allocation. @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f6} +@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f5} @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads}) @@ -23447,7 +23419,7 @@ provides a mechanism for obtaining environment values on systems where this concept makes sense. @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f7}@anchor{gnat_rm/the_gnat_library id9}@anchor{2f8} +@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id9}@anchor{2f7} @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads}) @@ -23465,7 +23437,7 @@ to further calls to the subprograms in @code{Ada.Command_Line}. These calls will not see the removed argument. @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f9}@anchor{gnat_rm/the_gnat_library id10}@anchor{2fa} +@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id10}@anchor{2f9} @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads}) @@ -23485,7 +23457,7 @@ Using a response file allow passing a set of arguments to an executable longer than the maximum allowed by the system on the command line. @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fb}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fc} +@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fb} @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads}) @@ -23500,7 +23472,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fd}@anchor{gnat_rm/the_gnat_library id12}@anchor{2fe} +@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id12}@anchor{2fd} @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads}) @@ -23514,7 +23486,7 @@ exception occurrence (@code{Null_Occurrence}) without raising an exception. @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2ff}@anchor{gnat_rm/the_gnat_library id13}@anchor{300} +@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ff} @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads}) @@ -23528,7 +23500,7 @@ exceptions (hence the name last chance), and perform clean ups before terminating the program. Note that this subprogram never returns. @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id14}@anchor{302} +@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id14}@anchor{301} @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads}) @@ -23541,7 +23513,7 @@ give a traceback array of addresses based on an exception occurrence. @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id15}@anchor{304} +@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id15}@anchor{303} @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads}) @@ -23556,7 +23528,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{305}@anchor{gnat_rm/the_gnat_library id16}@anchor{306} +@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id16}@anchor{305} @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads}) @@ -23571,7 +23543,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id17}@anchor{308} +@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id17}@anchor{307} @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads}) @@ -23588,7 +23560,7 @@ strings, avoiding the necessity for an intermediate operation with ordinary strings. @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{309}@anchor{gnat_rm/the_gnat_library id18}@anchor{30a} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id18}@anchor{309} @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads}) @@ -23605,7 +23577,7 @@ wide strings, avoiding the necessity for an intermediate operation with ordinary wide strings. @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30b}@anchor{gnat_rm/the_gnat_library id19}@anchor{30c} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id19}@anchor{30b} @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads}) @@ -23622,7 +23594,7 @@ wide wide strings, avoiding the necessity for an intermediate operation with ordinary wide wide strings. @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id20}@anchor{30e} +@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id20}@anchor{30d} @section @code{Ada.Task_Initialization} (@code{a-tasini.ads}) @@ -23634,7 +23606,7 @@ parameterless procedures. Note that such a handler is only invoked for those tasks activated after the handler is set. @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id21}@anchor{310} +@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id21}@anchor{30f} @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads}) @@ -23649,7 +23621,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{311}@anchor{gnat_rm/the_gnat_library id22}@anchor{312} +@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id22}@anchor{311} @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads}) @@ -23664,7 +23636,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id23}@anchor{314} +@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id23}@anchor{313} @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads}) @@ -23677,7 +23649,7 @@ This package provides subprograms that allow categorization of Wide_Character values according to Unicode categories. @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id24}@anchor{316} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id24}@anchor{315} @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads}) @@ -23692,7 +23664,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{317}@anchor{gnat_rm/the_gnat_library id25}@anchor{318} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id25}@anchor{317} @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads}) @@ -23707,7 +23679,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{319}@anchor{gnat_rm/the_gnat_library id26}@anchor{31a} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id26}@anchor{319} @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads}) @@ -23720,7 +23692,7 @@ This package provides subprograms that allow categorization of Wide_Wide_Character values according to Unicode categories. @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31b}@anchor{gnat_rm/the_gnat_library id27}@anchor{31c} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id27}@anchor{31b} @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads}) @@ -23735,7 +23707,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id28}@anchor{31e} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id28}@anchor{31d} @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads}) @@ -23750,7 +23722,7 @@ change during execution (for example a standard input file may be redefined to be interactive). @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id29}@anchor{320} +@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id29}@anchor{31f} @section @code{GNAT.Altivec} (@code{g-altive.ads}) @@ -23763,7 +23735,7 @@ definitions of constants and types common to all the versions of the binding. @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id30}@anchor{322} +@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id30}@anchor{321} @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads}) @@ -23774,7 +23746,7 @@ binding. This package provides the Vector/View conversion routines. @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id31}@anchor{324} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id31}@anchor{323} @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads}) @@ -23788,7 +23760,7 @@ library. The hard binding is provided as a separate package. This unit is common to both bindings. @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id32}@anchor{326} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id32}@anchor{325} @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads}) @@ -23800,7 +23772,7 @@ This package exposes the various vector types part of the Ada binding to AltiVec facilities. @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id33}@anchor{328} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id33}@anchor{327} @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads}) @@ -23815,7 +23787,7 @@ vector elements and provides a simple way to initialize vector objects. @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{329}@anchor{gnat_rm/the_gnat_library id34}@anchor{32a} +@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id34}@anchor{329} @section @code{GNAT.Array_Split} (@code{g-arrspl.ads}) @@ -23828,7 +23800,7 @@ an array wherever the separators appear, and provide direct access to the resulting slices. @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id35}@anchor{32c} +@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id35}@anchor{32b} @section @code{GNAT.AWK} (@code{g-awk.ads}) @@ -23843,7 +23815,7 @@ or more files containing formatted data. The file is viewed as a database where each record is a line and a field is a data element in this line. @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32d}@anchor{gnat_rm/the_gnat_library id36}@anchor{32e} +@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id36}@anchor{32d} @section @code{GNAT.Binary_Search} (@code{g-binsea.ads}) @@ -23855,7 +23827,7 @@ Allow binary search of a sorted array (or of an array-like container; the generic does not reference the array directly). @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32f}@anchor{gnat_rm/the_gnat_library id37}@anchor{330} +@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id37}@anchor{32f} @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads}) @@ -23868,7 +23840,7 @@ These associations can be specified using the @code{-V} binder command line switch. @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id38}@anchor{332} +@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id38}@anchor{331} @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads}) @@ -23879,7 +23851,7 @@ line switch. Provides routines giving hints to the branch predictor of the code generator. @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id39}@anchor{334} +@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id39}@anchor{333} @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads}) @@ -23894,7 +23866,7 @@ useful directly or as parts of the implementations of other abstractions, such as mailboxes. @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{335}@anchor{gnat_rm/the_gnat_library id40}@anchor{336} +@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id40}@anchor{335} @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads}) @@ -23907,7 +23879,7 @@ such as mailboxes. Provides a thread-safe asynchronous intertask mailbox communication facility. @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id41}@anchor{338} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id41}@anchor{337} @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads}) @@ -23922,7 +23894,7 @@ data items. Exchange and comparison procedures are provided by passing access-to-procedure values. @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id42}@anchor{33a} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id42}@anchor{339} @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads}) @@ -23938,7 +23910,7 @@ access-to-procedure values. This is an older version, retained for compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable. @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id43}@anchor{33c} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id43}@anchor{33b} @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads}) @@ -23954,7 +23926,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33d}@anchor{gnat_rm/the_gnat_library id44}@anchor{33e} +@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id44}@anchor{33d} @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads}) @@ -23970,7 +23942,7 @@ the encoding of the string. The routine includes detection of special XML sequences for various UCS input formats. @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33f}@anchor{gnat_rm/the_gnat_library id45}@anchor{340} +@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id45}@anchor{33f} @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads}) @@ -23984,7 +23956,7 @@ General routines for swapping the bytes in 2-, 4-, and 8-byte quantities. Machine-specific implementations are available in some cases. @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{341}@anchor{gnat_rm/the_gnat_library id46}@anchor{342} +@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id46}@anchor{341} @section @code{GNAT.Calendar} (@code{g-calend.ads}) @@ -23998,7 +23970,7 @@ Also provides conversion of @code{Ada.Calendar.Time} values to and from the C @code{timeval} format. @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{343}@anchor{gnat_rm/the_gnat_library id47}@anchor{344} +@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id47}@anchor{343} @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads}) @@ -24009,7 +23981,7 @@ C @code{timeval} format. @geindex GNAT.Calendar.Time_IO (g-catiio.ads) @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{345}@anchor{gnat_rm/the_gnat_library id48}@anchor{346} +@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id48}@anchor{345} @section @code{GNAT.CRC32} (@code{g-crc32.ads}) @@ -24026,7 +23998,7 @@ of this algorithm see Aug. 1988. Sarwate, D.V. @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id49}@anchor{348} +@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id49}@anchor{347} @section @code{GNAT.Case_Util} (@code{g-casuti.ads}) @@ -24041,7 +24013,7 @@ without the overhead of the full casing tables in @code{Ada.Characters.Handling}. @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id50}@anchor{34a} +@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id50}@anchor{349} @section @code{GNAT.CGI} (@code{g-cgi.ads}) @@ -24056,7 +24028,7 @@ builds a table whose index is the key and provides some services to deal with this table. @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34b}@anchor{gnat_rm/the_gnat_library id51}@anchor{34c} +@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id51}@anchor{34b} @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads}) @@ -24071,7 +24043,7 @@ Common Gateway Interface (CGI). It exports services to deal with Web cookies (piece of information kept in the Web client software). @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id52}@anchor{34e} +@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id52}@anchor{34d} @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads}) @@ -24083,7 +24055,7 @@ This is a package to help debugging CGI (Common Gateway Interface) programs written in Ada. @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id53}@anchor{350} +@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id53}@anchor{34f} @section @code{GNAT.Command_Line} (@code{g-comlin.ads}) @@ -24096,7 +24068,7 @@ including the ability to scan for named switches with optional parameters and expand file names using wildcard notations. @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{351}@anchor{gnat_rm/the_gnat_library id54}@anchor{352} +@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id54}@anchor{351} @section @code{GNAT.Compiler_Version} (@code{g-comver.ads}) @@ -24114,7 +24086,7 @@ of the compiler if a consistent tool set is used to compile all units of a partition). @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id55}@anchor{354} +@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id55}@anchor{353} @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads}) @@ -24125,7 +24097,7 @@ of a partition). Provides a simple interface to handle Ctrl-C keyboard events. @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id56}@anchor{356} +@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id56}@anchor{355} @section @code{GNAT.Current_Exception} (@code{g-curexc.ads}) @@ -24142,7 +24114,7 @@ This is particularly useful in simulating typical facilities for obtaining information about exceptions provided by Ada 83 compilers. @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{357}@anchor{gnat_rm/the_gnat_library id57}@anchor{358} +@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id57}@anchor{357} @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads}) @@ -24159,7 +24131,7 @@ problems. See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}. @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id58}@anchor{35a} +@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id58}@anchor{359} @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads}) @@ -24172,7 +24144,7 @@ to and from string images of address values. Supports both C and Ada formats for hexadecimal literals. @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35b}@anchor{gnat_rm/the_gnat_library id59}@anchor{35c} +@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id59}@anchor{35b} @section @code{GNAT.Decode_String} (@code{g-decstr.ads}) @@ -24196,7 +24168,7 @@ Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35d}@anchor{gnat_rm/the_gnat_library id60}@anchor{35e} +@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id60}@anchor{35d} @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads}) @@ -24217,7 +24189,7 @@ preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding. @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35f}@anchor{gnat_rm/the_gnat_library id61}@anchor{360} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id61}@anchor{35f} @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads}) @@ -24230,7 +24202,7 @@ the current directory, making new directories, and scanning the files in a directory. @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id62}@anchor{362} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id62}@anchor{361} @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads}) @@ -24242,7 +24214,7 @@ A child unit of GNAT.Directory_Operations providing additional operations for iterating through directories. @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{363}@anchor{gnat_rm/the_gnat_library id63}@anchor{364} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id63}@anchor{363} @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads}) @@ -24260,7 +24232,7 @@ dynamic instances of the hash table, while an instantiation of @code{GNAT.HTable} creates a single instance of the hash table. @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id64}@anchor{366} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id64}@anchor{365} @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads}) @@ -24280,7 +24252,7 @@ dynamic instances of the table, while an instantiation of @code{GNAT.Table} creates a single instance of the table type. @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id65}@anchor{368} +@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id65}@anchor{367} @section @code{GNAT.Encode_String} (@code{g-encstr.ads}) @@ -24302,7 +24274,7 @@ encoding method. Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id66}@anchor{36a} +@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id66}@anchor{369} @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads}) @@ -24323,7 +24295,7 @@ Note there is a preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding. @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36b}@anchor{gnat_rm/the_gnat_library id67}@anchor{36c} +@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id67}@anchor{36b} @section @code{GNAT.Exception_Actions} (@code{g-excact.ads}) @@ -24336,7 +24308,7 @@ for specific exceptions, or when any exception is raised. This can be used for instance to force a core dump to ease debugging. @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36d}@anchor{gnat_rm/the_gnat_library id68}@anchor{36e} +@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id68}@anchor{36d} @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads}) @@ -24350,7 +24322,7 @@ Provides an interface allowing to control automatic output upon exception occurrences. @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36f}@anchor{gnat_rm/the_gnat_library id69}@anchor{370} +@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id69}@anchor{36f} @section @code{GNAT.Exceptions} (@code{g-except.ads}) @@ -24371,7 +24343,7 @@ predefined exceptions, and for example allows raising @code{Constraint_Error} with a message from a pure subprogram. @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{371}@anchor{gnat_rm/the_gnat_library id70}@anchor{372} +@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id70}@anchor{371} @section @code{GNAT.Expect} (@code{g-expect.ads}) @@ -24387,7 +24359,7 @@ It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{373}@anchor{gnat_rm/the_gnat_library id71}@anchor{374} +@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id71}@anchor{373} @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads}) @@ -24399,7 +24371,7 @@ ports. It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id72}@anchor{376} +@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id72}@anchor{375} @section @code{GNAT.Float_Control} (@code{g-flocon.ads}) @@ -24413,7 +24385,7 @@ library calls may cause this mode to be modified, and the Reset procedure in this package can be used to reestablish the required mode. @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{377}@anchor{gnat_rm/the_gnat_library id73}@anchor{378} +@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id73}@anchor{377} @section @code{GNAT.Formatted_String} (@code{g-forstr.ads}) @@ -24428,7 +24400,7 @@ derived from Integer, Float or enumerations as values for the formatted string. @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{379}@anchor{gnat_rm/the_gnat_library id74}@anchor{37a} +@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id74}@anchor{379} @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads}) @@ -24446,7 +24418,7 @@ have a vector implementation that can be automatically used by the compiler when auto-vectorization is enabled. @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37b}@anchor{gnat_rm/the_gnat_library id75}@anchor{37c} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id75}@anchor{37b} @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads}) @@ -24460,7 +24432,7 @@ access-to-procedure values. The algorithm used is a modified heap sort that performs approximately N*log(N) comparisons in the worst case. @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37d}@anchor{gnat_rm/the_gnat_library id76}@anchor{37e} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id76}@anchor{37d} @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads}) @@ -24476,7 +24448,7 @@ This differs from @code{GNAT.Heap_Sort} in having a less convenient interface, but may be slightly more efficient. @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37f}@anchor{gnat_rm/the_gnat_library id77}@anchor{380} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id77}@anchor{37f} @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads}) @@ -24490,7 +24462,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{381}@anchor{gnat_rm/the_gnat_library id78}@anchor{382} +@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id78}@anchor{381} @section @code{GNAT.HTable} (@code{g-htable.ads}) @@ -24503,7 +24475,7 @@ data. Provides two approaches, one a simple static approach, and the other allowing arbitrary dynamic hash tables. @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{383}@anchor{gnat_rm/the_gnat_library id79}@anchor{384} +@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id79}@anchor{383} @section @code{GNAT.IO} (@code{g-io.ads}) @@ -24519,7 +24491,7 @@ Standard_Input, and writing characters, strings and integers to either Standard_Output or Standard_Error. @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{385}@anchor{gnat_rm/the_gnat_library id80}@anchor{386} +@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id80}@anchor{385} @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads}) @@ -24533,7 +24505,7 @@ Provides some auxiliary functions for use with Text_IO, including a test for whether a file exists, and functions for reading a line of text. @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{387}@anchor{gnat_rm/the_gnat_library id81}@anchor{388} +@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id81}@anchor{387} @section @code{GNAT.Lock_Files} (@code{g-locfil.ads}) @@ -24547,7 +24519,7 @@ Provides a general interface for using files as locks. Can be used for providing program level synchronization. @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{389}@anchor{gnat_rm/the_gnat_library id82}@anchor{38a} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id82}@anchor{389} @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads}) @@ -24559,7 +24531,7 @@ The original implementation of @code{Ada.Numerics.Discrete_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38b}@anchor{gnat_rm/the_gnat_library id83}@anchor{38c} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id83}@anchor{38b} @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads}) @@ -24571,7 +24543,7 @@ The original implementation of @code{Ada.Numerics.Float_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38d}@anchor{gnat_rm/the_gnat_library id84}@anchor{38e} +@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id84}@anchor{38d} @section @code{GNAT.MD5} (@code{g-md5.ads}) @@ -24584,7 +24556,7 @@ the HMAC-MD5 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38f}@anchor{gnat_rm/the_gnat_library id85}@anchor{390} +@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id85}@anchor{38f} @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads}) @@ -24597,7 +24569,7 @@ standard output or standard error files. Uses GNAT.IO for actual output. @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{391}@anchor{gnat_rm/the_gnat_library id86}@anchor{392} +@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id86}@anchor{391} @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads}) @@ -24611,7 +24583,7 @@ various logging purposes, including duplicating functionality of some Ada 83 implementation dependent extensions. @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{393}@anchor{gnat_rm/the_gnat_library id87}@anchor{394} +@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id87}@anchor{393} @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads}) @@ -24627,7 +24599,7 @@ including a portable spawn procedure, and access to environment variables and error return codes. @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{395}@anchor{gnat_rm/the_gnat_library id88}@anchor{396} +@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id88}@anchor{395} @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads}) @@ -24645,7 +24617,7 @@ hashcode are in the same order. These hashing functions are very convenient for use with realtime applications. @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{397}@anchor{gnat_rm/the_gnat_library id89}@anchor{398} +@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id89}@anchor{397} @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads}) @@ -24657,7 +24629,7 @@ Provides random number capabilities which extend those available in the standard Ada library and are more convenient to use. @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{26e}@anchor{gnat_rm/the_gnat_library id90}@anchor{399} +@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{26d}@anchor{gnat_rm/the_gnat_library id90}@anchor{398} @section @code{GNAT.Regexp} (@code{g-regexp.ads}) @@ -24673,7 +24645,7 @@ simplest of the three pattern matching packages provided, and is particularly suitable for ‘file globbing’ applications. @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id91}@anchor{39b} +@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id91}@anchor{39a} @section @code{GNAT.Registry} (@code{g-regist.ads}) @@ -24687,7 +24659,7 @@ registry API, but at a lower level of abstraction, refer to the Win32.Winreg package provided with the Win32Ada binding @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id92}@anchor{39d} +@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id92}@anchor{39c} @section @code{GNAT.Regpat} (@code{g-regpat.ads}) @@ -24702,7 +24674,7 @@ from the original V7 style regular expression library written in C by Henry Spencer (and binary compatible with this C library). @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id93}@anchor{39f} +@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id93}@anchor{39e} @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads}) @@ -24716,7 +24688,7 @@ full content to be processed is not loaded into memory all at once. This makes this interface usable for large files or socket streams. @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a1} +@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a0} @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads}) @@ -24728,7 +24700,7 @@ Provides the capability to query the high water mark of the current task’s secondary stack. @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a3} +@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a2} @section @code{GNAT.Semaphores} (@code{g-semaph.ads}) @@ -24739,7 +24711,7 @@ secondary stack. Provides classic counting and binary semaphores using protected types. @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a5} +@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a4} @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads}) @@ -24751,7 +24723,7 @@ Provides a simple interface to send and receive data over a serial port. This is only supported on GNU/Linux and Windows. @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a7} +@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a6} @section @code{GNAT.SHA1} (@code{g-sha1.ads}) @@ -24764,7 +24736,7 @@ and RFC 3174, and the HMAC-SHA1 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id98}@anchor{3a9} +@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id98}@anchor{3a8} @section @code{GNAT.SHA224} (@code{g-sha224.ads}) @@ -24777,7 +24749,7 @@ and the HMAC-SHA224 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id99}@anchor{3ab} +@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id99}@anchor{3aa} @section @code{GNAT.SHA256} (@code{g-sha256.ads}) @@ -24790,7 +24762,7 @@ and the HMAC-SHA256 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id100}@anchor{3ad} +@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id100}@anchor{3ac} @section @code{GNAT.SHA384} (@code{g-sha384.ads}) @@ -24803,7 +24775,7 @@ and the HMAC-SHA384 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id101}@anchor{3af} +@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id101}@anchor{3ae} @section @code{GNAT.SHA512} (@code{g-sha512.ads}) @@ -24816,7 +24788,7 @@ and the HMAC-SHA512 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b1} +@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b0} @section @code{GNAT.Signals} (@code{g-signal.ads}) @@ -24828,7 +24800,7 @@ Provides the ability to manipulate the blocked status of signals on supported targets. @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b3} +@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b2} @section @code{GNAT.Sockets} (@code{g-socket.ads}) @@ -24843,7 +24815,7 @@ on all native GNAT ports and on VxWorks cross ports. It is not implemented for the LynxOS cross port. @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b5} +@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b4} @section @code{GNAT.Source_Info} (@code{g-souinf.ads}) @@ -24857,7 +24829,7 @@ subprograms yielding the date and time of the current compilation (like the C macros @code{__DATE__} and @code{__TIME__}) @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b7} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b6} @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads}) @@ -24869,7 +24841,7 @@ Provides a function for determining whether one string is a plausible near misspelling of another string. @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b8}@anchor{gnat_rm/the_gnat_library id106}@anchor{3b9} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id106}@anchor{3b8} @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads}) @@ -24882,7 +24854,7 @@ determining whether one string is a plausible near misspelling of another string. @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id107}@anchor{3bb} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id107}@anchor{3ba} @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads}) @@ -24898,7 +24870,7 @@ the SNOBOL4 dynamic pattern construction and matching capabilities, using the efficient algorithm developed by Robert Dewar for the SPITBOL system. @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3bc}@anchor{gnat_rm/the_gnat_library id108}@anchor{3bd} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id108}@anchor{3bc} @section @code{GNAT.Spitbol} (@code{g-spitbo.ads}) @@ -24913,7 +24885,7 @@ useful for constructing arbitrary mappings from strings in the style of the SNOBOL4 TABLE function. @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3be}@anchor{gnat_rm/the_gnat_library id109}@anchor{3bf} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id109}@anchor{3be} @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads}) @@ -24928,7 +24900,7 @@ for type @code{Standard.Boolean}, giving an implementation of sets of string values. @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c1} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c0} @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads}) @@ -24945,7 +24917,7 @@ for type @code{Standard.Integer}, giving an implementation of maps from string to integer values. @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c3} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c2} @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads}) @@ -24962,7 +24934,7 @@ a variable length string type, giving an implementation of general maps from strings to strings. @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c5} +@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c4} @section @code{GNAT.SSE} (@code{g-sse.ads}) @@ -24974,7 +24946,7 @@ targets. It exposes vector component types together with a general introduction to the binding contents and use. @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c7} +@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c6} @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads}) @@ -24983,7 +24955,7 @@ introduction to the binding contents and use. SSE vector types for use with SSE related intrinsics. @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c8}@anchor{gnat_rm/the_gnat_library id114}@anchor{3c9} +@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id114}@anchor{3c8} @section @code{GNAT.String_Hash} (@code{g-strhas.ads}) @@ -24995,7 +24967,7 @@ Provides a generic hash function working on arrays of scalars. Both the scalar type and the hash result type are parameters. @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id115}@anchor{3cb} +@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id115}@anchor{3ca} @section @code{GNAT.Strings} (@code{g-string.ads}) @@ -25005,7 +24977,7 @@ Common String access types and related subprograms. Basically it defines a string access and an array of string access types. @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id116}@anchor{3cd} +@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id116}@anchor{3cc} @section @code{GNAT.String_Split} (@code{g-strspl.ads}) @@ -25019,7 +24991,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id117}@anchor{3cf} +@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id117}@anchor{3ce} @section @code{GNAT.Table} (@code{g-table.ads}) @@ -25039,7 +25011,7 @@ while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be used to define dynamic instances of the table. @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d1} +@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d0} @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads}) @@ -25056,7 +25028,7 @@ single global task lock. Appropriate for use in situations where contention between tasks is very rarely expected. @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d3} +@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d2} @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads}) @@ -25071,7 +25043,7 @@ represents the current date and time in ISO 8601 format. This is a very simple routine with minimal code and there are no dependencies on any other unit. @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d4}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d5} +@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d4} @section @code{GNAT.Threads} (@code{g-thread.ads}) @@ -25088,7 +25060,7 @@ further details if your program has threads that are created by a non-Ada environment which then accesses Ada code. @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d6}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d7} +@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d6} @section @code{GNAT.Traceback} (@code{g-traceb.ads}) @@ -25100,7 +25072,7 @@ Provides a facility for obtaining non-symbolic traceback information, useful in various debugging situations. @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id122}@anchor{3d9} +@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id122}@anchor{3d8} @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads}) @@ -25109,7 +25081,7 @@ in various debugging situations. @geindex Trace back facilities @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3da}@anchor{gnat_rm/the_gnat_library id123}@anchor{3db} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id123}@anchor{3da} @section @code{GNAT.UTF_32} (@code{g-utf_32.ads}) @@ -25128,7 +25100,7 @@ lower case to upper case fold routine corresponding to the Ada 2005 rules for identifier equivalence. @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id124}@anchor{3dd} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id124}@anchor{3dc} @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads}) @@ -25141,7 +25113,7 @@ near misspelling of another wide wide string, where the strings are represented using the UTF_32_String type defined in System.Wch_Cnv. @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3de}@anchor{gnat_rm/the_gnat_library id125}@anchor{3df} +@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id125}@anchor{3de} @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads}) @@ -25153,7 +25125,7 @@ Provides a function for determining whether one wide string is a plausible near misspelling of another wide string. @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3e0}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e1} +@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e0} @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads}) @@ -25167,7 +25139,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e3} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e2} @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads}) @@ -25179,7 +25151,7 @@ Provides a function for determining whether one wide wide string is a plausible near misspelling of another wide wide string. @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e4}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e5} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e4} @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads}) @@ -25193,7 +25165,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id129}@anchor{3e6}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e7} +@anchor{gnat_rm/the_gnat_library id129}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e6} @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads}) @@ -25204,7 +25176,7 @@ for use with either manually or automatically generated bindings to C libraries. @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id130}@anchor{3e8}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e9} +@anchor{gnat_rm/the_gnat_library id130}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e8} @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads}) @@ -25217,7 +25189,7 @@ This package is a binding for the most commonly used operations on C streams. @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id131}@anchor{3ea}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3eb} +@anchor{gnat_rm/the_gnat_library id131}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3ea} @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads}) @@ -25232,7 +25204,7 @@ from a packed decimal format compatible with that used on IBM mainframes. @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id132}@anchor{3ec}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ed} +@anchor{gnat_rm/the_gnat_library id132}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ec} @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads}) @@ -25246,7 +25218,7 @@ mainframes. This package provides a limited binding to the VxWorks API. @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id133}@anchor{3ee}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ef} +@anchor{gnat_rm/the_gnat_library id133}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ee} @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads}) @@ -25269,7 +25241,7 @@ function codes. A particular use of this package is to enable the use of Get_Immediate under VxWorks. @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id134}@anchor{3f0}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f1} +@anchor{gnat_rm/the_gnat_library id134}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f0} @section @code{System.Address_Image} (@code{s-addima.ads}) @@ -25285,7 +25257,7 @@ function that gives an (implementation dependent) string which identifies an address. @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id135}@anchor{3f2}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f3} +@anchor{gnat_rm/the_gnat_library id135}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f2} @section @code{System.Assertions} (@code{s-assert.ads}) @@ -25301,7 +25273,7 @@ by an run-time assertion failure, as well as the routine that is used internally to raise this assertion. @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id136}@anchor{3f4}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f5} +@anchor{gnat_rm/the_gnat_library id136}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f4} @section @code{System.Atomic_Counters} (@code{s-atocou.ads}) @@ -25315,7 +25287,7 @@ on most targets, including all Alpha, AARCH64, ARM, ia64, PowerPC, SPARC V9, x86, and x86_64 platforms. @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id137}@anchor{3f6}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f7} +@anchor{gnat_rm/the_gnat_library id137}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f6} @section @code{System.Memory} (@code{s-memory.ads}) @@ -25333,7 +25305,7 @@ calls to this unit may be made for low level allocation uses (for example see the body of @code{GNAT.Tables}). @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id138}@anchor{3f8}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f9} +@anchor{gnat_rm/the_gnat_library id138}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f8} @section @code{System.Multiprocessors} (@code{s-multip.ads}) @@ -25346,7 +25318,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id139}@anchor{3fa}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fb} +@anchor{gnat_rm/the_gnat_library id139}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fa} @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads}) @@ -25359,7 +25331,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id140}@anchor{3fc}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fd} +@anchor{gnat_rm/the_gnat_library id140}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fc} @section @code{System.Partition_Interface} (@code{s-parint.ads}) @@ -25372,7 +25344,7 @@ is used primarily in a distribution context when using Annex E with @code{GLADE}. @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id141}@anchor{3fe}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3ff} +@anchor{gnat_rm/the_gnat_library id141}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fe} @section @code{System.Pool_Global} (@code{s-pooglo.ads}) @@ -25389,7 +25361,7 @@ declared. It uses malloc/free to allocate/free and does not attempt to do any automatic reclamation. @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id142}@anchor{400}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{401} +@anchor{gnat_rm/the_gnat_library id142}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{400} @section @code{System.Pool_Local} (@code{s-pooloc.ads}) @@ -25406,7 +25378,7 @@ a list of allocated blocks, so that all storage allocated for the pool can be freed automatically when the pool is finalized. @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id143}@anchor{402}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{403} +@anchor{gnat_rm/the_gnat_library id143}@anchor{401}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{402} @section @code{System.Restrictions} (@code{s-restri.ads}) @@ -25422,7 +25394,7 @@ compiler determined information on which restrictions are violated by one or more packages in the partition. @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id144}@anchor{404}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{405} +@anchor{gnat_rm/the_gnat_library id144}@anchor{403}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{404} @section @code{System.Rident} (@code{s-rident.ads}) @@ -25438,7 +25410,7 @@ since the necessary instantiation is included in package System.Restrictions. @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id145}@anchor{406}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{407} +@anchor{gnat_rm/the_gnat_library id145}@anchor{405}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{406} @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads}) @@ -25454,7 +25426,7 @@ stream attributes are applied to string types, but the subprograms in this package can be used directly by application programs. @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id146}@anchor{408}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{409} +@anchor{gnat_rm/the_gnat_library id146}@anchor{407}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{408} @section @code{System.Unsigned_Types} (@code{s-unstyp.ads}) @@ -25467,7 +25439,7 @@ also contains some related definitions for other specialized types used by the compiler in connection with packed array types. @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id147}@anchor{40a}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40b} +@anchor{gnat_rm/the_gnat_library id147}@anchor{409}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40a} @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads}) @@ -25488,7 +25460,7 @@ encoding method. It uses definitions in package @code{System.Wch_Con}. @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id148}@anchor{40c}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40d} +@anchor{gnat_rm/the_gnat_library id148}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40c} @section @code{System.Wch_Con} (@code{s-wchcon.ads}) @@ -25500,7 +25472,7 @@ in ordinary strings. These definitions are used by the package @code{System.Wch_Cnv}. @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top -@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} +@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} @chapter Interfacing to Other Languages @@ -25518,7 +25490,7 @@ provided. @end menu @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{411} +@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{410} @section Interfacing to C @@ -25658,7 +25630,7 @@ of the length corresponding to the @code{type'Size} value in Ada. @end itemize @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{412} +@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{411} @section Interfacing to C++ @@ -25715,7 +25687,7 @@ The @code{External_Name} is the name of the C++ RTTI symbol. You can then cover a specific C++ exception in an exception handler. @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{413}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{414} +@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{413} @section Interfacing to COBOL @@ -25723,7 +25695,7 @@ Interfacing to COBOL is achieved as described in section B.4 of the Ada Reference Manual. @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{415}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{416} +@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{415} @section Interfacing to Fortran @@ -25733,7 +25705,7 @@ multi-dimensional array causes the array to be stored in column-major order as required for convenient interface to Fortran. @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{417}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{418} +@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{417} @section Interfacing to non-GNAT Ada code @@ -25757,7 +25729,7 @@ values or simple record types without variants, or simple array types with fixed bounds. @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top -@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{41a}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} +@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{418}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} @chapter Specialized Needs Annexes @@ -25798,7 +25770,7 @@ in Ada 2005) is fully implemented. @end table @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top -@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} +@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} @chapter Implementation of Specific Ada Features @@ -25817,7 +25789,7 @@ facilities. @end menu @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{175} +@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{175} @section Machine Code Insertions @@ -25985,7 +25957,7 @@ according to normal visibility rules. In particular if there is no qualification is required. @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41f} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41e} @section GNAT Implementation of Tasking @@ -26001,7 +25973,7 @@ to compliance with the Real-Time Systems Annex. @end menu @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{421} +@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{420} @subsection Mapping Ada Tasks onto the Underlying Kernel Threads @@ -26070,7 +26042,7 @@ support this functionality when the parent contains more than one task. @geindex Forking a new process @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{422}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{423} +@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{422} @subsection Ensuring Compliance with the Real-Time Annex @@ -26121,7 +26093,7 @@ placed at the end. @c Support_for_Locking_Policies @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{424} +@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{423} @subsection Support for Locking Policies @@ -26155,7 +26127,7 @@ then ceiling locking is used. Otherwise, the @code{Ceiling_Locking} policy is ignored. @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{425}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{426} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{425} @section GNAT Implementation of Shared Passive Packages @@ -26253,7 +26225,7 @@ This is used to provide the required locking semantics for proper protected object synchronization. @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{427}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{428} +@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{427} @section Code Generation for Array Aggregates @@ -26284,7 +26256,7 @@ component values and static subtypes also lead to simpler code. @end menu @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{42a} +@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{429} @subsection Static constant aggregates with static bounds @@ -26331,7 +26303,7 @@ Zero2: constant two_dim := (others => (others => 0)); @end example @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42c} +@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42b} @subsection Constant aggregates with unconstrained nominal types @@ -26346,7 +26318,7 @@ Cr_Unc : constant One_Unc := (12,24,36); @end example @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42e} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42d} @subsection Aggregates with static bounds @@ -26374,7 +26346,7 @@ end loop; @end example @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{430} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42f} @subsection Aggregates with nonstatic bounds @@ -26385,7 +26357,7 @@ have to be applied to sub-arrays individually, if they do not have statically compatible subtypes. @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{431}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{432} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{431} @subsection Aggregates in assignment statements @@ -26427,7 +26399,7 @@ a temporary (created either by the front-end or the code generator) and then that temporary will be copied onto the target. @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{433}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{434} +@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{433} @section The Size of Discriminated Records with Default Discriminants @@ -26507,7 +26479,7 @@ say) must be consistent, so it is imperative that the object, once created, remain invariant. @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{435}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{436} +@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{435} @section Image Values For Nonscalar Types @@ -26527,7 +26499,7 @@ control of image text is required for some type T, then T’Put_Image should be explicitly specified. @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{437}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{438} +@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{437} @section Strict Conformance to the Ada Reference Manual @@ -26554,7 +26526,7 @@ behavior (although at the cost of a significant performance penalty), so infinite and NaN values are properly generated. @node Implementation of Ada 2012 Features,GNAT language extensions,Implementation of Specific Ada Features,Top -@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{43a}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} +@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{438}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} @chapter Implementation of Ada 2012 Features @@ -28720,7 +28692,7 @@ RM References: 4.03.01 (17) @end itemize @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2012 Features,Top -@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43b}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43c}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43d} +@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43a}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43b}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43c} @chapter GNAT language extensions @@ -28751,7 +28723,7 @@ prototyping phase. @end menu @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{43e} +@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{43d} @section How to activate the extended GNAT Ada superset @@ -28790,7 +28762,7 @@ for serious projects, and is only means as a playground/technology preview. @end cartouche @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{43f}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} +@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{43e}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} @section Curated Extensions @@ -28807,7 +28779,7 @@ for serious projects, and is only means as a playground/technology preview. @end menu @node Local Declarations Without Block,Conditional when constructs,,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{440} +@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{43f} @subsection Local Declarations Without Block @@ -28830,7 +28802,7 @@ end if; @end example @node Conditional when constructs,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{441} +@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{440} @subsection Conditional when constructs @@ -28902,7 +28874,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-conditional-when-constructs.rst} @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Conditional when constructs,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{442} +@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{441} @subsection Fixed lower bounds for array types and subtypes @@ -28956,7 +28928,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-fixed-lower-bound.rst} @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{443} +@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{442} @subsection Prefixed-view notation for calls to primitive subprograms of untagged types @@ -29009,7 +28981,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-prefixed-untagged.rst} @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{444} +@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{443} @subsection Expression defaults for generic formal functions @@ -29038,7 +29010,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-expression-functions-as-default-for-generic-formal-function-parameters.rst} @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{445} +@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{444} @subsection String interpolation @@ -29204,7 +29176,7 @@ Here is a link to the original RFC : @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-string-interpolation.rst} @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{446} +@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{445} @subsection Constrained attribute for generic objects @@ -29212,7 +29184,7 @@ The @code{Constrained} attribute is permitted for objects of generic types. The result indicates whether the corresponding actual is constrained. @node Static aspect on intrinsic functions,,Constrained attribute for generic objects,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{447} +@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{446} @subsection @code{Static} aspect on intrinsic functions @@ -29221,20 +29193,21 @@ and the compiler will evaluate some of these intrinsics statically, in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{448} +@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{447} @section Experimental Language Extensions @menu * Pragma Storage_Model:: +* Attribute Super:: * Simpler accessibility model:: * Case pattern matching:: * Mutably Tagged Types with Size’Class Aspect:: @end menu -@node Pragma Storage_Model,Simpler accessibility model,,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions pragma-storage-model}@anchor{449} +@node Pragma Storage_Model,Attribute Super,,Experimental Language Extensions +@anchor{gnat_rm/gnat_language_extensions pragma-storage-model}@anchor{448} @subsection Pragma Storage_Model @@ -29248,7 +29221,37 @@ support interactions with GPU. Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-storage-model.rst} -@node Simpler accessibility model,Case pattern matching,Pragma Storage_Model,Experimental Language Extensions +@node Attribute Super,Simpler accessibility model,Pragma Storage_Model,Experimental Language Extensions +@anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{449} +@subsection Attribute Super + + +@geindex Super + +The @code{Super} attribute can be applied to objects of tagged types in order +to obtain a view conversion to the most immediate specific parent type. + +It cannot be applied to objects of types without any ancestors, or types whose +immediate parent is abstract. + +@example +type T1 is tagged null record; +procedure P (V : T1); + +type T2 is new T1 with null record; +procedure P (V : T2); + +procedure Call (V : T2'Class) is +begin + V'Super.P; -- Equivalent to "P (T1 (V));", a nondispatching call + -- to T1's primitive procedure P. +end; +@end example + +Here is a link to the full RFC: +@indicateurl{https://github.com/QuentinOchem/ada-spark-rfcs/blob/oop/considered/rfc-oop-super.rst} + +@node Simpler accessibility model,Case pattern matching,Attribute Super,Experimental Language Extensions @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{44a} @subsection Simpler accessibility model diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 73f496fcdab..fb3b7e11641 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -19,7 +19,7 @@ @copying @quotation -GNAT User's Guide for Native Platforms , May 28, 2024 +GNAT User's Guide for Native Platforms , Jun 14, 2024 AdaCore @@ -29645,8 +29645,8 @@ to permit their use in free software. @printindex ge -@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @anchor{d1}@w{ } +@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @c %**end of body @bye From patchwork Thu Jun 20 08:52:54 2024 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: 1949990 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Ex8pXb91; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZBk2YK9z20X8 for ; Thu, 20 Jun 2024 18:57:50 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8017C388A413 for ; Thu, 20 Jun 2024 08:57:48 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 40FB3388981C for ; Thu, 20 Jun 2024 08:53:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 40FB3388981C Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 40FB3388981C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::433 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873624; cv=none; b=owVr30tHLtd/j52PZDWG/rSMLVQVEejEZIpzncQmZb9wnCMrv+sUe5FCA6OxsvUv7G+eqWK0bwb6BERypaPDrhVqb0ZXs1RaX+JicLWIXMw/ntP8BwqujVR8/XW6WWdWK6HljBf86wFSn7gQ6qSEQ31zGM4IMSNBYABSl64BS+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873624; c=relaxed/simple; bh=bXOg1DqCCDnsJxn/kB+m2iZd6nmHT5Zzjp8FAYbqURo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=XHqav+cCa4d7SwaezmUy7CzmRkNNX5eo7B4S7XBguEOxc2PnhLf0HkM5D/bszAYWLP1xzqiqkJAzHg+IxkDD88SSHCzmYPcfmO/wAvFueCW9wwOo2hZb/vkunohXBQHlLcNLIpqpQ4lyYcfFjYWIYmkoMz6DrsnVKa5/kxpjyFU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-354b722fe81so441967f8f.3 for ; Thu, 20 Jun 2024 01:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873614; x=1719478414; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pFK+uyrT00tGAjseZG99COUWFZoD42g1R94Dwbecuk0=; b=Ex8pXb916mv4sipIEr8w/DtRyb4WPNpUqbdHrNWc5AQUmIX1mKqoskVDweYnuaOL2L UWmEb63545FUpn51Js+OGvdyCexUNDVjb+8C7lVjNnuKU+X4tZdAV+K69KlsVBy05pb0 WPfUo9THILpFBhakDlJ79OaDRbm4l5QsvxMCMSS/iqh2veyEHlee/OOu6S1W807PflpL xAHqnMBa/2rq0ctMxRpGT6ORmL6WGdZVqSFrLRi6GwT6sPzz9mscMe0BdTGf90KrO2+Z wd1BnOlM+j/jh7smXYdVTv4oJ5ddZyGmWXAiCsUnQTNng5Yqmdp1Hw/3WykAB90kNMqQ Rh5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873614; x=1719478414; 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=pFK+uyrT00tGAjseZG99COUWFZoD42g1R94Dwbecuk0=; b=mXP/TmBZqyd3tFLZBDf9P2dmvFbPUfXWr62IGpx38ap4TC982J7BkmBlHVaOWuoDSO 88cHIVs/zlZQMCTcWQdnvY1+g8HNfYUTEcqtZep5pP5oU/36gS6NTOP/YdsVINAdXwhl s1zx0jKWL423BTs5cFQMoAkSKxpqKcbCgDN5AFoTnuQRK7+8NFU7txMHFr3j+6WnWOXX +TcMdZFs/yAHFSsq1OKyKu5H+O4QCEPc3V0DUyyXwKIZaeGJtftrqzcOLve9cbXHeXYE pUSW/rD5s74eTr132S9RuBdtj6w/sorIdp6uvtXkRQA70iKtD8tzBDLSqTigqfgKvFtQ faFA== X-Gm-Message-State: AOJu0YxnNYPFn22JzYHDpWB1I9rMN+ii/9Nj5UGHqIHmANa/YsKWPdj4 fVbfidqa6gPaW0MejwnLAd9523ZAeJyH5o6gmSOforP3oiwDU4VR2fKv+HiaCFYDMQ2S5v3z2fc = X-Google-Smtp-Source: AGHT+IGA2x5//cH9lhr/mv6pc99noabAb7V12W3MXAsvS0I4WctdmwlFvpgmWtpUHg6e0APBB3Qm0A== X-Received: by 2002:a05:6000:114d:b0:362:2db5:b07f with SMTP id ffacd0b85a97d-363195b1987mr3296823f8f.44.1718873613904; Thu, 20 Jun 2024 01:53:33 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:33 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Viljar Indus Subject: [COMMITTED 04/30] ada: Treat Info-Warnings as Info messages Date: Thu, 20 Jun 2024 10:52:54 +0200 Message-ID: <20240620085321.2412421-4-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> 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, KAM_ASCII_DIVIDERS, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Viljar Indus There was a general concept of info messages being a subset of warnings. However that is no longer the case. Messages with an info insertion character should be treated just as info messages. gcc/ada/ * atree.ads: Remove Warning_Info_Messages. * errout.adb: Remove various places where Warning_Info_Messages was used. * erroutc.adb: Remove various places where Warning_Info_Messages was used. Create Error_Msg_Object objects with only an info attribute if the message contained both info and warning insertion characters. New method Has_Switch_Tag for detecting if a message should have an error tag. * errutil.adb: Create Error_Msg_Object objects with only an info attribute if the message contained both info and warning insertion characters. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/atree.ads | 10 ++---- gcc/ada/errout.adb | 80 +++++++++++++++++++++++++-------------------- gcc/ada/erroutc.adb | 51 ++++++++++++++++++++--------- gcc/ada/errutil.adb | 31 ++++++++---------- 4 files changed, 96 insertions(+), 76 deletions(-) diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads index 2ecb386c23b..834cc3150f5 100644 --- a/gcc/ada/atree.ads +++ b/gcc/ada/atree.ads @@ -161,15 +161,11 @@ package Atree is -- Number of warnings detected. Initialized to zero at the start of -- compilation. This count includes the count of style and info messages. - Warning_Info_Messages : Nat := 0; - -- Number of info messages generated as warnings. Info messages are never - -- treated as errors (whether from use of the pragma, or the compiler - -- switch -gnatwe). - - Report_Info_Messages : Nat := 0; + Info_Messages : Nat := 0; -- Number of info messages generated as reports. Info messages are never -- treated as errors (whether from use of the pragma, or the compiler - -- switch -gnatwe). Used under Spark_Mode to report proved checks. + -- switch -gnatwe). Used by GNATprove under SPARK_Mode to report proved + -- checks. Check_Messages : Nat := 0; -- Number of check messages generated. Check messages are neither warnings diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index 76c461a2fd7..1e6b0fe4369 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -283,10 +283,6 @@ package body Errout is M.Deleted := True; Warnings_Detected := Warnings_Detected - 1; - if M.Info then - Warning_Info_Messages := Warning_Info_Messages - 1; - end if; - if M.Warn_Err then Warnings_Treated_As_Errors := Warnings_Treated_As_Errors - 1; end if; @@ -428,7 +424,8 @@ package body Errout is -- that style checks are not considered warning messages for this -- purpose. - if Is_Warning_Msg and then Warnings_Suppressed (Orig_Loc) /= No_String + if Is_Warning_Msg + and then Warnings_Suppressed (Orig_Loc) /= No_String then return; @@ -1049,6 +1046,33 @@ package body Errout is return; end if; + if Is_Info_Msg then + + -- If the flag location is in the main extended source unit then for + -- sure we want the message since it definitely belongs. + + if In_Extended_Main_Source_Unit (Sptr) then + null; + + -- Keep info message if message text contains !! + + elsif Has_Double_Exclam then + null; + + -- Here is where we delete a message from a with'ed unit + + else + Cur_Msg := No_Error_Msg; + + if not Continuation then + Last_Killed := True; + end if; + + return; + end if; + + end if; + -- Special check for warning message to see if it should be output if Is_Warning_Msg then @@ -1064,7 +1088,7 @@ package body Errout is end if; -- If the flag location is in the main extended source unit then for - -- sure we want the warning since it definitely belongs + -- sure we want the warning since it definitely belongs. if In_Extended_Main_Source_Unit (Sptr) then null; @@ -1210,6 +1234,11 @@ package body Errout is return; end if; + -- Warning, Style and Info attributes are mutually exclusive + + pragma Assert (Boolean'Pos (Is_Warning_Msg) + Boolean'Pos (Is_Info_Msg) + + Boolean'Pos (Is_Style_Msg) <= 1); + -- Here we build a new error object Errors.Append @@ -1384,15 +1413,7 @@ package body Errout is -- Bump appropriate statistics counts if Errors.Table (Cur_Msg).Info then - - -- Could be (usually is) both "info" and "warning" - - if Errors.Table (Cur_Msg).Warn then - Warning_Info_Messages := Warning_Info_Messages + 1; - Warnings_Detected := Warnings_Detected + 1; - else - Report_Info_Messages := Report_Info_Messages + 1; - end if; + Info_Messages := Info_Messages + 1; elsif Errors.Table (Cur_Msg).Warn or else Errors.Table (Cur_Msg).Style @@ -1648,10 +1669,6 @@ package body Errout is if not Errors.Table (E).Deleted then Errors.Table (E).Deleted := True; Warnings_Detected := Warnings_Detected - 1; - - if Errors.Table (E).Info then - Warning_Info_Messages := Warning_Info_Messages - 1; - end if; end if; end Delete_Warning; @@ -1695,7 +1712,8 @@ package body Errout is Tag : constant String := Get_Warning_Tag (Cur); begin - if (CE.Warn and not CE.Deleted) + if CE.Warn + and then not CE.Deleted and then (Warning_Specifically_Suppressed (CE.Sptr.Ptr, CE.Text, Tag) /= No_String @@ -1968,7 +1986,6 @@ package body Errout is Warnings_Treated_As_Errors := 0; Warnings_Detected := 0; - Warning_Info_Messages := 0; Warnings_As_Errors_Count := 0; -- Initialize warnings tables @@ -2640,8 +2657,7 @@ package body Errout is -- are also errors. declare - Warnings_Count : constant Int := - Warnings_Detected - Warning_Info_Messages; + Warnings_Count : constant Int := Warnings_Detected; Compile_Time_Warnings : Int; -- Number of warnings that come from a Compile_Time_Warning @@ -2702,12 +2718,12 @@ package body Errout is end if; end; - if Warning_Info_Messages + Report_Info_Messages /= 0 then + if Info_Messages /= 0 then Write_Str (", "); - Write_Int (Warning_Info_Messages + Report_Info_Messages); + Write_Int (Info_Messages); Write_Str (" info message"); - if Warning_Info_Messages + Report_Info_Messages > 1 then + if Info_Messages > 1 then Write_Char ('s'); end if; end if; @@ -3419,23 +3435,19 @@ package body Errout is Write_Max_Errors; end if; - -- Even though Warning_Info_Messages are a subclass of warnings, they - -- must not be treated as errors when -gnatwe is in effect. - if Warning_Mode = Treat_As_Error then declare Compile_Time_Pragma_Warnings : constant Nat := Count_Compile_Time_Pragma_Warnings; Total : constant Int := Total_Errors_Detected + Warnings_Detected - - Warning_Info_Messages - Compile_Time_Pragma_Warnings; + - Compile_Time_Pragma_Warnings; -- We need to protect against a negative Total here, because -- if a pragma Compile_Time_Warning occurs in dead code, it -- gets counted in Compile_Time_Pragma_Warnings but not in -- Warnings_Detected. begin Total_Errors_Detected := Int'Max (Total, 0); - Warnings_Detected := - Warning_Info_Messages + Compile_Time_Pragma_Warnings; + Warnings_Detected := Compile_Time_Pragma_Warnings; end; end if; end Output_Messages; @@ -3630,10 +3642,6 @@ package body Errout is Warnings_Detected := Warnings_Detected - 1; end if; - if Errors.Table (E).Info then - Warning_Info_Messages := Warning_Info_Messages - 1; - end if; - -- When warning about a runtime exception has been escalated -- into error, the starting message has increased the total -- errors counter, so here we decrease this counter. diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb index f404018c44d..aa9aac4774f 100644 --- a/gcc/ada/erroutc.adb +++ b/gcc/ada/erroutc.adb @@ -59,6 +59,11 @@ package body Erroutc is -- from generic instantiations by using pragma Warnings around generic -- instances, as needed in GNATprove. + function Has_Switch_Tag (Id : Error_Msg_Id) return Boolean; + function Has_Switch_Tag (E_Msg : Error_Msg_Object) return Boolean; + -- Returns True if the E_Msg is Warning, Style or Info and has a non-empty + -- Warn_Char. + --------------- -- Add_Class -- --------------- @@ -144,12 +149,7 @@ package body Erroutc is if Errors.Table (D).Info then - if Errors.Table (D).Warn then - Warning_Info_Messages := Warning_Info_Messages - 1; - Warnings_Detected := Warnings_Detected - 1; - else - Report_Info_Messages := Report_Info_Messages - 1; - end if; + Info_Messages := Info_Messages - 1; elsif Errors.Table (D).Warn or else Errors.Table (D).Style then Warnings_Detected := Warnings_Detected - 1; @@ -246,8 +246,7 @@ package body Erroutc is ------------------------ function Compilation_Errors return Boolean is - Warnings_Count : constant Int - := Warnings_Detected - Warning_Info_Messages; + Warnings_Count : constant Int := Warnings_Detected; begin if Total_Errors_Detected /= 0 then return True; @@ -330,6 +329,7 @@ package body Erroutc is w (" Line = ", Int (E.Line)); w (" Col = ", Int (E.Col)); + w (" Info = ", E.Info); w (" Warn = ", E.Warn); w (" Warn_Err = ", E.Warn_Err); w (" Warn_Runtime_Raise = ", E.Warn_Runtime_Raise); @@ -366,13 +366,11 @@ package body Erroutc is ------------------------ function Get_Warning_Option (Id : Error_Msg_Id) return String is - Warn : constant Boolean := Errors.Table (Id).Warn; Style : constant Boolean := Errors.Table (Id).Style; Warn_Chr : constant String (1 .. 2) := Errors.Table (Id).Warn_Chr; begin - if (Warn or Style) - and then Warn_Chr /= " " + if Has_Switch_Tag (Errors.Table (Id)) and then Warn_Chr (1) /= '?' then if Warn_Chr = "$ " then @@ -394,13 +392,11 @@ package body Erroutc is --------------------- function Get_Warning_Tag (Id : Error_Msg_Id) return String is - Warn : constant Boolean := Errors.Table (Id).Warn; - Style : constant Boolean := Errors.Table (Id).Style; Warn_Chr : constant String (1 .. 2) := Errors.Table (Id).Warn_Chr; Option : constant String := Get_Warning_Option (Id); begin - if Warn or Style then + if Has_Switch_Tag (Id) then if Warn_Chr = "? " then return "[enabled by default]"; elsif Warn_Chr = "* " then @@ -413,6 +409,23 @@ package body Erroutc is return ""; end Get_Warning_Tag; + -------------------- + -- Has_Switch_Tag -- + -------------------- + + function Has_Switch_Tag (Id : Error_Msg_Id) return Boolean + is (Has_Switch_Tag (Errors.Table (Id))); + + function Has_Switch_Tag (E_Msg : Error_Msg_Object) return Boolean + is + Warn : constant Boolean := E_Msg.Warn; + Style : constant Boolean := E_Msg.Style; + Info : constant Boolean := E_Msg.Info; + Warn_Chr : constant String (1 .. 2) := E_Msg.Warn_Chr; + begin + return (Warn or Style or Info) and then Warn_Chr /= " "; + end Has_Switch_Tag; + ------------- -- Matches -- ------------- @@ -918,6 +931,7 @@ package body Erroutc is Is_Unconditional_Msg := False; Is_Warning_Msg := False; Is_Runtime_Raise := False; + Warning_Msg_Char := " "; -- Check style message @@ -962,7 +976,14 @@ package body Erroutc is elsif Msg (J) = '?' or else Msg (J) = '<' then if Msg (J) = '?' or else Error_Msg_Warn then - Is_Warning_Msg := not Is_Style_Msg; + + -- Consider Info and Style messages as unique message types. + -- Those messages can have warning insertion characters within + -- them. However they should only be switch specific insertion + -- characters and not the generic ? or ?? warning insertion + -- characters. + + Is_Warning_Msg := not (Is_Style_Msg or else Is_Info_Msg); J := J + 1; Warning_Msg_Char := Parse_Message_Class; diff --git a/gcc/ada/errutil.adb b/gcc/ada/errutil.adb index 4f5aa216461..6747fe59d24 100644 --- a/gcc/ada/errutil.adb +++ b/gcc/ada/errutil.adb @@ -199,6 +199,11 @@ package body Errutil is return; end if; + -- Warning, Style and Info attributes are mutually exclusive + + pragma Assert (Boolean'Pos (Is_Warning_Msg) + Boolean'Pos (Is_Info_Msg) + + Boolean'Pos (Is_Style_Msg) <= 1); + -- Otherwise build error message object for new message Errors.Append @@ -308,15 +313,7 @@ package body Errutil is -- Bump appropriate statistics counts if Errors.Table (Cur_Msg).Info then - - -- Could be (usually is) both "info" and "warning" - - if Errors.Table (Cur_Msg).Warn then - Warning_Info_Messages := Warning_Info_Messages + 1; - Warnings_Detected := Warnings_Detected + 1; - else - Report_Info_Messages := Report_Info_Messages + 1; - end if; + Info_Messages := Info_Messages + 1; elsif Errors.Table (Cur_Msg).Warn or else Errors.Table (Cur_Msg).Style @@ -553,19 +550,19 @@ package body Errutil is Write_Str (" errors"); end if; - if Warnings_Detected - Warning_Info_Messages /= 0 then + if Warnings_Detected /= 0 then Write_Str (", "); - Write_Int (Warnings_Detected - Warning_Info_Messages); + Write_Int (Warnings_Detected); Write_Str (" warning"); - if Warnings_Detected - Warning_Info_Messages /= 1 then + if Warnings_Detected /= 1 then Write_Char ('s'); end if; if Warning_Mode = Treat_As_Error then Write_Str (" (treated as error"); - if Warnings_Detected - Warning_Info_Messages /= 1 then + if Warnings_Detected /= 1 then Write_Char ('s'); end if; @@ -595,9 +592,8 @@ package body Errutil is -- must not be treated as errors when -gnatwe is in effect. if Warning_Mode = Treat_As_Error then - Total_Errors_Detected := - Total_Errors_Detected + Warnings_Detected - Warning_Info_Messages; - Warnings_Detected := Warning_Info_Messages; + Total_Errors_Detected := Total_Errors_Detected + Warnings_Detected; + Warnings_Detected := 0; end if; -- Prevent displaying the same messages again in the future @@ -617,8 +613,7 @@ package body Errutil is Serious_Errors_Detected := 0; Total_Errors_Detected := 0; Warnings_Detected := 0; - Warning_Info_Messages := 0; - Report_Info_Messages := 0; + Info_Messages := 0; Cur_Msg := No_Error_Msg; -- Initialize warnings table, if all warnings are suppressed, supply From patchwork Thu Jun 20 08:52:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1949996 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=HVqqRND/; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZGl4pZWz20X6 for ; Thu, 20 Jun 2024 19:01:18 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5263D3890021 for ; Thu, 20 Jun 2024 09:01:12 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 8D8003889820 for ; Thu, 20 Jun 2024 08:53:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8D8003889820 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8D8003889820 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873627; cv=none; b=MMwgpDKasA+Cd4MJbLSeKx6YAk19N9Stc1xeBaSWUxFbCrXyZ2N46rihoGjhIK8vXGWELjSxO5e28yajRjmrYb2tBLPkJZSTtFI95TTPU+sb2VRSrAWkCHr8+ZtzKBehOt5KWesjewGwJR7Tq9hJbenCZCHIfAv8n7qT/fGzPBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873627; c=relaxed/simple; bh=lojHWB+lOBX7dpFFZlobXXIUd8kxhQM0s1cUJ3Wty/E=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=l3RND6+R1yqL2ljwH+tTxiwGRKCWAOoElQDudohu7cW25OvbsTRpic/Y2cTkO/4yrQgjxFO3Fv8Bq5EU3gYLNYQ8YgNcGb0iTk7T19Z1NA9BlVscqAZ+PN5SiR+KZgZO/KdSQXhoYHhD4RSnY1axnsD6vFQ6u4LIhJceA9VgfCU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-364b2f92388so413859f8f.2 for ; Thu, 20 Jun 2024 01:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873617; x=1719478417; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D/C3w5WcdQdHfey7bBSM4Eht+RuCDA8Wm39N+s5xOPc=; b=HVqqRND/bio/7lXND+6uhZnBMA24g/dwSemKH29o65QJNmSuoRZCF+AMpT9eLL9RZS 7XY7psRF70LCAwa4bo7snTB+MaE1UEGASP2V65VbmsAuamgdHP8PlzSYncasEnCR5ojU hVfpObZyTckzUVTE2V0B2YlgQTib4pfLcqJNTAx3m6dwablPvW5oFjAPVgk1FPPwcGAH r0HV3O+hNvz7n17YO8D1OssPWemmEpe5dRSneP1gjdDcQHmejXhpnfRWrDIIW3i5EzKt mdR9bCDzP3ua4XAvcDvhkXEVWrpTdH1ZiIRN5lFQ5JtvkLUTVTxag+vQQJdO0Js+4kwf 30hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873617; x=1719478417; 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=D/C3w5WcdQdHfey7bBSM4Eht+RuCDA8Wm39N+s5xOPc=; b=a6hE/p3WTvW9uz5HrSbKAddFmjgbXb78U+EwZ8RBGvt3hAxrx8HT+9oTAca3pW2S8c sLufZJNlxk6T8Dyc5zjnI2Isd3sT/bctkARr3Q5Tk/e21fJ4WAWjm0woBJkm+KM8xhvU AF4Ims1QRi8lH9k0ka0NIXE2Mlh7u50H3lmxJ6VQev2PKF37u1wWGr+m7MOp2lYdfgHE f4drhWmKk1D6Tgn1ZUN07GZkbfOPnvk6FUToPR+wcd9e37orXEi8sr9BzpS/puTT4uaB h61s/2yN4rvv7UcVksaADwhOBrdu1xaGa8FV5qgtG/rE2ZMrETkudSKnEdN0lI96E1YS 9o4w== X-Gm-Message-State: AOJu0YzLfRXJNQVdabywcj0c3RZOrJa+Jti3SDMVO9dKSR04fyXkHwv0 bcYpECUAcWisPFfhdcXQLX6nlqyOVyYra7rCcMpptW2Xp6cm8ZFf9wYXPQ7/hYETHHTBBcev04s = X-Google-Smtp-Source: AGHT+IF6aqfw4zP5IE0CSb2PrGnYbcHX4yAr1Bud4jRfihnrswSR5YSwWTeIv1/2WEN+S/q3HjstLQ== X-Received: by 2002:a05:6000:243:b0:362:4dc7:dc7b with SMTP id ffacd0b85a97d-36319a85525mr3238528f8f.58.1718873614960; Thu, 20 Jun 2024 01:53:34 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:34 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Viljar Indus Subject: [COMMITTED 05/30] ada: Add switch for suppressing info messages Date: Thu, 20 Jun 2024 10:52:55 +0200 Message-ID: <20240620085321.2412421-5-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Viljar Indus Add a separate switch -gnatis to suppress info messages separately from warning messages that are controlled by -gnatws. gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add entry for -gnatis. * errout.adb (Error_Msg_Internal): Stop printing info messages if -gnatis was used. * opt.ads: Add Info_Suppressed flag to track whether info messages should be suppressed. * switch-c.adb: Add parsing for -gnatis. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- ...building_executable_programs_with_gnat.rst | 15 + gcc/ada/errout.adb | 7 + gcc/ada/gnat_ugn.texi | 508 +++++++++--------- gcc/ada/opt.ads | 5 + gcc/ada/switch-c.adb | 6 +- 5 files changed, 297 insertions(+), 244 deletions(-) diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst index 2f63d02daf7..8fbb1eeef4f 100644 --- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst +++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst @@ -4372,6 +4372,21 @@ When no switch :switch:`-gnatw` is used, this is equivalent to: .. _Debugging_and_Assertion_Control: +Info message Control +-------------------- + +In addition to the warning messages, the compiler can also generate info +messages. In order to control the generation of these messages, the following +switch is provided: + +:switch:`-gnatis` + *Suppress all info messages.* + + This switch completely suppresses the output of all info messages from the + GNAT front end. + + + Debugging and Assertion Control ------------------------------- diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index 1e6b0fe4369..c4eab2deee3 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -1048,6 +1048,13 @@ package body Errout is if Is_Info_Msg then + -- Immediate return if info messages are suppressed + + if Info_Suppressed then + Cur_Msg := No_Error_Msg; + return; + end if; + -- If the flag location is in the main extended source unit then for -- sure we want the message since it definitely belongs. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index fb3b7e11641..fe83913951d 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -261,6 +261,7 @@ Compiler Switches * Alphabetical List of All Switches:: * Output and Error Message Control:: * Warning Message Control:: +* Info message Control:: * Debugging and Assertion Control:: * Validity Checking:: * Style Checking:: @@ -8533,6 +8534,7 @@ compilation units. * Alphabetical List of All Switches:: * Output and Error Message Control:: * Warning Message Control:: +* Info message Control:: * Debugging and Assertion Control:: * Validity Checking:: * Style Checking:: @@ -10580,7 +10582,7 @@ Note that @code{-gnatQ} has no effect if @code{-gnats} is specified, since ALI files are never generated if @code{-gnats} is set. @end table -@node Warning Message Control,Debugging and Assertion Control,Output and Error Message Control,Compiler Switches +@node Warning Message Control,Info message Control,Output and Error Message Control,Compiler Switches @anchor{gnat_ugn/building_executable_programs_with_gnat id15}@anchor{f2}@anchor{gnat_ugn/building_executable_programs_with_gnat warning-message-control}@anchor{ed} @subsection Warning Message Control @@ -12985,8 +12987,28 @@ When no switch @code{-gnatw} is used, this is equivalent to: @end itemize @end quotation -@node Debugging and Assertion Control,Validity Checking,Warning Message Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control}@anchor{f3}@anchor{gnat_ugn/building_executable_programs_with_gnat id16}@anchor{f4} +@node Info message Control,Debugging and Assertion Control,Warning Message Control,Compiler Switches +@anchor{gnat_ugn/building_executable_programs_with_gnat debugging-and-assertion-control}@anchor{f3}@anchor{gnat_ugn/building_executable_programs_with_gnat info-message-control}@anchor{f4} +@subsection Info message Control + + +In addition to the warning messages, the compiler can also generate info +messages. In order to control the generation of these messages, the following +switch is provided: + + +@table @asis + +@item @code{-gnatis} + +`Suppress all info messages.' + +This switch completely suppresses the output of all info messages from the +GNAT front end. +@end table + +@node Debugging and Assertion Control,Validity Checking,Info message Control,Compiler Switches +@anchor{gnat_ugn/building_executable_programs_with_gnat id16}@anchor{f5} @subsection Debugging and Assertion Control @@ -13091,7 +13113,7 @@ is @code{False}, the exception @code{Assert_Failure} is raised. @end table @node Validity Checking,Style Checking,Debugging and Assertion Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id17}@anchor{f5}@anchor{gnat_ugn/building_executable_programs_with_gnat validity-checking}@anchor{e9} +@anchor{gnat_ugn/building_executable_programs_with_gnat id17}@anchor{f6}@anchor{gnat_ugn/building_executable_programs_with_gnat validity-checking}@anchor{e9} @subsection Validity Checking @@ -13389,7 +13411,7 @@ the validity checking mode at the program source level, and also allows for temporary disabling of validity checks. @node Style Checking,Run-Time Checks,Validity Checking,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id18}@anchor{f6}@anchor{gnat_ugn/building_executable_programs_with_gnat style-checking}@anchor{ee} +@anchor{gnat_ugn/building_executable_programs_with_gnat id18}@anchor{f7}@anchor{gnat_ugn/building_executable_programs_with_gnat style-checking}@anchor{ee} @subsection Style Checking @@ -14142,7 +14164,7 @@ built-in standard style check options are enabled. The switch @code{-gnatyN} clears any previously set style checks. @node Run-Time Checks,Using gcc for Syntax Checking,Style Checking,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id19}@anchor{f7}@anchor{gnat_ugn/building_executable_programs_with_gnat run-time-checks}@anchor{ec} +@anchor{gnat_ugn/building_executable_programs_with_gnat id19}@anchor{f8}@anchor{gnat_ugn/building_executable_programs_with_gnat run-time-checks}@anchor{ec} @subsection Run-Time Checks @@ -14363,7 +14385,7 @@ checks) or @code{Unsuppress} (to add back suppressed checks) pragmas in the program source. @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{f8}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{f9} +@anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{f9}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{fa} @subsection Using @code{gcc} for Syntax Checking @@ -14420,7 +14442,7 @@ together. This is primarily used by the @code{gnatchop} utility @end table @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{fa}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{fb} +@anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{fb}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{fc} @subsection Using @code{gcc} for Semantic Checking @@ -14467,7 +14489,7 @@ and specifications where a separate body is present). @end table @node Compiling Different Versions of Ada,Character Set Control,Using gcc for Semantic Checking,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{fc} +@anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{fd} @subsection Compiling Different Versions of Ada @@ -14632,7 +14654,7 @@ extensions enabled by this switch, see the GNAT reference manual @end table @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{31}@anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{fd} +@anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{31}@anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{fe} @subsection Character Set Control @@ -14859,7 +14881,7 @@ comments are ended by an appropriate (CR, or CR/LF, or LF) line terminator. This is a common mode for many programs with foreign language comments. @node File Naming Control,Subprogram Inlining Control,Character Set Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{fe}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{ff} +@anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{ff}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{100} @subsection File Naming Control @@ -14879,7 +14901,7 @@ For the source file naming rules, @ref{3b,,File Naming Rules}. @end table @node Subprogram Inlining Control,Auxiliary Output Control,File Naming Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{100}@anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{101} +@anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{101}@anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{102} @subsection Subprogram Inlining Control @@ -14912,7 +14934,7 @@ If you specify this switch the compiler will access these bodies, creating an extra source dependency for the resulting object file, and where possible, the call will be inlined. For further details on when inlining is possible -see @ref{102,,Inlining of Subprograms}. +see @ref{103,,Inlining of Subprograms}. @end table @geindex -gnatN (gcc) @@ -14932,7 +14954,7 @@ inlining, but that is no longer the case. @end table @node Auxiliary Output Control,Debugging Control,Subprogram Inlining Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{103}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{104} +@anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{104}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{105} @subsection Auxiliary Output Control @@ -15002,7 +15024,7 @@ An object file has been generated for every source file. @end table @node Debugging Control,Exception Handling Control,Auxiliary Output Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{106} +@anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{106}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{107} @subsection Debugging Control @@ -15351,7 +15373,7 @@ encodings for the rest. @end table @node Exception Handling Control,Units to Sources Mapping Files,Debugging Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{108} +@anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{108}@anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{109} @subsection Exception Handling Control @@ -15423,7 +15445,7 @@ and @code{gnatbind}. Passing this option to @code{gnatmake} through the compilation and binding steps. @node Units to Sources Mapping Files,Code Generation Control,Exception Handling Control,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{109}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{ea} +@anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{10a}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{ea} @subsection Units to Sources Mapping Files @@ -15475,7 +15497,7 @@ mapping file and communicates it to the compiler using this switch. @end table @node Code Generation Control,,Units to Sources Mapping Files,Compiler Switches -@anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{10a}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{10b} +@anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{10b}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{10c} @subsection Code Generation Control @@ -15504,7 +15526,7 @@ there is no point in using @code{-m} switches to improve performance unless you actually see a performance improvement. @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT -@anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{10c}@anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{10d} +@anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{10d}@anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{10e} @section Linker Switches @@ -15524,7 +15546,7 @@ platforms. @end table @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT -@anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{ca}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{10e} +@anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{ca}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{10f} @section Binding with @code{gnatbind} @@ -15575,7 +15597,7 @@ to be read by the @code{gnatlink} utility used to link the Ada application. @end menu @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{10f}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{110} +@anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{110}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{111} @subsection Running @code{gnatbind} @@ -15660,7 +15682,7 @@ Ada code provided the @code{-g} switch is used for @code{gnatbind} and @code{gnatlink}. @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{111}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{112} +@anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{112}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{113} @subsection Switches for @code{gnatbind} @@ -15855,7 +15877,7 @@ Currently the same as @code{-Ea}. @item @code{-f`elab-order'} -Force elaboration order. For further details see @ref{113,,Elaboration Control} +Force elaboration order. For further details see @ref{114,,Elaboration Control} and @ref{f,,Elaboration Order Handling in GNAT}. @end table @@ -15904,7 +15926,7 @@ Legacy elaboration order model enabled. For further details see @item @code{-H32} Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types). -For further details see @ref{114,,Dynamic Allocation Control}. +For further details see @ref{115,,Dynamic Allocation Control}. @end table @geindex -H64 (gnatbind) @@ -15917,7 +15939,7 @@ For further details see @ref{114,,Dynamic Allocation Control}. @item @code{-H64} Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types). -For further details see @ref{114,,Dynamic Allocation Control}. +For further details see @ref{115,,Dynamic Allocation Control}. @geindex -I (gnatbind) @@ -16206,7 +16228,7 @@ Enable dynamic stack usage, with @code{n} results stored and displayed at program termination. A result is generated when a task terminates. Results that can’t be stored are displayed on the fly, at task termination. This option is currently not supported on Itanium -platforms. (See @ref{115,,Dynamic Stack Usage Analysis} for details.) +platforms. (See @ref{116,,Dynamic Stack Usage Analysis} for details.) @geindex -v (gnatbind) @@ -16286,7 +16308,7 @@ no arguments. @end menu @node Consistency-Checking Modes,Binder Error Message Control,,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{116}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{117} +@anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{117}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{118} @subsubsection Consistency-Checking Modes @@ -16340,7 +16362,7 @@ case the checking against sources has already been performed by @end table @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{118}@anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{119} +@anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{119}@anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{11a} @subsubsection Binder Error Message Control @@ -16450,7 +16472,7 @@ with extreme care. @end table @node Elaboration Control,Output Control,Binder Error Message Control,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{113}@anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{11a} +@anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{114}@anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{11b} @subsubsection Elaboration Control @@ -16535,7 +16557,7 @@ debugging/experimental use. @end table @node Output Control,Dynamic Allocation Control,Elaboration Control,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{11b}@anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{11c} +@anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{11c}@anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{11d} @subsubsection Output Control @@ -16616,7 +16638,7 @@ be used to improve code generation in some cases. @end table @node Dynamic Allocation Control,Binding with Non-Ada Main Programs,Output Control,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{114}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{11d} +@anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{115}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{11e} @subsubsection Dynamic Allocation Control @@ -16642,7 +16664,7 @@ unless explicitly overridden by a @code{'Size} clause on the access type. These switches are only effective on VMS platforms. @node Binding with Non-Ada Main Programs,Binding Programs with No Main Subprogram,Dynamic Allocation Control,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{7e}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{11e} +@anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{7e}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{11f} @subsubsection Binding with Non-Ada Main Programs @@ -16738,7 +16760,7 @@ side effect is that this could be the wrong mode for the foreign code where floating point computation could be broken after this call. @node Binding Programs with No Main Subprogram,,Binding with Non-Ada Main Programs,Switches for gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{11f}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{120} +@anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{120}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{121} @subsubsection Binding Programs with No Main Subprogram @@ -16769,7 +16791,7 @@ the binder switch @end table @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{121}@anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{122} +@anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{122}@anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{123} @subsection Command-Line Access @@ -16799,7 +16821,7 @@ required, your main program must set @code{gnat_argc} and it. @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{123}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{76} +@anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{124}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{76} @subsection Search Paths for @code{gnatbind} @@ -16903,7 +16925,7 @@ in compiling sources from multiple directories. This can make development environments much more flexible. @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind -@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{124}@anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{125} +@anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{125}@anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{126} @subsection Examples of @code{gnatbind} Usage @@ -16932,7 +16954,7 @@ since gnatlink will not be able to find the generated file. @end quotation @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT -@anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{126}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{cb} +@anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{127}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{cb} @section Linking with @code{gnatlink} @@ -16953,7 +16975,7 @@ generated by the @code{gnatbind} to determine this list. @end menu @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink -@anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{127}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{128} +@anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{128}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{129} @subsection Running @code{gnatlink} @@ -17012,8 +17034,8 @@ $ gnatlink my_prog -Wl,-Map,MAPFILE Using @code{linker options} it is possible to set the program stack and heap size. -See @ref{129,,Setting Stack Size from gnatlink} and -@ref{12a,,Setting Heap Size from gnatlink}. +See @ref{12a,,Setting Stack Size from gnatlink} and +@ref{12b,,Setting Heap Size from gnatlink}. @code{gnatlink} determines the list of objects required by the Ada program and prepends them to the list of objects passed to the linker. @@ -17022,7 +17044,7 @@ program and prepends them to the list of objects passed to the linker. presented to the linker. @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink -@anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{12b}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{12c} +@anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{12c}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{12d} @subsection Switches for @code{gnatlink} @@ -17217,7 +17239,7 @@ switch. @end table @node Using the GNU make Utility,,Linking with gnatlink,Building Executable Programs with GNAT -@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{12d}@anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{70} +@anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{12e}@anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{70} @section Using the GNU @code{make} Utility @@ -17242,7 +17264,7 @@ is the same, these examples use some advanced features found only in @end menu @node Using gnatmake in a Makefile,Automatically Creating a List of Directories,,Using the GNU make Utility -@anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{12e}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{12f} +@anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{12f}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{130} @subsection Using gnatmake in a Makefile @@ -17261,7 +17283,7 @@ the appropriate directories. Note that you should also read the example on how to automatically create the list of directories -(@ref{130,,Automatically Creating a List of Directories}) +(@ref{131,,Automatically Creating a List of Directories}) which might help you in case your project has a lot of subdirectories. @example @@ -17341,7 +17363,7 @@ clean:: @end example @node Automatically Creating a List of Directories,Generating the Command Line Switches,Using gnatmake in a Makefile,Using the GNU make Utility -@anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{130}@anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{131} +@anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{131}@anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{132} @subsection Automatically Creating a List of Directories @@ -17414,12 +17436,12 @@ DIRS := $@{shell find $@{ROOT_DIRECTORY@} -type d -print@} @end example @node Generating the Command Line Switches,Overcoming Command Line Length Limits,Automatically Creating a List of Directories,Using the GNU make Utility -@anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{132}@anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{133} +@anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{133}@anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{134} @subsection Generating the Command Line Switches Once you have created the list of directories as explained in the -previous section (@ref{130,,Automatically Creating a List of Directories}), +previous section (@ref{131,,Automatically Creating a List of Directories}), you can easily generate the command line arguments to pass to gnatmake. For the sake of completeness, this example assumes that the source path @@ -17440,7 +17462,7 @@ all: @end example @node Overcoming Command Line Length Limits,,Generating the Command Line Switches,Using the GNU make Utility -@anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{134}@anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{135} +@anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{135}@anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{136} @subsection Overcoming Command Line Length Limits @@ -17455,7 +17477,7 @@ even none on most systems). It assumes that you have created a list of directories in your Makefile, using one of the methods presented in -@ref{130,,Automatically Creating a List of Directories}. +@ref{131,,Automatically Creating a List of Directories}. For the sake of completeness, we assume that the object path (where the ALI files are found) is different from the sources patch. @@ -17498,7 +17520,7 @@ all: @end example @node GNAT Utility Programs,GNAT and Program Execution,Building Executable Programs with GNAT,Top -@anchor{gnat_ugn/gnat_utility_programs doc}@anchor{136}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{b}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{137} +@anchor{gnat_ugn/gnat_utility_programs doc}@anchor{137}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{b}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{138} @chapter GNAT Utility Programs @@ -17509,10 +17531,10 @@ This chapter describes a number of utility programs: @itemize * @item -@ref{138,,The File Cleanup Utility gnatclean} +@ref{139,,The File Cleanup Utility gnatclean} @item -@ref{139,,The GNAT Library Browser gnatls} +@ref{13a,,The GNAT Library Browser gnatls} @end itemize Other GNAT utilities are described elsewhere in this manual: @@ -17540,7 +17562,7 @@ Other GNAT utilities are described elsewhere in this manual: @end menu @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs -@anchor{gnat_ugn/gnat_utility_programs id2}@anchor{13a}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{138} +@anchor{gnat_ugn/gnat_utility_programs id2}@anchor{13b}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{139} @section The File Cleanup Utility @code{gnatclean} @@ -17560,7 +17582,7 @@ generated files and executable files. @end menu @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean -@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{13b}@anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{13c} +@anchor{gnat_ugn/gnat_utility_programs id3}@anchor{13c}@anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{13d} @subsection Running @code{gnatclean} @@ -17584,7 +17606,7 @@ the linker. In informative-only mode, specified by switch normal mode is listed, but no file is actually deleted. @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean -@anchor{gnat_ugn/gnat_utility_programs id4}@anchor{13d}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{13e} +@anchor{gnat_ugn/gnat_utility_programs id4}@anchor{13e}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{13f} @subsection Switches for @code{gnatclean} @@ -17786,7 +17808,7 @@ where @code{gnatclean} was invoked. @end table @node The GNAT Library Browser gnatls,,The File Cleanup Utility gnatclean,GNAT Utility Programs -@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{13f}@anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{139} +@anchor{gnat_ugn/gnat_utility_programs id5}@anchor{140}@anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{13a} @section The GNAT Library Browser @code{gnatls} @@ -17807,7 +17829,7 @@ as well as various characteristics. @end menu @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls -@anchor{gnat_ugn/gnat_utility_programs id6}@anchor{140}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{141} +@anchor{gnat_ugn/gnat_utility_programs id6}@anchor{141}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{142} @subsection Running @code{gnatls} @@ -17887,7 +17909,7 @@ version of the same source that has been modified. @end table @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls -@anchor{gnat_ugn/gnat_utility_programs id7}@anchor{142}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{143} +@anchor{gnat_ugn/gnat_utility_programs id7}@anchor{143}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{144} @subsection Switches for @code{gnatls} @@ -18069,7 +18091,7 @@ by the user. @end table @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls -@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{144}@anchor{gnat_ugn/gnat_utility_programs id8}@anchor{145} +@anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{145}@anchor{gnat_ugn/gnat_utility_programs id8}@anchor{146} @subsection Example of @code{gnatls} Usage @@ -18155,7 +18177,7 @@ instr.ads @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top -@anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{146}@anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{c}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{147} +@anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{147}@anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{c}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{148} @chapter GNAT and Program Execution @@ -18165,25 +18187,25 @@ This chapter covers several topics: @itemize * @item -@ref{148,,Running and Debugging Ada Programs} +@ref{149,,Running and Debugging Ada Programs} @item -@ref{149,,Profiling} +@ref{14a,,Profiling} @item -@ref{14a,,Improving Performance} +@ref{14b,,Improving Performance} @item -@ref{14b,,Overflow Check Handling in GNAT} +@ref{14c,,Overflow Check Handling in GNAT} @item -@ref{14c,,Performing Dimensionality Analysis in GNAT} +@ref{14d,,Performing Dimensionality Analysis in GNAT} @item -@ref{14d,,Stack Related Facilities} +@ref{14e,,Stack Related Facilities} @item -@ref{14e,,Memory Management Issues} +@ref{14f,,Memory Management Issues} @end itemize @menu @@ -18198,7 +18220,7 @@ This chapter covers several topics: @end menu @node Running and Debugging Ada Programs,Profiling,,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{148}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{14f} +@anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{149}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{150} @section Running and Debugging Ada Programs @@ -18252,7 +18274,7 @@ the incorrect user program. @end menu @node The GNAT Debugger GDB,Running GDB,,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{150}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{151} +@anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{151}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{152} @subsection The GNAT Debugger GDB @@ -18309,7 +18331,7 @@ the debugging information and can respond to user commands to inspect variables, and more generally to report on the state of execution. @node Running GDB,Introduction to GDB Commands,The GNAT Debugger GDB,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{152}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{153} +@anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{153}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{154} @subsection Running GDB @@ -18336,7 +18358,7 @@ exactly as if the debugger were not present. The following section describes some of the additional commands that can be given to @code{GDB}. @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{154}@anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{155} +@anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{155}@anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{156} @subsection Introduction to GDB Commands @@ -18544,7 +18566,7 @@ Note that most commands can be abbreviated (for example, c for continue, bt for backtrace). @node Using Ada Expressions,Calling User-Defined Subprograms,Introduction to GDB Commands,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{156}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{157} +@anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{157}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{158} @subsection Using Ada Expressions @@ -18582,7 +18604,7 @@ their packages, regardless of context. Where this causes ambiguity, For details on the supported Ada syntax, see @cite{Debugging with GDB}. @node Calling User-Defined Subprograms,Using the next Command in a Function,Using Ada Expressions,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{159} +@anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{159}@anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{15a} @subsection Calling User-Defined Subprograms @@ -18641,7 +18663,7 @@ elements directly from GDB, you can write a callable procedure that prints the elements in the desired format. @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{15a}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{15b} +@anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{15b}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{15c} @subsection Using the `next' Command in a Function @@ -18664,7 +18686,7 @@ The value returned is always that from the first return statement that was stepped through. @node Stopping When Ada Exceptions Are Raised,Ada Tasks,Using the next Command in a Function,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{15c}@anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{15d} +@anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{15d}@anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{15e} @subsection Stopping When Ada Exceptions Are Raised @@ -18721,7 +18743,7 @@ argument, prints out only those exceptions whose name matches `regexp'. @geindex Tasks (in gdb) @node Ada Tasks,Debugging Generic Units,Stopping When Ada Exceptions Are Raised,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{15e}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{15f} +@anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{15f}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{160} @subsection Ada Tasks @@ -18808,7 +18830,7 @@ see @cite{Debugging with GDB}. @geindex Generics @node Debugging Generic Units,Remote Debugging with gdbserver,Ada Tasks,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{160}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{161} +@anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{161}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{162} @subsection Debugging Generic Units @@ -18867,7 +18889,7 @@ other units. @geindex Remote Debugging with gdbserver @node Remote Debugging with gdbserver,GNAT Abnormal Termination or Failure to Terminate,Debugging Generic Units,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{162}@anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{163} +@anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{163}@anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{164} @subsection Remote Debugging with gdbserver @@ -18925,7 +18947,7 @@ GNAT provides support for gdbserver on x86-linux, x86-windows and x86_64-linux. @geindex Abnormal Termination or Failure to Terminate @node GNAT Abnormal Termination or Failure to Terminate,Naming Conventions for GNAT Source Files,Remote Debugging with gdbserver,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{164}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{165} +@anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{165}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{166} @subsection GNAT Abnormal Termination or Failure to Terminate @@ -18980,7 +19002,7 @@ Finally, you can start @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the front-end of GNAT, and can be run independently (normally it is just called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you -would on a C program (but @ref{151,,The GNAT Debugger GDB} for caveats). The +would on a C program (but @ref{152,,The GNAT Debugger GDB} for caveats). The @code{where} command is the first line of attack; the variable @code{lineno} (seen by @code{print lineno}), used by the second phase of @code{gnat1} and by the @code{gcc} backend, indicates the source line at @@ -18989,7 +19011,7 @@ the source file. @end itemize @node Naming Conventions for GNAT Source Files,Getting Internal Debugging Information,GNAT Abnormal Termination or Failure to Terminate,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{166}@anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{167} +@anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{167}@anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{168} @subsection Naming Conventions for GNAT Source Files @@ -19070,7 +19092,7 @@ the other @code{.c} files are modifications of common @code{gcc} files. @end itemize @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{168}@anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{169} +@anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{169}@anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{16a} @subsection Getting Internal Debugging Information @@ -19098,7 +19120,7 @@ are replaced with run-time calls. @geindex stack unwinding @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{16a}@anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{16b} +@anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{16b}@anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{16c} @subsection Stack Traceback @@ -19127,7 +19149,7 @@ is enabled, and no exception is raised during program execution. @end menu @node Non-Symbolic Traceback,Symbolic Traceback,,Stack Traceback -@anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{16c}@anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{16d} +@anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{16d}@anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{16e} @subsubsection Non-Symbolic Traceback @@ -19260,7 +19282,7 @@ $ addr2line -e stb -a -f -p --demangle=gnat 0x401373 0x40138b From this traceback we can see that the exception was raised in @code{stb.adb} at line 5, which was reached from a procedure call in @code{stb.adb} at line 10, and so on. The @code{b~std.adb} is the binder file, which contains the -call to the main program. @ref{110,,Running gnatbind}. The remaining entries are +call to the main program. @ref{111,,Running gnatbind}. The remaining entries are assorted runtime routines and the output will vary from platform to platform. It is also possible to use @code{GDB} with these traceback addresses to debug @@ -19448,7 +19470,7 @@ addresses need to be specified in C format, with a leading ‘0x’). @geindex symbolic @node Symbolic Traceback,,Non-Symbolic Traceback,Stack Traceback -@anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{16e}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{16f} +@anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{16f}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{170} @subsubsection Symbolic Traceback @@ -19567,7 +19589,7 @@ which will also be printed if an unhandled exception terminates the program. @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs -@anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{170}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{171} +@anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{171}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{172} @subsection Pretty-Printers for the GNAT runtime @@ -19674,7 +19696,7 @@ for more information. @geindex Profiling @node Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{172}@anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{149} +@anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{173}@anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{14a} @section Profiling @@ -19690,7 +19712,7 @@ This section describes how to use the @code{gprof} profiler tool on Ada programs @end menu @node Profiling an Ada Program with gprof,,,Profiling -@anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{173}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{174} +@anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{174}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{175} @subsection Profiling an Ada Program with gprof @@ -19744,7 +19766,7 @@ to interpret the results. @end menu @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof -@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{175}@anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{176} +@anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{176}@anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{177} @subsubsection Compilation for profiling @@ -19775,7 +19797,7 @@ Note that on Windows, gprof does not support PIE. The @code{-no-pie} switch should be added to the linker flags to disable this feature. @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof -@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{177}@anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{178} +@anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{178}@anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{179} @subsubsection Program execution @@ -19790,7 +19812,7 @@ generated in the directory where the program was launched from. If this file already exists, it will be overwritten. @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof -@anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{179}@anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{17a} +@anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{17a}@anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{17b} @subsubsection Running gprof @@ -19903,7 +19925,7 @@ may be given; only one @code{function_name} may be indicated with each @end table @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof -@anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{17b}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{17c} +@anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{17c}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{17d} @subsubsection Interpretation of profiling results @@ -19920,7 +19942,7 @@ and the subprograms that it calls. It also provides an estimate of the time spent in each of those callers/called subprograms. @node Improving Performance,Overflow Check Handling in GNAT,Profiling,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{14a}@anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{17d} +@anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{14b}@anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{17e} @section Improving Performance @@ -19941,7 +19963,7 @@ which can reduce the size of program executables. @end menu @node Performance Considerations,Text_IO Suggestions,,Improving Performance -@anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{17e}@anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{17f} +@anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{17f}@anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{180} @subsection Performance Considerations @@ -20002,7 +20024,7 @@ some guidelines on debugging optimized code. @end menu @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{180}@anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{181} +@anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{181}@anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{182} @subsubsection Controlling Run-Time Checks @@ -20054,7 +20076,7 @@ remove checks) or @code{pragma Unsuppress} (to add back suppressed checks) in the program source. @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{182}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{183} +@anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{183}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{184} @subsubsection Use of Restrictions @@ -20089,7 +20111,7 @@ that this also means that you can write code without worrying about the possibility of an immediate abort at any point. @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{184}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{ef} +@anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{ef} @subsubsection Optimization Levels @@ -20170,7 +20192,7 @@ the slowest compilation time. Full optimization as in @code{-O2}; also uses more aggressive automatic inlining of subprograms within a unit -(@ref{102,,Inlining of Subprograms}) and attempts to vectorize loops. +(@ref{103,,Inlining of Subprograms}) and attempts to vectorize loops. @end table @item @@ -20210,10 +20232,10 @@ levels. Note regarding the use of @code{-O3}: The use of this optimization level ought not to be automatically preferred over that of level @code{-O2}, since it often results in larger executables which may run more slowly. -See further discussion of this point in @ref{102,,Inlining of Subprograms}. +See further discussion of this point in @ref{103,,Inlining of Subprograms}. @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{186} +@anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{186}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{187} @subsubsection Debugging Optimized Code @@ -20341,7 +20363,7 @@ on the resulting executable, which removes both debugging information and global symbols. @node Inlining of Subprograms,Floating Point Operations,Debugging Optimized Code,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{187}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{102} +@anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{103} @subsubsection Inlining of Subprograms @@ -20480,7 +20502,7 @@ indeed you should use @code{-O3} only if tests show that it actually improves performance for your program. @node Floating Point Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{189} +@anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{189}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{18a} @subsubsection Floating Point Operations @@ -20528,7 +20550,7 @@ so it is permissible to mix units compiled with and without these switches. @node Vectorization of loops,Other Optimization Switches,Floating Point Operations,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{18a}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{18b} +@anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{18b}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{18c} @subsubsection Vectorization of loops @@ -20679,7 +20701,7 @@ placed immediately within the loop will tell the compiler that it can safely omit the non-vectorized version of the loop as well as the run-time test. @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{18c}@anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{18d} +@anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{18d}@anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{18e} @subsubsection Other Optimization Switches @@ -20696,7 +20718,7 @@ the `Submodel Options' section in the `Hardware Models and Configurations' chapter of @cite{Using the GNU Compiler Collection (GCC)}. @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{18e}@anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{e6} +@anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{18f}@anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{e6} @subsubsection Optimization and Strict Aliasing @@ -20988,7 +21010,7 @@ review any uses of unchecked conversion, particularly if you are getting the warnings described above. @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{18f}@anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{190} +@anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{190}@anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{191} @subsubsection Aliased Variables and Optimization @@ -21046,7 +21068,7 @@ This means that the above example will in fact “work” reliably, that is, it will produce the expected results. @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{191}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{192} +@anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{192}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{193} @subsubsection Atomic Variables and Optimization @@ -21127,7 +21149,7 @@ such synchronization code is not required, it may be useful to disable it. @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations -@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{193}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{194} +@anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{194}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{195} @subsubsection Passive Task Optimization @@ -21172,7 +21194,7 @@ that typically clients of the tasks who call entries, will not have to be modified, only the task definition itself. @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance -@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{195}@anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{196} +@anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{197} @subsection @code{Text_IO} Suggestions @@ -21195,7 +21217,7 @@ of the standard output file, or change the standard output file to be buffered using @code{Interfaces.C_Streams.setvbuf}. @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance -@anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{197}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{198} +@anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{198}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{199} @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination @@ -21212,7 +21234,7 @@ your executable just by setting options at compilation time. @end menu @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination -@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{199}@anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{19a} +@anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{19a}@anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{19b} @subsubsection About unused subprogram/data elimination @@ -21228,7 +21250,7 @@ architecture and on all cross platforms using the ELF binary file format. In both cases GNU binutils version 2.16 or later are required to enable it. @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination -@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{19b}@anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{19c} +@anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{19c}@anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{19d} @subsubsection Compilation options @@ -21267,7 +21289,7 @@ The GNAT static library is now compiled with -ffunction-sections and and data of the GNAT library from your executable. @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination -@anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{19d}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{19e} +@anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{19f} @subsubsection Example of unused subprogram/data elimination @@ -21337,7 +21359,7 @@ appropriate options. @geindex Checks (overflow) @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{14b}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{19f} +@anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{14c}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{1a0} @section Overflow Check Handling in GNAT @@ -21353,7 +21375,7 @@ This section explains how to control the handling of overflow checks. @end menu @node Background,Management of Overflows in GNAT,,Overflow Check Handling in GNAT -@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{1a1} +@anchor{gnat_ugn/gnat_and_program_execution background}@anchor{1a1}@anchor{gnat_ugn/gnat_and_program_execution id46}@anchor{1a2} @subsection Background @@ -21479,7 +21501,7 @@ exception raised because of the intermediate overflow (and we really would prefer this precondition to be considered True at run time). @node Management of Overflows in GNAT,Specifying the Desired Mode,Background,Overflow Check Handling in GNAT -@anchor{gnat_ugn/gnat_and_program_execution id47}@anchor{1a2}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1a3} +@anchor{gnat_ugn/gnat_and_program_execution id47}@anchor{1a3}@anchor{gnat_ugn/gnat_and_program_execution management-of-overflows-in-gnat}@anchor{1a4} @subsection Management of Overflows in GNAT @@ -21593,7 +21615,7 @@ out in the normal manner (with infinite values always failing all range checks). @node Specifying the Desired Mode,Default Settings,Management of Overflows in GNAT,Overflow Check Handling in GNAT -@anchor{gnat_ugn/gnat_and_program_execution id48}@anchor{1a4}@anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{eb} +@anchor{gnat_ugn/gnat_and_program_execution id48}@anchor{1a5}@anchor{gnat_ugn/gnat_and_program_execution specifying-the-desired-mode}@anchor{eb} @subsection Specifying the Desired Mode @@ -21717,7 +21739,7 @@ causing all intermediate operations to be computed using the base type (@code{STRICT} mode). @node Default Settings,Implementation Notes,Specifying the Desired Mode,Overflow Check Handling in GNAT -@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1a5}@anchor{gnat_ugn/gnat_and_program_execution id49}@anchor{1a6} +@anchor{gnat_ugn/gnat_and_program_execution default-settings}@anchor{1a6}@anchor{gnat_ugn/gnat_and_program_execution id49}@anchor{1a7} @subsection Default Settings @@ -21742,7 +21764,7 @@ checking, but it has no effect on the method used for computing intermediate results. @node Implementation Notes,,Default Settings,Overflow Check Handling in GNAT -@anchor{gnat_ugn/gnat_and_program_execution id50}@anchor{1a7}@anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1a8} +@anchor{gnat_ugn/gnat_and_program_execution id50}@anchor{1a8}@anchor{gnat_ugn/gnat_and_program_execution implementation-notes}@anchor{1a9} @subsection Implementation Notes @@ -21790,7 +21812,7 @@ platforms for which @code{Long_Long_Integer} is 64-bits (nearly all GNAT platforms). @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{14c}@anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{1a9} +@anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{14d}@anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{1aa} @section Performing Dimensionality Analysis in GNAT @@ -22193,7 +22215,7 @@ package Mks_Numerics is new @end quotation @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{14d}@anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{1aa} +@anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{14e}@anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{1ab} @section Stack Related Facilities @@ -22209,7 +22231,7 @@ particular, it deals with dynamic and static stack usage measurements. @end menu @node Stack Overflow Checking,Static Stack Usage Analysis,,Stack Related Facilities -@anchor{gnat_ugn/gnat_and_program_execution id53}@anchor{1ab}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{e7} +@anchor{gnat_ugn/gnat_and_program_execution id53}@anchor{1ac}@anchor{gnat_ugn/gnat_and_program_execution stack-overflow-checking}@anchor{e7} @subsection Stack Overflow Checking @@ -22246,7 +22268,7 @@ If the space is exceeded, then a @code{Storage_Error} exception is raised. For declared tasks, the default stack size is defined by the GNAT runtime, whose size may be modified at bind time through the @code{-d} bind switch -(@ref{112,,Switches for gnatbind}). Task specific stack sizes may be set using the +(@ref{113,,Switches for gnatbind}). Task specific stack sizes may be set using the @code{Storage_Size} pragma. For the environment task, the stack size is determined by the operating system. @@ -22254,7 +22276,7 @@ Consequently, to modify the size of the environment task please refer to your operating system documentation. @node Static Stack Usage Analysis,Dynamic Stack Usage Analysis,Stack Overflow Checking,Stack Related Facilities -@anchor{gnat_ugn/gnat_and_program_execution id54}@anchor{1ac}@anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{e8} +@anchor{gnat_ugn/gnat_and_program_execution id54}@anchor{1ad}@anchor{gnat_ugn/gnat_and_program_execution static-stack-usage-analysis}@anchor{e8} @subsection Static Stack Usage Analysis @@ -22303,7 +22325,7 @@ subprogram whose stack usage might be larger than the specified amount of bytes. The wording is in keeping with the qualifier documented above. @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities -@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{115}@anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1ad} +@anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{116}@anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1ae} @subsection Dynamic Stack Usage Analysis @@ -22385,7 +22407,7 @@ The package @code{GNAT.Task_Stack_Usage} provides facilities to get stack-usage reports at run time. See its body for the details. @node Memory Management Issues,,Stack Related Facilities,GNAT and Program Execution -@anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{14e}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{1ae} +@anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{14f}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{1af} @section Memory Management Issues @@ -22401,7 +22423,7 @@ incorrect uses of access values (including ‘dangling references’). @end menu @node Some Useful Memory Pools,The GNAT Debug Pool Facility,,Memory Management Issues -@anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1af}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1b0} +@anchor{gnat_ugn/gnat_and_program_execution id57}@anchor{1b0}@anchor{gnat_ugn/gnat_and_program_execution some-useful-memory-pools}@anchor{1b1} @subsection Some Useful Memory Pools @@ -22482,7 +22504,7 @@ for T1'Storage_Size use 10_000; @end quotation @node The GNAT Debug Pool Facility,,Some Useful Memory Pools,Memory Management Issues -@anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1b1}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1b2} +@anchor{gnat_ugn/gnat_and_program_execution id58}@anchor{1b2}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debug-pool-facility}@anchor{1b3} @subsection The GNAT Debug Pool Facility @@ -22645,7 +22667,7 @@ Debug Pool info: @c -- E.g. Ada |nbsp| 95 @node Platform-Specific Information,Example of Binder Output File,GNAT and Program Execution,Top -@anchor{gnat_ugn/platform_specific_information doc}@anchor{1b3}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1b4}@anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d} +@anchor{gnat_ugn/platform_specific_information doc}@anchor{1b4}@anchor{gnat_ugn/platform_specific_information id1}@anchor{1b5}@anchor{gnat_ugn/platform_specific_information platform-specific-information}@anchor{d} @chapter Platform-Specific Information @@ -22663,7 +22685,7 @@ related to the GNAT implementation on specific Operating Systems. @end menu @node Run-Time Libraries,Specifying a Run-Time Library,,Platform-Specific Information -@anchor{gnat_ugn/platform_specific_information id2}@anchor{1b5}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{1b6} +@anchor{gnat_ugn/platform_specific_information id2}@anchor{1b6}@anchor{gnat_ugn/platform_specific_information run-time-libraries}@anchor{1b7} @section Run-Time Libraries @@ -22724,7 +22746,7 @@ are supplied on various GNAT platforms. @end menu @node Summary of Run-Time Configurations,,,Run-Time Libraries -@anchor{gnat_ugn/platform_specific_information id3}@anchor{1b7}@anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1b8} +@anchor{gnat_ugn/platform_specific_information id3}@anchor{1b8}@anchor{gnat_ugn/platform_specific_information summary-of-run-time-configurations}@anchor{1b9} @subsection Summary of Run-Time Configurations @@ -22824,7 +22846,7 @@ ZCX @node Specifying a Run-Time Library,GNU/Linux Topics,Run-Time Libraries,Platform-Specific Information -@anchor{gnat_ugn/platform_specific_information id4}@anchor{1b9}@anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1ba} +@anchor{gnat_ugn/platform_specific_information id4}@anchor{1ba}@anchor{gnat_ugn/platform_specific_information specifying-a-run-time-library}@anchor{1bb} @section Specifying a Run-Time Library @@ -22917,7 +22939,7 @@ achieved by using the @code{--RTS} switch, e.g., @code{--RTS=sjlj} @geindex GNU/Linux @node GNU/Linux Topics,Microsoft Windows Topics,Specifying a Run-Time Library,Platform-Specific Information -@anchor{gnat_ugn/platform_specific_information gnu-linux-topics}@anchor{1bb}@anchor{gnat_ugn/platform_specific_information id5}@anchor{1bc} +@anchor{gnat_ugn/platform_specific_information gnu-linux-topics}@anchor{1bc}@anchor{gnat_ugn/platform_specific_information id5}@anchor{1bd} @section GNU/Linux Topics @@ -22932,7 +22954,7 @@ This section describes topics that are specific to GNU/Linux platforms. @end menu @node Required Packages on GNU/Linux,Position Independent Executable PIE Enabled by Default on Linux,,GNU/Linux Topics -@anchor{gnat_ugn/platform_specific_information id6}@anchor{1bd}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1be} +@anchor{gnat_ugn/platform_specific_information id6}@anchor{1be}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1bf} @subsection Required Packages on GNU/Linux @@ -22969,7 +22991,7 @@ Other GNU/Linux distributions might be choosing a different name for those packages. @node Position Independent Executable PIE Enabled by Default on Linux,Choosing the Scheduling Policy with GNU/Linux,Required Packages on GNU/Linux,GNU/Linux Topics -@anchor{gnat_ugn/platform_specific_information pie-enabled-by-default-on-linux}@anchor{1bf}@anchor{gnat_ugn/platform_specific_information position-independent-executable-pie-enabled-by-default-on-linux}@anchor{1c0} +@anchor{gnat_ugn/platform_specific_information pie-enabled-by-default-on-linux}@anchor{1c0}@anchor{gnat_ugn/platform_specific_information position-independent-executable-pie-enabled-by-default-on-linux}@anchor{1c1} @subsection Position Independent Executable (PIE) Enabled by Default on Linux @@ -23011,7 +23033,7 @@ From there, to be able to link your binaries with PIE and therefore drop the @code{-no-pie} workaround, you’ll need to get the identified dependencies rebuilt with PIE enabled (compiled with @code{-fPIE} and linked with @code{-pie}). -@anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-gnu-linux}@anchor{1c1} +@anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-gnu-linux}@anchor{1c2} @geindex SCHED_FIFO scheduling policy @geindex SCHED_RR scheduling policy @@ -23019,7 +23041,7 @@ and linked with @code{-pie}). @geindex SCHED_OTHER scheduling policy @node Choosing the Scheduling Policy with GNU/Linux,A GNU/Linux Debug Quirk,Position Independent Executable PIE Enabled by Default on Linux,GNU/Linux Topics -@anchor{gnat_ugn/platform_specific_information id7}@anchor{1c2} +@anchor{gnat_ugn/platform_specific_information id7}@anchor{1c3} @subsection Choosing the Scheduling Policy with GNU/Linux @@ -23077,7 +23099,7 @@ but not on the host machine running the container, so check that you also have sufficient priviledge for running the container image. @node A GNU/Linux Debug Quirk,,Choosing the Scheduling Policy with GNU/Linux,GNU/Linux Topics -@anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1c3}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1c4} +@anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1c4}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1c5} @subsection A GNU/Linux Debug Quirk @@ -23097,7 +23119,7 @@ the symptoms most commonly observed. @geindex Windows @node Microsoft Windows Topics,Mac OS Topics,GNU/Linux Topics,Platform-Specific Information -@anchor{gnat_ugn/platform_specific_information id9}@anchor{1c5}@anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{1c6} +@anchor{gnat_ugn/platform_specific_information id9}@anchor{1c6}@anchor{gnat_ugn/platform_specific_information microsoft-windows-topics}@anchor{1c7} @section Microsoft Windows Topics @@ -23119,7 +23141,7 @@ platforms. @end menu @node Using GNAT on Windows,Using a network installation of GNAT,,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information id10}@anchor{1c7}@anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1c8} +@anchor{gnat_ugn/platform_specific_information id10}@anchor{1c8}@anchor{gnat_ugn/platform_specific_information using-gnat-on-windows}@anchor{1c9} @subsection Using GNAT on Windows @@ -23196,7 +23218,7 @@ uninstall or integrate different GNAT products. @end itemize @node Using a network installation of GNAT,CONSOLE and WINDOWS subsystems,Using GNAT on Windows,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information id11}@anchor{1c9}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1ca} +@anchor{gnat_ugn/platform_specific_information id11}@anchor{1ca}@anchor{gnat_ugn/platform_specific_information using-a-network-installation-of-gnat}@anchor{1cb} @subsection Using a network installation of GNAT @@ -23223,7 +23245,7 @@ transfer of large amounts of data across the network and will likely cause serious performance penalty. @node CONSOLE and WINDOWS subsystems,Temporary Files,Using a network installation of GNAT,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1cb}@anchor{gnat_ugn/platform_specific_information id12}@anchor{1cc} +@anchor{gnat_ugn/platform_specific_information console-and-windows-subsystems}@anchor{1cc}@anchor{gnat_ugn/platform_specific_information id12}@anchor{1cd} @subsection CONSOLE and WINDOWS subsystems @@ -23248,7 +23270,7 @@ $ gnatmake winprog -largs -mwindows @end quotation @node Temporary Files,Disabling Command Line Argument Expansion,CONSOLE and WINDOWS subsystems,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information id13}@anchor{1cd}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1ce} +@anchor{gnat_ugn/platform_specific_information id13}@anchor{1ce}@anchor{gnat_ugn/platform_specific_information temporary-files}@anchor{1cf} @subsection Temporary Files @@ -23287,7 +23309,7 @@ environments where you may not have write access to some directories. @node Disabling Command Line Argument Expansion,Choosing the Scheduling Policy with Windows,Temporary Files,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information disabling-command-line-argument-expansion}@anchor{1cf} +@anchor{gnat_ugn/platform_specific_information disabling-command-line-argument-expansion}@anchor{1d0} @subsection Disabling Command Line Argument Expansion @@ -23358,7 +23380,7 @@ Ada.Command_Line.Argument (1) -> "'*.txt'" @end example @node Choosing the Scheduling Policy with Windows,Windows Socket Timeouts,Disabling Command Line Argument Expansion,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-windows}@anchor{1d0}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1d1} +@anchor{gnat_ugn/platform_specific_information choosing-the-scheduling-policy-with-windows}@anchor{1d1}@anchor{gnat_ugn/platform_specific_information id14}@anchor{1d2} @subsection Choosing the Scheduling Policy with Windows @@ -23376,7 +23398,7 @@ in @code{system.ads}. For more information about Windows priorities, please refer to Microsoft’s documentation. @node Windows Socket Timeouts,Mixed-Language Programming on Windows,Choosing the Scheduling Policy with Windows,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information windows-socket-timeouts}@anchor{1d2} +@anchor{gnat_ugn/platform_specific_information windows-socket-timeouts}@anchor{1d3} @subsection Windows Socket Timeouts @@ -23422,7 +23444,7 @@ shorter than 500 ms is needed on these Windows versions, a call to Check_Selector should be added before any socket read or write operations. @node Mixed-Language Programming on Windows,Windows Specific Add-Ons,Windows Socket Timeouts,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information id15}@anchor{1d3}@anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1d4} +@anchor{gnat_ugn/platform_specific_information id15}@anchor{1d4}@anchor{gnat_ugn/platform_specific_information mixed-language-programming-on-windows}@anchor{1d5} @subsection Mixed-Language Programming on Windows @@ -23444,12 +23466,12 @@ to use the Microsoft tools for your C++ code, you have two choices: Encapsulate your C++ code in a DLL to be linked with your Ada application. In this case, use the Microsoft or whatever environment to build the DLL and use GNAT to build your executable -(@ref{1d5,,Using DLLs with GNAT}). +(@ref{1d6,,Using DLLs with GNAT}). @item Or you can encapsulate your Ada code in a DLL to be linked with the other part of your application. In this case, use GNAT to build the DLL -(@ref{1d6,,Building DLLs with GNAT Project files}) and use the Microsoft +(@ref{1d7,,Building DLLs with GNAT Project files}) and use the Microsoft or whatever environment to build your executable. @end itemize @@ -23506,7 +23528,7 @@ native SEH support is used. @end menu @node Windows Calling Conventions,Introduction to Dynamic Link Libraries DLLs,,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information id16}@anchor{1d7}@anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1d8} +@anchor{gnat_ugn/platform_specific_information id16}@anchor{1d8}@anchor{gnat_ugn/platform_specific_information windows-calling-conventions}@anchor{1d9} @subsubsection Windows Calling Conventions @@ -23551,7 +23573,7 @@ are available for Windows: @end menu @node C Calling Convention,Stdcall Calling Convention,,Windows Calling Conventions -@anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1d9}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1da} +@anchor{gnat_ugn/platform_specific_information c-calling-convention}@anchor{1da}@anchor{gnat_ugn/platform_specific_information id17}@anchor{1db} @subsubsection @code{C} Calling Convention @@ -23593,10 +23615,10 @@ is missing, as in the above example, this parameter is set to be the When importing a variable defined in C, you should always use the @code{C} calling convention unless the object containing the variable is part of a DLL (in which case you should use the @code{Stdcall} calling -convention, @ref{1db,,Stdcall Calling Convention}). +convention, @ref{1dc,,Stdcall Calling Convention}). @node Stdcall Calling Convention,Win32 Calling Convention,C Calling Convention,Windows Calling Conventions -@anchor{gnat_ugn/platform_specific_information id18}@anchor{1dc}@anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1db} +@anchor{gnat_ugn/platform_specific_information id18}@anchor{1dd}@anchor{gnat_ugn/platform_specific_information stdcall-calling-convention}@anchor{1dc} @subsubsection @code{Stdcall} Calling Convention @@ -23693,7 +23715,7 @@ Note that to ease building cross-platform bindings this convention will be handled as a @code{C} calling convention on non-Windows platforms. @node Win32 Calling Convention,DLL Calling Convention,Stdcall Calling Convention,Windows Calling Conventions -@anchor{gnat_ugn/platform_specific_information id19}@anchor{1dd}@anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1de} +@anchor{gnat_ugn/platform_specific_information id19}@anchor{1de}@anchor{gnat_ugn/platform_specific_information win32-calling-convention}@anchor{1df} @subsubsection @code{Win32} Calling Convention @@ -23701,7 +23723,7 @@ This convention, which is GNAT-specific is fully equivalent to the @code{Stdcall} calling convention described above. @node DLL Calling Convention,,Win32 Calling Convention,Windows Calling Conventions -@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1df}@anchor{gnat_ugn/platform_specific_information id20}@anchor{1e0} +@anchor{gnat_ugn/platform_specific_information dll-calling-convention}@anchor{1e0}@anchor{gnat_ugn/platform_specific_information id20}@anchor{1e1} @subsubsection @code{DLL} Calling Convention @@ -23709,7 +23731,7 @@ This convention, which is GNAT-specific is fully equivalent to the @code{Stdcall} calling convention described above. @node Introduction to Dynamic Link Libraries DLLs,Using DLLs with GNAT,Windows Calling Conventions,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information id21}@anchor{1e1}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1e2} +@anchor{gnat_ugn/platform_specific_information id21}@anchor{1e2}@anchor{gnat_ugn/platform_specific_information introduction-to-dynamic-link-libraries-dlls}@anchor{1e3} @subsubsection Introduction to Dynamic Link Libraries (DLLs) @@ -23793,10 +23815,10 @@ As a side note, an interesting difference between Microsoft DLLs and Unix shared libraries, is the fact that on most Unix systems all public routines are exported by default in a Unix shared library, while under Windows it is possible (but not required) to list exported routines in -a definition file (see @ref{1e3,,The Definition File}). +a definition file (see @ref{1e4,,The Definition File}). @node Using DLLs with GNAT,Building DLLs with GNAT Project files,Introduction to Dynamic Link Libraries DLLs,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information id22}@anchor{1e4}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1d5} +@anchor{gnat_ugn/platform_specific_information id22}@anchor{1e5}@anchor{gnat_ugn/platform_specific_information using-dlls-with-gnat}@anchor{1d6} @subsubsection Using DLLs with GNAT @@ -23887,7 +23909,7 @@ example a fictitious DLL called @code{API.dll}. @end menu @node Creating an Ada Spec for the DLL Services,Creating an Import Library,,Using DLLs with GNAT -@anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1e5}@anchor{gnat_ugn/platform_specific_information id23}@anchor{1e6} +@anchor{gnat_ugn/platform_specific_information creating-an-ada-spec-for-the-dll-services}@anchor{1e6}@anchor{gnat_ugn/platform_specific_information id23}@anchor{1e7} @subsubsection Creating an Ada Spec for the DLL Services @@ -23927,7 +23949,7 @@ end API; @end quotation @node Creating an Import Library,,Creating an Ada Spec for the DLL Services,Using DLLs with GNAT -@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1e7}@anchor{gnat_ugn/platform_specific_information id24}@anchor{1e8} +@anchor{gnat_ugn/platform_specific_information creating-an-import-library}@anchor{1e8}@anchor{gnat_ugn/platform_specific_information id24}@anchor{1e9} @subsubsection Creating an Import Library @@ -23941,7 +23963,7 @@ as in this case it is possible to link directly against the DLL. Otherwise read on. @geindex Definition file -@anchor{gnat_ugn/platform_specific_information the-definition-file}@anchor{1e3} +@anchor{gnat_ugn/platform_specific_information the-definition-file}@anchor{1e4} @subsubheading The Definition File @@ -23989,17 +24011,17 @@ EXPORTS @end table Note that you must specify the correct suffix (@code{@@@var{nn}}) -(see @ref{1d8,,Windows Calling Conventions}) for a Stdcall +(see @ref{1d9,,Windows Calling Conventions}) for a Stdcall calling convention function in the exported symbols list. There can actually be other sections in a definition file, but these sections are not relevant to the discussion at hand. -@anchor{gnat_ugn/platform_specific_information create-def-file-automatically}@anchor{1e9} +@anchor{gnat_ugn/platform_specific_information create-def-file-automatically}@anchor{1ea} @subsubheading Creating a Definition File Automatically You can automatically create the definition file @code{API.def} -(see @ref{1e3,,The Definition File}) from a DLL. +(see @ref{1e4,,The Definition File}) from a DLL. For that use the @code{dlltool} program as follows: @quotation @@ -24009,7 +24031,7 @@ $ dlltool API.dll -z API.def --export-all-symbols @end example Note that if some routines in the DLL have the @code{Stdcall} convention -(@ref{1d8,,Windows Calling Conventions}) with stripped @code{@@@var{nn}} +(@ref{1d9,,Windows Calling Conventions}) with stripped @code{@@@var{nn}} suffix then you’ll have to edit @code{api.def} to add it, and specify @code{-k} to @code{gnatdll} when creating the import library. @@ -24033,13 +24055,13 @@ tells you what symbol is expected. You just have to go back to the definition file and add the right suffix. @end itemize @end quotation -@anchor{gnat_ugn/platform_specific_information gnat-style-import-library}@anchor{1ea} +@anchor{gnat_ugn/platform_specific_information gnat-style-import-library}@anchor{1eb} @subsubheading GNAT-Style Import Library To create a static import library from @code{API.dll} with the GNAT tools you should create the .def file, then use @code{gnatdll} tool -(see @ref{1eb,,Using gnatdll}) as follows: +(see @ref{1ec,,Using gnatdll}) as follows: @quotation @@ -24055,15 +24077,15 @@ definition file name is @code{xyz.def}, the import library name will be @code{libxyz.a}. Note that in the previous example option @code{-e} could have been removed because the name of the definition file (before the @code{.def} suffix) is the same as the name of the -DLL (@ref{1eb,,Using gnatdll} for more information about @code{gnatdll}). +DLL (@ref{1ec,,Using gnatdll} for more information about @code{gnatdll}). @end quotation -@anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{1ec} +@anchor{gnat_ugn/platform_specific_information msvs-style-import-library}@anchor{1ed} @subsubheading Microsoft-Style Import Library A Microsoft import library is needed only if you plan to make an Ada DLL available to applications developed with Microsoft -tools (@ref{1d4,,Mixed-Language Programming on Windows}). +tools (@ref{1d5,,Mixed-Language Programming on Windows}). To create a Microsoft-style import library for @code{API.dll} you should create the .def file, then build the actual import library using @@ -24087,7 +24109,7 @@ See the Microsoft documentation for further details about the usage of @end quotation @node Building DLLs with GNAT Project files,Building DLLs with GNAT,Using DLLs with GNAT,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1d6}@anchor{gnat_ugn/platform_specific_information id25}@anchor{1ed} +@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat-project-files}@anchor{1d7}@anchor{gnat_ugn/platform_specific_information id25}@anchor{1ee} @subsubsection Building DLLs with GNAT Project files @@ -24103,7 +24125,7 @@ when inside the @code{DllMain} routine which is used for auto-initialization of shared libraries, so it is not possible to have library level tasks in SALs. @node Building DLLs with GNAT,Building DLLs with gnatdll,Building DLLs with GNAT Project files,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{1ee}@anchor{gnat_ugn/platform_specific_information id26}@anchor{1ef} +@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnat}@anchor{1ef}@anchor{gnat_ugn/platform_specific_information id26}@anchor{1f0} @subsubsection Building DLLs with GNAT @@ -24134,7 +24156,7 @@ $ gcc -shared -shared-libgcc -o api.dll obj1.o obj2.o ... It is important to note that in this case all symbols found in the object files are automatically exported. It is possible to restrict the set of symbols to export by passing to @code{gcc} a definition -file (see @ref{1e3,,The Definition File}). +file (see @ref{1e4,,The Definition File}). For example: @example @@ -24172,7 +24194,7 @@ $ gnatmake main -Iapilib -bargs -shared -largs -Lapilib -lAPI @end quotation @node Building DLLs with gnatdll,Ada DLLs and Finalization,Building DLLs with GNAT,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{1f0}@anchor{gnat_ugn/platform_specific_information id27}@anchor{1f1} +@anchor{gnat_ugn/platform_specific_information building-dlls-with-gnatdll}@anchor{1f1}@anchor{gnat_ugn/platform_specific_information id27}@anchor{1f2} @subsubsection Building DLLs with gnatdll @@ -24180,8 +24202,8 @@ $ gnatmake main -Iapilib -bargs -shared -largs -Lapilib -lAPI @geindex building Note that it is preferred to use GNAT Project files -(@ref{1d6,,Building DLLs with GNAT Project files}) or the built-in GNAT -DLL support (@ref{1ee,,Building DLLs with GNAT}) or to build DLLs. +(@ref{1d7,,Building DLLs with GNAT Project files}) or the built-in GNAT +DLL support (@ref{1ef,,Building DLLs with GNAT}) or to build DLLs. This section explains how to build DLLs containing Ada code using @code{gnatdll}. These DLLs will be referred to as Ada DLLs in the @@ -24197,20 +24219,20 @@ non-Ada applications are as follows: You need to mark each Ada entity exported by the DLL with a @code{C} or @code{Stdcall} calling convention to avoid any Ada name mangling for the entities exported by the DLL -(see @ref{1f2,,Exporting Ada Entities}). You can +(see @ref{1f3,,Exporting Ada Entities}). You can skip this step if you plan to use the Ada DLL only from Ada applications. @item Your Ada code must export an initialization routine which calls the routine @code{adainit} generated by @code{gnatbind} to perform the elaboration of -the Ada code in the DLL (@ref{1f3,,Ada DLLs and Elaboration}). The initialization +the Ada code in the DLL (@ref{1f4,,Ada DLLs and Elaboration}). The initialization routine exported by the Ada DLL must be invoked by the clients of the DLL to initialize the DLL. @item When useful, the DLL should also export a finalization routine which calls routine @code{adafinal} generated by @code{gnatbind} to perform the -finalization of the Ada code in the DLL (@ref{1f4,,Ada DLLs and Finalization}). +finalization of the Ada code in the DLL (@ref{1f5,,Ada DLLs and Finalization}). The finalization routine exported by the Ada DLL must be invoked by the clients of the DLL when the DLL services are no further needed. @@ -24220,11 +24242,11 @@ of the programming languages to which you plan to make the DLL available. @item You must provide a definition file listing the exported entities -(@ref{1e3,,The Definition File}). +(@ref{1e4,,The Definition File}). @item Finally you must use @code{gnatdll} to produce the DLL and the import -library (@ref{1eb,,Using gnatdll}). +library (@ref{1ec,,Using gnatdll}). @end itemize Note that a relocatable DLL stripped using the @code{strip} @@ -24244,7 +24266,7 @@ chapter of the `GPRbuild User’s Guide'. @end menu @node Limitations When Using Ada DLLs from Ada,Exporting Ada Entities,,Building DLLs with gnatdll -@anchor{gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada}@anchor{1f5} +@anchor{gnat_ugn/platform_specific_information limitations-when-using-ada-dlls-from-ada}@anchor{1f6} @subsubsection Limitations When Using Ada DLLs from Ada @@ -24265,7 +24287,7 @@ It is completely safe to exchange plain elementary, array or record types, Windows object handles, etc. @node Exporting Ada Entities,Ada DLLs and Elaboration,Limitations When Using Ada DLLs from Ada,Building DLLs with gnatdll -@anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{1f2}@anchor{gnat_ugn/platform_specific_information id28}@anchor{1f6} +@anchor{gnat_ugn/platform_specific_information exporting-ada-entities}@anchor{1f3}@anchor{gnat_ugn/platform_specific_information id28}@anchor{1f7} @subsubsection Exporting Ada Entities @@ -24365,10 +24387,10 @@ end API; Note that if you do not export the Ada entities with a @code{C} or @code{Stdcall} convention you will have to provide the mangled Ada names in the definition file of the Ada DLL -(@ref{1f7,,Creating the Definition File}). +(@ref{1f8,,Creating the Definition File}). @node Ada DLLs and Elaboration,,Exporting Ada Entities,Building DLLs with gnatdll -@anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{1f3}@anchor{gnat_ugn/platform_specific_information id29}@anchor{1f8} +@anchor{gnat_ugn/platform_specific_information ada-dlls-and-elaboration}@anchor{1f4}@anchor{gnat_ugn/platform_specific_information id29}@anchor{1f9} @subsubsection Ada DLLs and Elaboration @@ -24386,7 +24408,7 @@ the Ada elaboration routine @code{adainit} generated by the GNAT binder (@ref{7e,,Binding with Non-Ada Main Programs}). See the body of @code{Initialize_Api} for an example. Note that the GNAT binder is automatically invoked during the DLL build process by the @code{gnatdll} -tool (@ref{1eb,,Using gnatdll}). +tool (@ref{1ec,,Using gnatdll}). When a DLL is loaded, Windows systematically invokes a routine called @code{DllMain}. It would therefore be possible to call @code{adainit} @@ -24399,7 +24421,7 @@ time), which means that the GNAT run-time will deadlock waiting for the newly created task to complete its initialization. @node Ada DLLs and Finalization,Creating a Spec for Ada DLLs,Building DLLs with gnatdll,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{1f4}@anchor{gnat_ugn/platform_specific_information id30}@anchor{1f9} +@anchor{gnat_ugn/platform_specific_information ada-dlls-and-finalization}@anchor{1f5}@anchor{gnat_ugn/platform_specific_information id30}@anchor{1fa} @subsubsection Ada DLLs and Finalization @@ -24414,10 +24436,10 @@ routine @code{adafinal} generated by the GNAT binder See the body of @code{Finalize_Api} for an example. As already pointed out the GNAT binder is automatically invoked during the DLL build process by the @code{gnatdll} tool -(@ref{1eb,,Using gnatdll}). +(@ref{1ec,,Using gnatdll}). @node Creating a Spec for Ada DLLs,GNAT and Windows Resources,Ada DLLs and Finalization,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{1fa}@anchor{gnat_ugn/platform_specific_information id31}@anchor{1fb} +@anchor{gnat_ugn/platform_specific_information creating-a-spec-for-ada-dlls}@anchor{1fb}@anchor{gnat_ugn/platform_specific_information id31}@anchor{1fc} @subsubsection Creating a Spec for Ada DLLs @@ -24475,7 +24497,7 @@ end API; @end menu @node Creating the Definition File,Using gnatdll,,Creating a Spec for Ada DLLs -@anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{1f7}@anchor{gnat_ugn/platform_specific_information id32}@anchor{1fc} +@anchor{gnat_ugn/platform_specific_information creating-the-definition-file}@anchor{1f8}@anchor{gnat_ugn/platform_specific_information id32}@anchor{1fd} @subsubsection Creating the Definition File @@ -24511,7 +24533,7 @@ EXPORTS @end quotation @node Using gnatdll,,Creating the Definition File,Creating a Spec for Ada DLLs -@anchor{gnat_ugn/platform_specific_information id33}@anchor{1fd}@anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{1eb} +@anchor{gnat_ugn/platform_specific_information id33}@anchor{1fe}@anchor{gnat_ugn/platform_specific_information using-gnatdll}@anchor{1ec} @subsubsection Using @code{gnatdll} @@ -24722,7 +24744,7 @@ asks @code{gnatlink} to generate the routines @code{DllMain} and is loaded into memory. @item -@code{gnatdll} uses @code{dlltool} (see @ref{1fe,,Using dlltool}) to build the +@code{gnatdll} uses @code{dlltool} (see @ref{1ff,,Using dlltool}) to build the export table (@code{api.exp}). The export table contains the relocation information in a form which can be used during the final link to ensure that the Windows loader is able to place the DLL anywhere in memory. @@ -24761,7 +24783,7 @@ $ gnatbind -n api $ gnatlink api api.exp -o api.dll -mdll @end example @end itemize -@anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{1fe} +@anchor{gnat_ugn/platform_specific_information using-dlltool}@anchor{1ff} @subsubheading Using @code{dlltool} @@ -24820,7 +24842,7 @@ DLL in the static import library generated by @code{dlltool} with switch @item @code{-k} Kill @code{@@@var{nn}} from exported names -(@ref{1d8,,Windows Calling Conventions} +(@ref{1d9,,Windows Calling Conventions} for a discussion about @code{Stdcall}-style symbols). @end table @@ -24876,7 +24898,7 @@ Use @code{assembler-name} as the assembler. The default is @code{as}. @end table @node GNAT and Windows Resources,Using GNAT DLLs from Microsoft Visual Studio Applications,Creating a Spec for Ada DLLs,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{1ff}@anchor{gnat_ugn/platform_specific_information id34}@anchor{200} +@anchor{gnat_ugn/platform_specific_information gnat-and-windows-resources}@anchor{200}@anchor{gnat_ugn/platform_specific_information id34}@anchor{201} @subsubsection GNAT and Windows Resources @@ -24971,7 +24993,7 @@ the corresponding Microsoft documentation. @end menu @node Building Resources,Compiling Resources,,GNAT and Windows Resources -@anchor{gnat_ugn/platform_specific_information building-resources}@anchor{201}@anchor{gnat_ugn/platform_specific_information id35}@anchor{202} +@anchor{gnat_ugn/platform_specific_information building-resources}@anchor{202}@anchor{gnat_ugn/platform_specific_information id35}@anchor{203} @subsubsection Building Resources @@ -24991,7 +25013,7 @@ complete description of the resource script language can be found in the Microsoft documentation. @node Compiling Resources,Using Resources,Building Resources,GNAT and Windows Resources -@anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{203}@anchor{gnat_ugn/platform_specific_information id36}@anchor{204} +@anchor{gnat_ugn/platform_specific_information compiling-resources}@anchor{204}@anchor{gnat_ugn/platform_specific_information id36}@anchor{205} @subsubsection Compiling Resources @@ -25033,7 +25055,7 @@ $ windres -i myres.res -o myres.o @end quotation @node Using Resources,,Compiling Resources,GNAT and Windows Resources -@anchor{gnat_ugn/platform_specific_information id37}@anchor{205}@anchor{gnat_ugn/platform_specific_information using-resources}@anchor{206} +@anchor{gnat_ugn/platform_specific_information id37}@anchor{206}@anchor{gnat_ugn/platform_specific_information using-resources}@anchor{207} @subsubsection Using Resources @@ -25053,7 +25075,7 @@ $ gnatmake myprog -largs myres.o @end quotation @node Using GNAT DLLs from Microsoft Visual Studio Applications,Debugging a DLL,GNAT and Windows Resources,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information using-gnat-dll-from-msvs}@anchor{207}@anchor{gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications}@anchor{208} +@anchor{gnat_ugn/platform_specific_information using-gnat-dll-from-msvs}@anchor{208}@anchor{gnat_ugn/platform_specific_information using-gnat-dlls-from-microsoft-visual-studio-applications}@anchor{209} @subsubsection Using GNAT DLLs from Microsoft Visual Studio Applications @@ -25087,7 +25109,7 @@ $ gprbuild -p mylib.gpr @item Produce a .def file for the symbols you need to interface with, either by hand or automatically with possibly some manual adjustments -(see @ref{1e9,,Creating Definition File Automatically}): +(see @ref{1ea,,Creating Definition File Automatically}): @end enumerate @quotation @@ -25104,7 +25126,7 @@ $ dlltool libmylib.dll -z libmylib.def --export-all-symbols Make sure that MSVS command-line tools are accessible on the path. @item -Create the Microsoft-style import library (see @ref{1ec,,MSVS-Style Import Library}): +Create the Microsoft-style import library (see @ref{1ed,,MSVS-Style Import Library}): @end enumerate @quotation @@ -25146,7 +25168,7 @@ or copy the DLL into into the directory containing the .exe. @end enumerate @node Debugging a DLL,Setting Stack Size from gnatlink,Using GNAT DLLs from Microsoft Visual Studio Applications,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{209}@anchor{gnat_ugn/platform_specific_information id38}@anchor{20a} +@anchor{gnat_ugn/platform_specific_information debugging-a-dll}@anchor{20a}@anchor{gnat_ugn/platform_specific_information id38}@anchor{20b} @subsubsection Debugging a DLL @@ -25184,7 +25206,7 @@ tools suite used to build the DLL. @end menu @node Program and DLL Both Built with GCC/GNAT,Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Debugging a DLL -@anchor{gnat_ugn/platform_specific_information id39}@anchor{20b}@anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{20c} +@anchor{gnat_ugn/platform_specific_information id39}@anchor{20c}@anchor{gnat_ugn/platform_specific_information program-and-dll-both-built-with-gcc-gnat}@anchor{20d} @subsubsection Program and DLL Both Built with GCC/GNAT @@ -25194,7 +25216,7 @@ the process. Let’s suppose here that the main procedure is named @code{ada_main} and that in the DLL there is an entry point named @code{ada_dll}. -The DLL (@ref{1e2,,Introduction to Dynamic Link Libraries (DLLs)}) and +The DLL (@ref{1e3,,Introduction to Dynamic Link Libraries (DLLs)}) and program must have been built with the debugging information (see GNAT -g switch). Here are the step-by-step instructions for debugging it: @@ -25231,10 +25253,10 @@ Set a breakpoint inside the DLL At this stage a breakpoint is set inside the DLL. From there on you can use the standard approach to debug the whole program -(@ref{14f,,Running and Debugging Ada Programs}). +(@ref{150,,Running and Debugging Ada Programs}). @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL -@anchor{gnat_ugn/platform_specific_information id40}@anchor{20d}@anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{20e} +@anchor{gnat_ugn/platform_specific_information id40}@anchor{20e}@anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{20f} @subsubsection Program Built with Foreign Tools and DLL Built with GCC/GNAT @@ -25251,7 +25273,7 @@ example some C code built with Microsoft Visual C) and that there is a DLL named @code{test.dll} containing an Ada entry point named @code{ada_dll}. -The DLL (see @ref{1e2,,Introduction to Dynamic Link Libraries (DLLs)}) must have +The DLL (see @ref{1e3,,Introduction to Dynamic Link Libraries (DLLs)}) must have been built with debugging information (see the GNAT @code{-g} option). @subsubheading Debugging the DLL Directly @@ -25317,7 +25339,7 @@ Continue the program. This will run the program until it reaches the breakpoint that has been set. From that point you can use the standard way to debug a program -as described in (@ref{14f,,Running and Debugging Ada Programs}). +as described in (@ref{150,,Running and Debugging Ada Programs}). @end itemize It is also possible to debug the DLL by attaching to a running process. @@ -25387,10 +25409,10 @@ Continue process execution. This last step will resume the process execution, and stop at the breakpoint we have set. From there you can use the standard approach to debug a program as described in -@ref{14f,,Running and Debugging Ada Programs}. +@ref{150,,Running and Debugging Ada Programs}. @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information id41}@anchor{20f}@anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{129} +@anchor{gnat_ugn/platform_specific_information id41}@anchor{210}@anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{12a} @subsubsection Setting Stack Size from @code{gnatlink} @@ -25433,7 +25455,7 @@ because the comma is a separator for this option. @end itemize @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows -@anchor{gnat_ugn/platform_specific_information id42}@anchor{210}@anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{12a} +@anchor{gnat_ugn/platform_specific_information id42}@anchor{211}@anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{12b} @subsubsection Setting Heap Size from @code{gnatlink} @@ -25466,7 +25488,7 @@ because the comma is a separator for this option. @end itemize @node Windows Specific Add-Ons,,Mixed-Language Programming on Windows,Microsoft Windows Topics -@anchor{gnat_ugn/platform_specific_information win32-specific-addons}@anchor{211}@anchor{gnat_ugn/platform_specific_information windows-specific-add-ons}@anchor{212} +@anchor{gnat_ugn/platform_specific_information win32-specific-addons}@anchor{212}@anchor{gnat_ugn/platform_specific_information windows-specific-add-ons}@anchor{213} @subsection Windows Specific Add-Ons @@ -25479,7 +25501,7 @@ This section describes the Windows specific add-ons. @end menu @node Win32Ada,wPOSIX,,Windows Specific Add-Ons -@anchor{gnat_ugn/platform_specific_information id43}@anchor{213}@anchor{gnat_ugn/platform_specific_information win32ada}@anchor{214} +@anchor{gnat_ugn/platform_specific_information id43}@anchor{214}@anchor{gnat_ugn/platform_specific_information win32ada}@anchor{215} @subsubsection Win32Ada @@ -25510,7 +25532,7 @@ gprbuild p.gpr @end quotation @node wPOSIX,,Win32Ada,Windows Specific Add-Ons -@anchor{gnat_ugn/platform_specific_information id44}@anchor{215}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{216} +@anchor{gnat_ugn/platform_specific_information id44}@anchor{216}@anchor{gnat_ugn/platform_specific_information wposix}@anchor{217} @subsubsection wPOSIX @@ -25543,7 +25565,7 @@ gprbuild p.gpr @end quotation @node Mac OS Topics,,Microsoft Windows Topics,Platform-Specific Information -@anchor{gnat_ugn/platform_specific_information id45}@anchor{217}@anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{218} +@anchor{gnat_ugn/platform_specific_information id45}@anchor{218}@anchor{gnat_ugn/platform_specific_information mac-os-topics}@anchor{219} @section Mac OS Topics @@ -25558,7 +25580,7 @@ platform. @end menu @node Codesigning the Debugger,,,Mac OS Topics -@anchor{gnat_ugn/platform_specific_information codesigning-the-debugger}@anchor{219} +@anchor{gnat_ugn/platform_specific_information codesigning-the-debugger}@anchor{21a} @subsection Codesigning the Debugger @@ -25639,7 +25661,7 @@ the location where you installed GNAT. Also, be sure that users are in the Unix group @code{_developer}. @node Example of Binder Output File,Elaboration Order Handling in GNAT,Platform-Specific Information,Top -@anchor{gnat_ugn/example_of_binder_output doc}@anchor{21a}@anchor{gnat_ugn/example_of_binder_output example-of-binder-output-file}@anchor{e}@anchor{gnat_ugn/example_of_binder_output id1}@anchor{21b} +@anchor{gnat_ugn/example_of_binder_output doc}@anchor{21b}@anchor{gnat_ugn/example_of_binder_output example-of-binder-output-file}@anchor{e}@anchor{gnat_ugn/example_of_binder_output id1}@anchor{21c} @chapter Example of Binder Output File @@ -26391,7 +26413,7 @@ elaboration code in your own application). @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit @node Elaboration Order Handling in GNAT,Inline Assembler,Example of Binder Output File,Top -@anchor{gnat_ugn/elaboration_order_handling_in_gnat doc}@anchor{21c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat}@anchor{f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id1}@anchor{21d} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat doc}@anchor{21d}@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order-handling-in-gnat}@anchor{f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id1}@anchor{21e} @chapter Elaboration Order Handling in GNAT @@ -26421,7 +26443,7 @@ GNAT, either automatically or with explicit programming features. @end menu @node Elaboration Code,Elaboration Order,,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{21e}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{21f} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-code}@anchor{21f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id2}@anchor{220} @section Elaboration Code @@ -26569,7 +26591,7 @@ elaborated. @end itemize @node Elaboration Order,Checking the Elaboration Order,Elaboration Code,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order}@anchor{220}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{221} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-order}@anchor{221}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id3}@anchor{222} @section Elaboration Order @@ -26738,7 +26760,7 @@ however a compiler may not always find such an order due to complications with respect to control and data flow. @node Checking the Elaboration Order,Controlling the Elaboration Order in Ada,Elaboration Order,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{222}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{223} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat checking-the-elaboration-order}@anchor{223}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id4}@anchor{224} @section Checking the Elaboration Order @@ -26799,7 +26821,7 @@ order. @end itemize @node Controlling the Elaboration Order in Ada,Controlling the Elaboration Order in GNAT,Checking the Elaboration Order,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada}@anchor{224}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{225} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-ada}@anchor{225}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id5}@anchor{226} @section Controlling the Elaboration Order in Ada @@ -27127,7 +27149,7 @@ is that the program continues to stay in the last state (one or more correct orders exist) even if maintenance changes the bodies of targets. @node Controlling the Elaboration Order in GNAT,Mixing Elaboration Models,Controlling the Elaboration Order in Ada,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat}@anchor{226}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{227} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat controlling-the-elaboration-order-in-gnat}@anchor{227}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id6}@anchor{228} @section Controlling the Elaboration Order in GNAT @@ -27257,7 +27279,7 @@ The dynamic, legacy, and static models can be relaxed using compiler switch may not diagnose certain elaboration issues or install run-time checks. @node Mixing Elaboration Models,ABE Diagnostics,Controlling the Elaboration Order in GNAT,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{228}@anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{229} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat id7}@anchor{229}@anchor{gnat_ugn/elaboration_order_handling_in_gnat mixing-elaboration-models}@anchor{22a} @section Mixing Elaboration Models @@ -27304,7 +27326,7 @@ warning: "y.ads" which has static elaboration checks The warnings can be suppressed by binder switch @code{-ws}. @node ABE Diagnostics,SPARK Diagnostics,Mixing Elaboration Models,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics}@anchor{22a}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{22b} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat abe-diagnostics}@anchor{22b}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id8}@anchor{22c} @section ABE Diagnostics @@ -27411,7 +27433,7 @@ declaration @code{Safe} because the body of function @code{ABE} has already been elaborated at that point. @node SPARK Diagnostics,Elaboration Circularities,ABE Diagnostics,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{22c}@anchor{gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics}@anchor{22d} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat id9}@anchor{22d}@anchor{gnat_ugn/elaboration_order_handling_in_gnat spark-diagnostics}@anchor{22e} @section SPARK Diagnostics @@ -27437,7 +27459,7 @@ rules. @end quotation @node Elaboration Circularities,Resolving Elaboration Circularities,SPARK Diagnostics,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities}@anchor{22e}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{22f} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-circularities}@anchor{22f}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id10}@anchor{230} @section Elaboration Circularities @@ -27537,7 +27559,7 @@ This section enumerates various tactics for eliminating the circularity. @end itemize @node Resolving Elaboration Circularities,Elaboration-related Compiler Switches,Elaboration Circularities,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{230}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities}@anchor{231} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat id11}@anchor{231}@anchor{gnat_ugn/elaboration_order_handling_in_gnat resolving-elaboration-circularities}@anchor{232} @section Resolving Elaboration Circularities @@ -27809,7 +27831,7 @@ Use the relaxed dynamic-elaboration model, with compiler switches @end itemize @node Elaboration-related Compiler Switches,Summary of Procedures for Elaboration Control,Resolving Elaboration Circularities,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches}@anchor{232}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{233} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat elaboration-related-compiler-switches}@anchor{233}@anchor{gnat_ugn/elaboration_order_handling_in_gnat id12}@anchor{234} @section Elaboration-related Compiler Switches @@ -27990,7 +28012,7 @@ checks. The example above will still fail at run time with an ABE. @end table @node Summary of Procedures for Elaboration Control,Inspecting the Chosen Elaboration Order,Elaboration-related Compiler Switches,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{234}@anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{235} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat id13}@anchor{235}@anchor{gnat_ugn/elaboration_order_handling_in_gnat summary-of-procedures-for-elaboration-control}@anchor{236} @section Summary of Procedures for Elaboration Control @@ -28048,7 +28070,7 @@ Use the relaxed dynamic elaboration model, with compiler switches @end itemize @node Inspecting the Chosen Elaboration Order,,Summary of Procedures for Elaboration Control,Elaboration Order Handling in GNAT -@anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{236}@anchor{gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order}@anchor{237} +@anchor{gnat_ugn/elaboration_order_handling_in_gnat id14}@anchor{237}@anchor{gnat_ugn/elaboration_order_handling_in_gnat inspecting-the-chosen-elaboration-order}@anchor{238} @section Inspecting the Chosen Elaboration Order @@ -28191,7 +28213,7 @@ gdbstr (body) @end quotation @node Inline Assembler,GNU Free Documentation License,Elaboration Order Handling in GNAT,Top -@anchor{gnat_ugn/inline_assembler doc}@anchor{238}@anchor{gnat_ugn/inline_assembler id1}@anchor{239}@anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10} +@anchor{gnat_ugn/inline_assembler doc}@anchor{239}@anchor{gnat_ugn/inline_assembler id1}@anchor{23a}@anchor{gnat_ugn/inline_assembler inline-assembler}@anchor{10} @chapter Inline Assembler @@ -28250,7 +28272,7 @@ and with assembly language programming. @end menu @node Basic Assembler Syntax,A Simple Example of Inline Assembler,,Inline Assembler -@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{23a}@anchor{gnat_ugn/inline_assembler id2}@anchor{23b} +@anchor{gnat_ugn/inline_assembler basic-assembler-syntax}@anchor{23b}@anchor{gnat_ugn/inline_assembler id2}@anchor{23c} @section Basic Assembler Syntax @@ -28366,7 +28388,7 @@ Intel: Destination first; for example @code{mov eax, 4}@w{ } @node A Simple Example of Inline Assembler,Output Variables in Inline Assembler,Basic Assembler Syntax,Inline Assembler -@anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{23c}@anchor{gnat_ugn/inline_assembler id3}@anchor{23d} +@anchor{gnat_ugn/inline_assembler a-simple-example-of-inline-assembler}@anchor{23d}@anchor{gnat_ugn/inline_assembler id3}@anchor{23e} @section A Simple Example of Inline Assembler @@ -28515,7 +28537,7 @@ If there are no errors, @code{as} will generate an object file @code{nothing.out}. @node Output Variables in Inline Assembler,Input Variables in Inline Assembler,A Simple Example of Inline Assembler,Inline Assembler -@anchor{gnat_ugn/inline_assembler id4}@anchor{23e}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{23f} +@anchor{gnat_ugn/inline_assembler id4}@anchor{23f}@anchor{gnat_ugn/inline_assembler output-variables-in-inline-assembler}@anchor{240} @section Output Variables in Inline Assembler @@ -28882,7 +28904,7 @@ end Get_Flags_3; @end quotation @node Input Variables in Inline Assembler,Inlining Inline Assembler Code,Output Variables in Inline Assembler,Inline Assembler -@anchor{gnat_ugn/inline_assembler id5}@anchor{240}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{241} +@anchor{gnat_ugn/inline_assembler id5}@anchor{241}@anchor{gnat_ugn/inline_assembler input-variables-in-inline-assembler}@anchor{242} @section Input Variables in Inline Assembler @@ -28971,7 +28993,7 @@ _increment__incr.1: @end quotation @node Inlining Inline Assembler Code,Other Asm Functionality,Input Variables in Inline Assembler,Inline Assembler -@anchor{gnat_ugn/inline_assembler id6}@anchor{242}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{243} +@anchor{gnat_ugn/inline_assembler id6}@anchor{243}@anchor{gnat_ugn/inline_assembler inlining-inline-assembler-code}@anchor{244} @section Inlining Inline Assembler Code @@ -29042,7 +29064,7 @@ movl %esi,%eax thus saving the overhead of stack frame setup and an out-of-line call. @node Other Asm Functionality,,Inlining Inline Assembler Code,Inline Assembler -@anchor{gnat_ugn/inline_assembler id7}@anchor{244}@anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{245} +@anchor{gnat_ugn/inline_assembler id7}@anchor{245}@anchor{gnat_ugn/inline_assembler other-asm-functionality}@anchor{246} @section Other @code{Asm} Functionality @@ -29057,7 +29079,7 @@ and @code{Volatile}, which inhibits unwanted optimizations. @end menu @node The Clobber Parameter,The Volatile Parameter,,Other Asm Functionality -@anchor{gnat_ugn/inline_assembler id8}@anchor{246}@anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{247} +@anchor{gnat_ugn/inline_assembler id8}@anchor{247}@anchor{gnat_ugn/inline_assembler the-clobber-parameter}@anchor{248} @subsection The @code{Clobber} Parameter @@ -29121,7 +29143,7 @@ Use ‘register’ name @code{memory} if you changed a memory location @end itemize @node The Volatile Parameter,,The Clobber Parameter,Other Asm Functionality -@anchor{gnat_ugn/inline_assembler id9}@anchor{248}@anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{249} +@anchor{gnat_ugn/inline_assembler id9}@anchor{249}@anchor{gnat_ugn/inline_assembler the-volatile-parameter}@anchor{24a} @subsection The @code{Volatile} Parameter @@ -29157,7 +29179,7 @@ to @code{True} only if the compiler’s optimizations have created problems. @node GNU Free Documentation License,Index,Inline Assembler,Top -@anchor{share/gnu_free_documentation_license doc}@anchor{24a}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{24b} +@anchor{share/gnu_free_documentation_license doc}@anchor{24b}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{24c} @chapter GNU Free Documentation License @@ -29645,8 +29667,8 @@ to permit their use in free software. @printindex ge -@anchor{d1}@w{ } @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } +@anchor{d1}@w{ } @c %**end of body @bye diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index d24b9b941ff..ce0caf48168 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -1667,6 +1667,11 @@ package Opt is -- which requires pragma Warnings to be stored for the formal verification -- backend. + Info_Suppressed : Boolean := False; + -- GNAT + -- Controls whether informational messages are suppressed. Set True by + -- -gnatis. If True, informational messages will not be printed. + Wide_Character_Encoding_Method : WC_Encoding_Method := WCEM_Brackets; -- GNAT, GNATBIND -- Method used for encoding wide characters in the source program. See diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb index 43b69f1dde1..25cb6f20da6 100644 --- a/gcc/ada/switch-c.adb +++ b/gcc/ada/switch-c.adb @@ -927,7 +927,8 @@ package body Switch.C is Ptr := Ptr + 1; Legacy_Elaboration_Checks := True; - -- -gnati (character set) + -- -gnati[1-5|8|9|p|f|n|w] (character set) + -- -gnatis (suppress info messages) when 'i' => if Ptr = Max then @@ -940,6 +941,9 @@ package body Switch.C is if C in '1' .. '5' | '8' | 'p' | '9' | 'f' | 'n' | 'w' then Identifier_Character_Set := C; Ptr := Ptr + 1; + elsif C = 's' then + Info_Suppressed := True; + Ptr := Ptr + 1; else Bad_Switch ("-gnati" & Switch_Chars (Ptr .. Max)); From patchwork Thu Jun 20 08:52:56 2024 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: 1949994 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=OmK23+qx; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZFy6Z7jz20X6 for ; Thu, 20 Jun 2024 19:00:38 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 466F43890028 for ; Thu, 20 Jun 2024 09:00:36 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 1549A3889809 for ; Thu, 20 Jun 2024 08:53:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1549A3889809 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1549A3889809 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::433 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873624; cv=none; b=YPqGhS1IcO1mDK0Zt3X6/qwKulaw/qOAnLHX8jno4ct9CA964rTmEN7GAYnDEyDg0nWH0wFlgnX+Ij/uUWja9QX74bg7rHf9g3UsEw1NgY4kwYYsFbKVvLvy37GkD8JKbwi1w8bY8NFBbHzk5M5PYxmtbvCmLI6Mbqb2xUE1WNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873624; c=relaxed/simple; bh=FmIJFZmnBvwQH3QXolAX15dw8OvL8+D/rFX1AHRbT1o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ubri4RY7YgGpVLEYOvnfl3HAK9WJDUFanCGmYOii+AoWg6eQC/BaC5KR3mboBLwenFXWGjjFdq5KOmFY1W3a98DI0Ih7D3NRt8RO1ls6x9xmPxP3MFwOE/OIYg9G/e9hW3oCd/6O4VAptygR9jVFg0b/LZ94UJ+5zOcWyrK8OMo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3650f2e540dso232563f8f.0 for ; Thu, 20 Jun 2024 01:53:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873616; x=1719478416; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=71G0FiW9Q2Oo7BxUDR0UTvsHaUEL6bihhii9VKD7bUU=; b=OmK23+qx9PTDM+MLqxfwlL6hQK7WoadXSlJmOMYrvDyZtvVdw/9td2PwbMICB5er7k 53jNKrLtrbs3is3jU0l/CaPC6swtzUGsIeKAMsTTRiCuqt5Dc/YLy5/y4f74n/kQvUvm 2oZ2NNKKPZRATYEEtVd3HCuWrs64yOf6VHKZ1WvhcKbN6DBBcAXs1ly7mT6Ye4+YpzdZ ThJxmtA9zHjBTAcnJgZUlNNpOn/Q/VgJ38l64UizskD5cCjhgVMlK77N8YWj2hbcwNwK Qrq6aiFrekPGJlMq9BO/biPIrPK6hAtA3eswmk2ri1810YpFEv2nYpuuR82ppwr33xoB xYgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873616; x=1719478416; 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=71G0FiW9Q2Oo7BxUDR0UTvsHaUEL6bihhii9VKD7bUU=; b=WBFutrML5TipS52vFYAgvwg3vvkAHcK6GctXskMLx/acul4QtBbnDMwJzJgCElJsTI dqE/UrzLK7JNtlvIzFw257rdei+bIUqUVXz9NDmeMJIBQaOPMJwwu2TbsHXOZ8JLPI0y bTA69YTs/9qhs/7BxZjD7OcU9oknjcA1rPtVWNkeiJGAHgRQ/TO6WIkC4ACpF1e1YCpD wiJzn4HDkZPrcj1biY1z+5N4Ii1QWBM4cGWDrC/lACOdC++vVugrpLDdMNYtMFjzHdz4 2uTz63Nt1cHzT4whRCmDOMWFsKg3VcfcXL3iQzDAWrHf8byqKrzCV7S4uhlqP1/9WDwP 0gPA== X-Gm-Message-State: AOJu0YzvS2qIUN4ijq7F26dFu/q+1y6k5KkNEgifTV7fP1Xpdctf1VCc 7tB+Jjqa80LzWJX3abAx4ogFCv0DGXqCUmON9ecsGZ7WmfB1dnG2PqnlE6ib66nLIfwOnCsFSD0 = X-Google-Smtp-Source: AGHT+IH/4mirYhP6vyeRfO7s0PWA9+2lb1ctd2dQCMShssm7HOfJCEHzQvluu54yOjAQSgtHb2T03w== X-Received: by 2002:a5d:6510:0:b0:364:e963:bd1a with SMTP id ffacd0b85a97d-364e963c96cmr731340f8f.65.1718873615887; Thu, 20 Jun 2024 01:53:35 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:35 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Viljar Indus Subject: [COMMITTED 06/30] ada: Convert -gnatw.n messages to warnings Date: Thu, 20 Jun 2024 10:52:56 +0200 Message-ID: <20240620085321.2412421-6-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Viljar Indus Previously the messages produced by this warning switch were info messages that were suppressed with the same methods as regular warnings. Since info messages are now separated as a completely different class of messages then these messages should be converted back to warnings in order for the previous pragma based suppression methods to work. gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update documentation for -gnatw.n switch. * exp_util.adb: Convert info messages into warnings. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../building_executable_programs_with_gnat.rst | 12 +++++++----- gcc/ada/exp_util.adb | 4 ++-- gcc/ada/gnat_ugn.texi | 10 +++++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst index 8fbb1eeef4f..d30bb7e9d8e 100644 --- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst +++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst @@ -3495,20 +3495,20 @@ of the pragma in the :title:`GNAT_Reference_manual`). .. index:: Atomic Synchronization, warnings :switch:`-gnatw.n` - *Activate info messages on atomic synchronization.* + *Activate warnings on atomic synchronization.* - This switch activates info messages when an access to an atomic variable + This switch activates warnings when an access to an atomic variable requires the generation of atomic synchronization code. These - info messages are off by default. + warnings are off by default. .. index:: -gnatw.N (gcc) :switch:`-gnatw.N` - *Suppress info messages on atomic synchronization.* + *Suppress warnings on atomic synchronization.* .. index:: Atomic Synchronization, warnings - This switch suppresses info messages when an access to an atomic variable + This switch suppresses warnings when an access to an atomic variable requires the generation of atomic synchronization code. @@ -4372,6 +4372,8 @@ When no switch :switch:`-gnatw` is used, this is equivalent to: .. _Debugging_and_Assertion_Control: + + Info message Control -------------------- diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 528001ea70a..7a756af97ea 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -299,10 +299,10 @@ package body Exp_Util is if Present (Msg_Node) then Error_Msg_N - ("info: atomic synchronization set for &?.n?", Msg_Node); + ("atomic synchronization set for &?.n?", Msg_Node); else Error_Msg_N - ("info: atomic synchronization set?.n?", N); + ("atomic synchronization set?.n?", N); end if; end if; end Activate_Atomic_Synchronization; diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index fe83913951d..95e21405f02 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -11757,11 +11757,11 @@ use of @code{-gnatg}. @item @code{-gnatw.n} -`Activate info messages on atomic synchronization.' +`Activate warnings on atomic synchronization.' -This switch activates info messages when an access to an atomic variable +This switch activates warnings when an access to an atomic variable requires the generation of atomic synchronization code. These -info messages are off by default. +warnings are off by default. @end table @geindex -gnatw.N (gcc) @@ -11771,12 +11771,12 @@ info messages are off by default. @item @code{-gnatw.N} -`Suppress info messages on atomic synchronization.' +`Suppress warnings on atomic synchronization.' @geindex Atomic Synchronization @geindex warnings -This switch suppresses info messages when an access to an atomic variable +This switch suppresses warnings when an access to an atomic variable requires the generation of atomic synchronization code. @end table From patchwork Thu Jun 20 08:52:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1949988 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=N7fYSKj5; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Z754xNbz20KL for ; Thu, 20 Jun 2024 18:54:41 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EB92A388A029 for ; Thu, 20 Jun 2024 08:54:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 8D7C83889811 for ; Thu, 20 Jun 2024 08:53:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8D7C83889811 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8D7C83889811 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873625; cv=none; b=IQOUkd7u+aZYStWwr4LFi4JJTZ4ZA5HXIhR+A1owesq4syWhYtlV2MjD0lcxRTJhMV4pmjTEMlUHtFf/4ysy0k9ii7YqWcxzGTvR68DJEHyhHDy19xwwcgUZAydl8R9x4G98cFEG3ccyYVyTyn3x5dGTMdi+NuhaW7ABX/UByKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873625; c=relaxed/simple; bh=Tpu0CetE7C0ZQBwbmwNgaASTXS8jxGQmG+QHoJxJr7w=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=hBnLmyyRS1BFWIcxzMBFKpR2p/Nj8y06Nek80WqB7WjC1zu5HDyzK7DaiQcnX31M09QPdBiYJt92/UX5RIr6jC4fjOhb/SE/9Uzd5RmCEwsqPHgIyCr6Sd1XAa7uaG3Ee5k9i4a0WkLR+Zp+kQ2PCHRaQjpoi+kf4rL9i7C73mQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-364a3d5d901so456194f8f.0 for ; Thu, 20 Jun 2024 01:53:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873616; x=1719478416; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4DzOSRMa3ZoxZyRWvx6Ljr4396AflMmv67BBZS0xB+w=; b=N7fYSKj5hHzUCFgqCnh/d6sJNBzZ+i5iwrdf561KLEmH3A0C+/byZzUKtDMVYy6IBX NLkZXD8abusE4o2tOJy1ANGULdWzQM2QjmZvHRAhNGYZM6rSPJUpnZPvzc7eP/iU3hs5 zye+cQrxuDLwRmCrf+M7uZR+Qc5FoPkwAfvgp8yt6F9VwPWOWL+DVioHQyb+lX8T+olg 4wEIQqA+xIN/rk8cVkNy0NgqoQtUDcOkHjBXB6Nh7yGe4iS1H6X4uYrL3auk0xPPIO+N aR0EgjOwL0O/BtfpuX0eruhhnSxswIPy8Z9rYpgkf7rqzrUeQr/GBpWltYRrNTy14gur 1z7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873616; x=1719478416; 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=4DzOSRMa3ZoxZyRWvx6Ljr4396AflMmv67BBZS0xB+w=; b=v2SzklakiT7ud7iacOcbroNeGC+Qs8b5RP9b4zCGTJVCI4cI4Bx8Yd3nirt3wkMAr2 3w2HOJtg2B4cCc5/cNKvrah+17Ow4SJxT5Df4L2aFTtV86BMu/mdBXitJBlfZyi5FiyN j3qDqU/6kiB3fjCIinwRG66SppYcP5qNDf9JMKKYXChpPuFs1YHk3v6vRROtTjc+yn6J syh7jg9W9iHKXF36k66mPMyR7ZZX6jZKk3ktXXVPheG6dBpVhWHFVBISFPIC4wv7HrU0 az2xtkezHkdZWkbCErVasfevcaRPSURS5kBprFCL4TXm7hSni+cowzft2n4nV1O1yA9M GJjQ== X-Gm-Message-State: AOJu0YyZmThepURPwIsMgkxKkDLiTAP8zGkgLojjDdbCeBCoKB7wBKzI dvW7BryIunofgBldXlmrTvRdS+gDPC21avE/DKO414rIuGfelOpJazjfyXN5Y3juyhoIS23uVNU = X-Google-Smtp-Source: AGHT+IGZ43yDAntP/ADvgqLNvO/+95LkBLijhQtBcVKHIvqyOKIe+Gy+neVbavr1K6MQb1qcs3BZnQ== X-Received: by 2002:a5d:4809:0:b0:35f:23c6:7bdb with SMTP id ffacd0b85a97d-363175b8c4fmr3417845f8f.21.1718873616631; Thu, 20 Jun 2024 01:53:36 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:36 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Viljar Indus Subject: [COMMITTED 07/30] ada: Change messages for -gnatw.v to warnings Date: Thu, 20 Jun 2024 10:52:57 +0200 Message-ID: <20240620085321.2412421-7-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Viljar Indus Previously this switch was emitting only info messages which was both confusing in terms of the name of the switch that was used internally and externally. gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Update documentation for -gnatw.v. * sem_ch13.adb: Convert all -gnatw.v related messages to warnings. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../building_executable_programs_with_gnat.rst | 17 ++++++++--------- gcc/ada/gnat_ugn.texi | 17 ++++++++--------- gcc/ada/sem_ch13.adb | 10 +++++----- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst index d30bb7e9d8e..ce3ed0cc65a 100644 --- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst +++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst @@ -3997,22 +3997,21 @@ of the pragma in the :title:`GNAT_Reference_manual`). .. index:: bit order warnings :switch:`-gnatw.v` - *Activate info messages for non-default bit order.* + *Activate warnings for non-default bit order.* - This switch activates messages (labeled "info", they are not warnings, - just informational messages) about the effects of non-default bit-order - on records to which a component clause is applied. The effect of specifying - non-default bit ordering is a bit subtle (and changed with Ada 2005), so - these messages, which are given by default, are useful in understanding the - exact consequences of using this feature. + This switch activates warning messages about the effects of non-default + bit-order on records to which a component clause is applied. The effect of + specifying non-default bit ordering is a bit subtle + (and changed with Ada 2005), so these messages, which are given by default, + are useful in understanding the exact consequences of using this feature. .. index:: -gnatw.V (gcc) :switch:`-gnatw.V` - *Suppress info messages for non-default bit order.* + *Suppress warnings for non-default bit order.* - This switch suppresses information messages for the effects of specifying + This switch suppresses warnings for the effects of specifying non-default bit order on record components with component clauses. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 95e21405f02..bba4f25aa13 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -12462,14 +12462,13 @@ may not be properly initialized. @item @code{-gnatw.v} -`Activate info messages for non-default bit order.' +`Activate warnings for non-default bit order.' -This switch activates messages (labeled “info”, they are not warnings, -just informational messages) about the effects of non-default bit-order -on records to which a component clause is applied. The effect of specifying -non-default bit ordering is a bit subtle (and changed with Ada 2005), so -these messages, which are given by default, are useful in understanding the -exact consequences of using this feature. +This switch activates warning messages about the effects of non-default +bit-order on records to which a component clause is applied. The effect of +specifying non-default bit ordering is a bit subtle +(and changed with Ada 2005), so these messages, which are given by default, +are useful in understanding the exact consequences of using this feature. @end table @geindex -gnatw.V (gcc) @@ -12479,9 +12478,9 @@ exact consequences of using this feature. @item @code{-gnatw.V} -`Suppress info messages for non-default bit order.' +`Suppress warnings for non-default bit order.' -This switch suppresses information messages for the effects of specifying +This switch suppresses warnings for the effects of specifying non-default bit order on record components with component clauses. @end table diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index cd47f734462..a35b67eddc8 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -508,7 +508,7 @@ package body Sem_Ch13 is if Warn_On_Reverse_Bit_Order then Error_Msg_N - ("info: multi-byte field specified with " + ("multi-byte field specified with " & "non-standard Bit_Order?.v?", CC); if Bytes_Big_Endian then @@ -732,7 +732,7 @@ package body Sem_Ch13 is then Error_Msg_Uint_1 := MSS; Error_Msg_N - ("info: reverse bit order in machine scalar of " + ("reverse bit order in machine scalar of " & "length^?.v?", First_Bit (CC)); Error_Msg_Uint_1 := NFB; Error_Msg_Uint_2 := NLB; @@ -808,7 +808,7 @@ package body Sem_Ch13 is and then CSZ mod System_Storage_Unit = 0 then Error_Msg_N - ("info: multi-byte field specified with non-standard " + ("multi-byte field specified with non-standard " & "Bit_Order?.v?", CLC); if Bytes_Big_Endian then @@ -841,13 +841,13 @@ package body Sem_Ch13 is and then Warn_On_Reverse_Bit_Order then Error_Msg_N - ("info: Bit_Order clause does not affect byte " + ("Bit_Order clause does not affect byte " & "ordering?.v?", Pos); Error_Msg_Uint_1 := Intval (Pos) + Intval (FB) / System_Storage_Unit; Error_Msg_N - ("info: position normalized to ^ before bit order " + ("position normalized to ^ before bit order " & "interpreted?.v?", Pos); end if; From patchwork Thu Jun 20 08:52:58 2024 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: 1949997 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=XswpOIx8; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZKS5P6Tz20X6 for ; Thu, 20 Jun 2024 19:03:40 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 72EAD3890005 for ; Thu, 20 Jun 2024 09:03:38 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id 4AF373888C7F for ; Thu, 20 Jun 2024 08:53:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4AF373888C7F Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4AF373888C7F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::435 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; cv=none; b=gckxZdR1/GyYeom4Q9+IfMig0l3bZi75qtO4QEkcHH+IGQOx++kO4hwSMooiOFh6bGZ/1rYsJjsK87yuB2TcFwDXVPrTzT/xSmykJCgqov0g2qRA/GWlx7lg4pIvmryzSawIud2jJZZcO3zGH8ZskHvjcGvFuCGfxU0e3uD5abM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; c=relaxed/simple; bh=Ffvvc+JoTFwH2rKdtnQiGecBlFsOFCjT1x1dc/9t9MA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=cBf63zsHP5FEWJwJNuC99mOPpOGUQPOdgJvOVKI71r7Sca8agn5ugpoV/HwPIc5nXBJXxDhAY8ErGWaRPOWI8UNSqH+9DIZI+nDlbAAB13rw2zLYpIC2CbRfqwG69r+cYW2V466AQ+992Wc1mP0Y8eyaIs8psPy6fh8Sgyr68oM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-361785bfa71so585648f8f.2 for ; Thu, 20 Jun 2024 01:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873617; x=1719478417; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mQ8ee95vbOx3/51ulildxT+6wk2548Pe5qMlh13R2aI=; b=XswpOIx8M6gmCuTggvLFaoWUxGL3wY++S0/sC3z5t7fRznTyLF1sXNMMUPJvB5mFYM dOKHilppNesVaKn2/rqFJw9eNRmim2wcElmJPiV9O9+Q5wKSkyctvKVZqHMQ3Gz6vK1g wVPXZuqnoiuOdqYBjo+QWNOq5EWVjAw2G+ZYzCCdnvroDwS7TD1LiFSxvKH+sdz83WCa klOIwnmf2LEuHE6BTrk7zjaIrp4UcrQroRCp4cdYMaQu4alT0I10urnKmgf5yeElTYu5 qpO9NSEed3NyilYEJyEfAseDP1p4jw/lJsfMq2ynQ+Q+gOcEm+PT+Vr6OUZ5RvwXLo/I epsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873617; x=1719478417; 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=mQ8ee95vbOx3/51ulildxT+6wk2548Pe5qMlh13R2aI=; b=KHfPpeKoCUGH9Mb+j98gsUn3cgTu4Hd/RLaqOBQHn/GccLW3nvp1C1+cRRTVE0b5qk QS10BtNi8HJwEvjts2e31n0JpNYoExBcpPVqLyZbs+XhnDr4YH2UTH+gbDhUkGdx48aA yclTtarnXKCFO3a8bnzxiOcHdmev6YUuUwfnL4RrDqhhrzeq2M1BdvC99IrnhVEPRvuR i0dttPOLRL4NucWn6Cqp3rYt5YufXeptD9IeM5AD0rmBIgRVo7SSusfjUL9zMen1hTIX H+YqqXQKYqwl0DEc4f6brgEq2i0ke2qbkcTZmCO6uwWYsakOjDt7Sod+1feLWjI8s58J iXow== X-Gm-Message-State: AOJu0YwN7ydvbh3jmSaGYn4bKZDnlnc7DnkRuuPFA3aFvsldChYSDULl RgGMM4O0SVyxGQyd8JgCPSWC7BPYcVQz2wFPacWaw26ujFOwQHmTHtlbmTJ7I7Jmq6NsKZ30pjE = X-Google-Smtp-Source: AGHT+IGMNe8RLZ1ODDPQPP30oQnGJp/G2bma0zExWyeZTOW6oaoKLFhkDbfmTxVRBsmIaW5AhdzpVA== X-Received: by 2002:a5d:53d2:0:b0:363:69dd:ac3a with SMTP id ffacd0b85a97d-36369ddad6amr2528722f8f.42.1718873617393; Thu, 20 Jun 2024 01:53:37 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:36 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Richard Kenner Subject: [COMMITTED 08/30] ada: Document -gnatd_w for CCG Date: Thu, 20 Jun 2024 10:52:58 +0200 Message-ID: <20240620085321.2412421-8-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Richard Kenner gcc/ada/ * debug.adb: Add documentation for -gnatd_w. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/debug.adb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 602a8fa0b63..97f88b7664f 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -159,7 +159,7 @@ package body Debug is -- d_t In LLVM-based CCG, dump LLVM IR after transformations are done -- d_u In LLVM-based CCG, dump flows -- d_v Enable additional checks and debug printouts in Atree - -- d_w + -- d_w In LLVM-based CCG, don't send front end data to CCG -- d_x Disable inline expansion of Image attribute for enumeration types -- d_y -- d_z @@ -1011,6 +1011,8 @@ package body Debug is -- d_v Enable additional checks and debug printouts in Atree + -- d_w In LLVM-based CCG, don't send front end data to CCG + -- d_x The compiler does not expand in line the Image attribute for user- -- defined enumeration types and the standard boolean type. From patchwork Thu Jun 20 08:52:59 2024 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: 1950004 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=U9eirLOq; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZRr1nKDz20KL for ; Thu, 20 Jun 2024 19:09:12 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6E0F0388A406 for ; Thu, 20 Jun 2024 09:09:10 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by sourceware.org (Postfix) with ESMTPS id 4B0163889821 for ; Thu, 20 Jun 2024 08:53:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B0163889821 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B0163889821 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; cv=none; b=QO4xO3HIGjem+H0B6TF2c5SM+er66dktz8yCpCijBURd3kgeDisZCodIMUMeUnUV/lmopM2gdI4LQnMwf1E+xUvL1cusukmkC7V5QSvcv77aghmrWIcgHeuNnXr14ct6+UMIc9o0okyEXN/pLD4GPzeIVqBibsKJfLv1Nj37CvA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; c=relaxed/simple; bh=gscpRon5eiwQmLPuISqZ/RTc1xEWbrUpdBOrzvR4UWU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=TsqyXFtNwy5O29xZLVWXpVXKs8RIg9m9GcqnMT8smYNPZWgz0OgIM04pxbyMpn/pfIFVkNLzfBieI2gvh7RhGR4meNJ7rVLP611jw9TsYaF6TvzhVOPdCOCK8aUliNodXivnnwkZlDqEm9E9FRAfWEe8bxWXJ5Y8mqWUE0orW50= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4247f36f689so1202485e9.1 for ; Thu, 20 Jun 2024 01:53:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873618; x=1719478418; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YI86ICPgxDyciJhnxu7KnREBbEwBQS1ioXxdCj0xsPM=; b=U9eirLOqJILVRuW/ZU2/sn1T5zbqs4nUBkiObPbO57rvqjVY5uPnaAiLs8kLQstqph s0dwxcVuiAqB4p2IBlt2oGEx06EU9UzGB5ArD0U+GHSVBrf0RDrbNepCDeAWmSvRBRMd +5f3Ww40USase56kVnD9Y8i8aVJIrssSXTfU9rexVBLRIz684ALuoSa/7AyS3y2ecOMB wWObe9wC9be13fYtGmSKDrA0Q/Ltg52HGJWmYQYZHSQMXz0lJizSzRl/8gaoUVeycntY IW37DKBkSQb9WOTti+kDdsshc8GWm6GrjxG7ST8KReNoarGa1b1AaFFdI61V3uSyYIEm lXTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873618; x=1719478418; 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=YI86ICPgxDyciJhnxu7KnREBbEwBQS1ioXxdCj0xsPM=; b=o3WchG5419sO/eoK9HflnIImfVwpZFlYcp78EfQLvyQIHyG4BE5UIDxIgr0QJjMwJM gBMFyhX8lEMr8LsLP6mfybaqtTFxuFMElTAeb6eTjZYwctuWvm/nsZIVtF7c0okBzWPc mtOwhg+fT1DQ9z++iwmkoVmQy0wjMkexY/49AmnmMf4xqxon3gDpkyU1ryg5njfcfU8D OuhNjcnttZ+IA34OaIvHiK2T+Z0UUEEtVqVo9MmDZATnwFZ7mUxYw2xZpaWKiwplbGsK yg+2abHiDjasJRZV2n6tZG/DBvNIALcnkss7vjUfOnWjeEKWi10jKFylxxaxKRQt06lF HJ5A== X-Gm-Message-State: AOJu0YwUPCUhVUgk3OyQfZRDueXrUbvs4ZbqfLG/rIWMxIhvQ4bQwS9L jWEMGoV7+s/h4fZaohQcBrhJgcmETzuReYZCO8aCp3wEcCcEiyh4Eg9DEnjryWMbRkH/BsfHcDE = X-Google-Smtp-Source: AGHT+IHJP2vHvaNx2WtYrVOhdl84sozao93/6TDGRzYrf3pSs4wINC4fGCnwMrNVocMS7Nk3LQJr+A== X-Received: by 2002:a5d:6152:0:b0:360:82d6:5e96 with SMTP id ffacd0b85a97d-363170ec8afmr3100107f8f.3.1718873618160; Thu, 20 Jun 2024 01:53:38 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:37 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 09/30] ada: Fix minor issues in comments Date: Thu, 20 Jun 2024 10:52:59 +0200 Message-ID: <20240620085321.2412421-9-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou gcc/ada/ * mutably_tagged.ads: Fix minor issues in comments throughout. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/mutably_tagged.ads | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/gcc/ada/mutably_tagged.ads b/gcc/ada/mutably_tagged.ads index b1e393f98ad..6b3b10d38ea 100644 --- a/gcc/ada/mutably_tagged.ads +++ b/gcc/ada/mutably_tagged.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2024-2024, Free Software Foundation, Inc. -- +-- Copyright (C) 2024, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -36,8 +36,8 @@ package Mutably_Tagged is -- This package implements mutably tagged types via the Size'class aspect -- which enables the creation of class-wide types with a specific maximum -- size. This allows such types to be used directly in record components, - -- in object declarations without an initial expression, and to be - -- assigned a value from any type in a mutably tagged type's hierarchy. + -- in object declarations without an initial expression, and to be assigned + -- a value from any type in a mutably tagged type's hierarchy. -- For example, this structure allows Base_Type and its derivatives to be -- treated as components with a predictable size: @@ -49,17 +49,16 @@ package Mutably_Tagged is -- Component : Base_Type'Class; -- end record; - -- The core of thier implementation involve creating an "equivalent" type + -- The core of their implementation involves creating an "equivalent" type -- for each class-wide type that adheres to the Size'Class constraint. This - -- is achieved using the function Make_CW_Equivalent_Type, which - -- generates a type that is compatible in size and structure with any + -- is achieved by using the function Make_CW_Equivalent_Type from Exp_Util, + -- which generates a type that is compatible in size and structure with any -- derived type of the base class-wide type. - -- Once the class-wide equivalent type is generated, all references to - -- mutably tagged typed object declarations get rewritten to be - -- declarations of said equivalent type. References to these objects also - -- then get wrapped in unchecked conversions to the proper mutably tagged - -- class-wide type. + -- Once the class-wide equivalent type is generated, all declarations of + -- mutably tagged typed objects get rewritten as declarations of objects + -- with the equivalent type. References to these objects also then get + -- wrapped in unchecked conversions to the mutably tagged class-wide type. function Corresponding_Mutably_Tagged_Type (CW_Equiv_Typ : Entity_Id) return Entity_Id; From patchwork Thu Jun 20 08:53:00 2024 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: 1949989 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=iCahDBE6; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Z890D5vz20X8 for ; Thu, 20 Jun 2024 18:55:36 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3FFF3388C03D for ; Thu, 20 Jun 2024 08:55:35 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id 4B06E3889824 for ; Thu, 20 Jun 2024 08:53:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B06E3889824 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B06E3889824 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; cv=none; b=BSX5Hd8TyPndtgFtJ6rMWcaggHko76ZczE3iihGGtio47wco+ClmxEFqPKV0AB2NEZro1CwZq6VgYV4x1pHa0HmjWArunje8LYXQo3q/RFM2s2/3lAWS1jpTFDH3unUlC7+CJwtoWBaUjJzJCcrurnkJ2dLiz/sFD/8VsqreorU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873626; c=relaxed/simple; bh=qww0qi6pr5CbojyAXfVPMDKHfh1DSouGI0iA74iAsmw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=vqJKkoWccu38wUB/KCJ+0BvI2psyw6Z1XgP4i3sE1bvB7wdJe/WBS1HHVZrsawbdkD9BlUOk9QUqdG+QTdqowfPxZoON8SFAFrQGpkEVqxztg1v3e/g9+RWBrmTRm5A8WfhxjgYUQJQ+Vce1yKp0WLhCni0MYazwdeMRtYxK/PI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-364a39824baso516506f8f.1 for ; Thu, 20 Jun 2024 01:53:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873619; x=1719478419; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=opOchRFvUMlHCWWEbdGgo2VFoz7ae1xeXLlj5Zp8T3A=; b=iCahDBE6TZjzwH+k7oPS8QIyI+HmWYs3kdUuRUTIebLaZm2szY0ANlKReW3DcwTf6w skay/tfqcbBn23PLWY6bskmlCX2inFJgC95FilL9qV5D2MaRsL1HfW2gYEnaiC4lVuFt SGb9yTBbmeZIYBR+crKPVIaO4tAsj2BTltc7jc81CLWIWPGfMeWFHXjXVoRBE+XHfza3 vBBeNVC9FE4xMg4u8XhmVpWcLkdkS20F9Ta+oIVjo89wlC7FX8t3vtHUa2FNdfnbZ+xr 0rpLT5P3wimtgC/6uaQqvl+HOZRnh4uogNmE5WzFyRDju7pU06GDaQ3+HqhtQko90vrD piuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873619; x=1719478419; 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=opOchRFvUMlHCWWEbdGgo2VFoz7ae1xeXLlj5Zp8T3A=; b=HfMUkmH8euo54idc07UwRrg4iRGQqIECu6qeQBOW4K9VJq+ut0QsMslIyMk2qTmm7L ABagpNR4E3P2fmPyGogYByfP3hx0Pbp1xQsPqIv0Cl6sUT0wQzOg8FtoM3H+lllrztiU hFpg6xk+fbAVblleVFUMCixmzApbjaut28Pxy32WXPl2CYtc9iCphp+F3K5fnKoaoFty ucPW7wZMv6wAGXHFj2Kwp4aAs9Mx+ueAHbh1WTB1DSVgz9ve3KwVsgPmgomNNB+Y5Cin UEu6ju/b+sqq+/UtHZlRFSBPNj5ymBDKl5vbfB3o2GL8/rdQA3Sp5WTf7+lAEZosKGRn 3oYg== X-Gm-Message-State: AOJu0Yyh/bzVH+tavIN3k78LD+E3e/UUfsE2/dBN8gW+5aCSdnOdiIMa UfYIfanYDvxxaSHeSamPA3Bku+QLP/pSSkOe/2I8pVnwG9CrsUX35rvhmlW+K9cOQse99dtWfuI = X-Google-Smtp-Source: AGHT+IFcCS2J/d2UkAP58wSZ4gD9Urw9VApOakEwTPSlnyxZwoEcNidlOvS/tp81944ukHB0PXX04A== X-Received: by 2002:a05:6000:11cb:b0:360:708c:788e with SMTP id ffacd0b85a97d-363175b79d5mr3518839f8f.17.1718873618882; Thu, 20 Jun 2024 01:53:38 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:38 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 10/30] ada: Do not compute Has_Controlled_Component twice during freezing Date: Thu, 20 Jun 2024 10:53:00 +0200 Message-ID: <20240620085321.2412421-10-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou The Has_Controlled_Component flag is computed twice during freezing when expansion is enabled: in Freeze_Array_Type and Expand_Freeze_Array_Type for array types, and in Freeze_Record_Type and Expand_Freeze_Record_Type for record types. This removes the latter computation in both cases, as well as moves the computation of concurrent flags from the latter to the former places, which happens to plug a loophole in the detection of errors when the No_Task_Parts aspect is specified on peculiar types. gcc/ada/ * exp_ch3.adb (Expand_Freeze_Array_Type): Do not propagate the concurrent flags and the Has_Controlled_Component flag here. (Expand_Freeze_Record_Type): Likewise. * freeze.adb (Freeze_Array_Type): Propagate the concurrent flags. (Freeze_Record_Type): Likewise. * sem_util.adb (Has_Some_Controlled_Component): Adjust comment. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/exp_ch3.adb | 38 -------------------------------------- gcc/ada/freeze.adb | 9 ++++++--- gcc/ada/sem_util.adb | 2 +- 3 files changed, 7 insertions(+), 42 deletions(-) diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index 3d8b8023988..548fbede4f1 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -5431,17 +5431,6 @@ package body Exp_Ch3 is begin if not Is_Bit_Packed_Array (Typ) then - - -- If the component contains tasks, so does the array type. This may - -- not be indicated in the array type because the component may have - -- been a private type at the point of definition. Same if component - -- type is controlled or contains protected objects. - - Propagate_Concurrent_Flags (Base, Comp_Typ); - Set_Has_Controlled_Component - (Base, Has_Controlled_Component (Comp_Typ) - or else Is_Controlled (Comp_Typ)); - if No (Init_Proc (Base)) then -- If this is an anonymous array created for a declaration with @@ -6123,8 +6112,6 @@ package body Exp_Ch3 is Typ : constant Node_Id := Entity (N); Typ_Decl : constant Node_Id := Parent (Typ); - Comp : Entity_Id; - Comp_Typ : Entity_Id; Predef_List : List_Id; Wrapper_Decl_List : List_Id; @@ -6156,31 +6143,6 @@ package body Exp_Ch3 is Check_Stream_Attributes (Typ); end if; - -- Update task, protected, and controlled component flags, because some - -- of the component types may have been private at the point of the - -- record declaration. Detect anonymous access-to-controlled components. - - Comp := First_Component (Typ); - while Present (Comp) loop - Comp_Typ := Etype (Comp); - - Propagate_Concurrent_Flags (Typ, Comp_Typ); - - -- Do not set Has_Controlled_Component on a class-wide equivalent - -- type. See Make_CW_Equivalent_Type. - - if not Is_Class_Wide_Equivalent_Type (Typ) - and then - (Has_Controlled_Component (Comp_Typ) - or else (Chars (Comp) /= Name_uParent - and then Is_Controlled (Comp_Typ))) - then - Set_Has_Controlled_Component (Typ); - end if; - - Next_Component (Comp); - end loop; - -- Handle constructors of untagged CPP_Class types if not Is_Tagged_Type (Typ) and then Is_CPP_Class (Typ) then diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 5dbf7198cb4..452e11fc747 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -3661,7 +3661,9 @@ package body Freeze is Set_SSO_From_Default (Arr); - -- Propagate flags for component type + -- Propagate flags from component type + + Propagate_Concurrent_Flags (Arr, Ctyp); if Is_Controlled (Ctyp) or else Has_Controlled_Component (Ctyp) @@ -5684,11 +5686,12 @@ package body Freeze is Freeze_And_Append (Corresponding_Remote_Type (Rec), N, Result); end if; - -- Check for controlled components, unchecked unions, and type - -- invariants. + -- Check for tasks, protected and controlled components, unchecked + -- unions, and type invariants. Comp := First_Component (Rec); while Present (Comp) loop + Propagate_Concurrent_Flags (Rec, Etype (Comp)); -- Do not set Has_Controlled_Component on a class-wide -- equivalent type. See Make_CW_Equivalent_Type. diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index b1d47f22416..8479e8c4661 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -22259,7 +22259,7 @@ package body Sem_Util is elsif Is_Record_Type (Input_Typ) then Comp := First_Component (Input_Typ); while Present (Comp) loop - -- Skip _Parent component like Expand_Freeze_Record_Type + -- Skip _Parent component like Record_Type_Definition if Chars (Comp) /= Name_uParent and then Needs_Finalization (Etype (Comp)) From patchwork Thu Jun 20 08:53:01 2024 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: 1949999 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Li4LuRZT; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZNS74ssz20KL for ; Thu, 20 Jun 2024 19:06:16 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B2D90389000C for ; Thu, 20 Jun 2024 09:06:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 051243889823 for ; Thu, 20 Jun 2024 08:53:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 051243889823 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 051243889823 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::432 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873627; cv=none; b=vShNQSZPmp5b1gryoY9Oj9kg3EN8+dgmk7IzyP+BbuWPUuct9yu9zENsQt9gT1pHWewBKcimRIssAeLGT5MIpeeLN4LfAPmEtW9tq3yJwrh9lwo+PwfuDc0BAU8tSYReGkkmN8scr9MGiCoTLHG7fDPdNTNQVRrbFDdTM3jTwsI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873627; c=relaxed/simple; bh=9bq8UarBahS2nqZ5L0Abj513tu5eaFoj/7DDo6eLB3g=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=VnRzMsx+kg7uHLV1JMZVw2KB5ebBdU5MEroWF63pdUVU1+MQUhoVAMNaZTU5T8REuF71eVLZ+K/Lm2FNvJtfWZodigtGGZnwv7OfsHRAre+NxSLhIOXd7WE4DsNYuDyX0/1gCd0AgrpuJh39/uuySNTbC3Ih02NgyqQ8sW5nOA0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3608e6d14b6so507150f8f.0 for ; Thu, 20 Jun 2024 01:53:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873620; x=1719478420; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Su8LjbFx14A+OVvjVPJ3TuXxLT3QzPhifBzZhtcaO8k=; b=Li4LuRZTy9jAPM8lQpypZyWQCezfL2WdVe3JCloCt3MKXgljzhn5VM74JDKbuzp+I8 ChoTXOkyVyGnWctURhg845hBDranogy1iZrdusPWQA9HinpuUUawWhk34BUhrcWqjUek x2htVLhRf0eVR82jM/8zcPd3EuYiEb+AEAP7/Rv8nDbcAJoT7IPC1C2isTPgryZUhhvz LWGEdAEIqgTDZRDoXJ+C6DC3cxrAeq/JKDTfM4yR+Aa/IxVXoV8DiKjq6qFuAcU5m9ZR EfP99ihvYnW4hlE8OiH7xHpOaby4tbmOoeFfMm8acYpGyHHv8zu4r2sZbNwFkKlZhOlM XQqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873620; x=1719478420; 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=Su8LjbFx14A+OVvjVPJ3TuXxLT3QzPhifBzZhtcaO8k=; b=qGoArtFLT4P1V6v+chR2adCIuX867hf/ob+y+T5x6IURVJW1Li2dwT0CUZv7ncP/T3 nbt9qTB3bXEwwuY6YSEVDYkIzH9F0DeZb58pIVYbTFAWnZDDRhMwkh1CntUWYyG2fzVK AfofoaIuY90c98RdFu0fO4RRE+7cNHJcO/cFC93isbGOEcNcr9Lt8dBXMUI/o6vB01Nb WEsrHbKnkfeI2rwVf1u+8sBaHqbNb3Yqrsp3eu3eqGPdB0E3wCC2QoJFLIZBMmAY8kSZ 98Tzbm8dTKwT2LqypTvsz093MwEcBkt+1KpPJAJNJUJbl5nNRT4Kxshy/0h1mpubqthi Je8w== X-Gm-Message-State: AOJu0YwQPnHcnWUws1m6ov2Y485uvFs2tRRj8W3ttuYjcoLfWL1qd3PZ PkEn7wxj/XUp83Xf1WoaB6OKmBtBMPqKmLAXSZPOjXDGptbW+4M/e5r9PF556FYTKq8+8S3dffg = X-Google-Smtp-Source: AGHT+IGO5lBmhdLFJrHtlEolmRYmytzVqe9NolsCVpGUOn2N90TcvVdi9qLOTnXWVPT4b8WdhGCCVg== X-Received: by 2002:a05:6000:1108:b0:360:9c4f:1fe with SMTP id ffacd0b85a97d-363193c6376mr3570691f8f.43.1718873619771; Thu, 20 Jun 2024 01:53:39 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:39 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Ronan Desplanques Subject: [COMMITTED 11/30] ada: Add Dump_Buffers hooks for code coverage Date: Thu, 20 Jun 2024 10:53:01 +0200 Message-ID: <20240620085321.2412421-11-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Ronan Desplanques The purpose of this patch is to make it possible to set up code coverage for the GNAT front end in gnat1 using GNATcoverage. It is not obvious how to have GNATcoverage instrument gnat1's main function, and since the front end has a clear entry point (Gnat1drv), we add manual instrumentation annotations there. gcc/ada/ * gnat1drv.adb (Gnat1drv): Add coverage instrumentation annotations. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/gnat1drv.adb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 754dab82862..9743dfd4c4c 100644 --- a/gcc/ada/gnat1drv.adb +++ b/gcc/ada/gnat1drv.adb @@ -1526,6 +1526,8 @@ begin Check_Rep_Info; end if; + pragma Annotate (Xcov, Dump_Buffers); + return; end if; @@ -1679,6 +1681,8 @@ begin Atree.Print_Statistics; end if; + pragma Annotate (Xcov, Dump_Buffers); + -- The outer exception handler handles an unrecoverable error exception @@ -1693,6 +1697,9 @@ exception Set_Standard_Output; Source_Dump; Tree_Dump; + + pragma Annotate (Xcov, Dump_Buffers); + Exit_Program (E_Errors); end Gnat1drv; From patchwork Thu Jun 20 08:53:02 2024 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: 1950007 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=WgReLTkp; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZTY4SSNz20X8 for ; Thu, 20 Jun 2024 19:10:41 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CE2BA388CC13 for ; Thu, 20 Jun 2024 09:10:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id C991E3889818 for ; Thu, 20 Jun 2024 08:53:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C991E3889818 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C991E3889818 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; cv=none; b=a3hKSKY6ZJbESXH0nZ2QuasJKBWyX23YWnRW6/hDwWeFoBXo8VkYFk/0LITUmXREVGLniTfgmHo4bX6widBmlZmr5SYpMgrxHBhIotYKh3Y/gp2SSMCQrWPRKphl1ckzIGrjJyGRdKUWdBiAA/Yzc2ykrX2IslWMVH3O39TtZGM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; c=relaxed/simple; bh=4UPs3uupSsd32IfBzz6BqQ3DEo+P9uYSe1dckxov8is=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=c06ztHaPBxv/wIN8L1kHYCKGOoKDi1y3PIrkao4Vx57n6WFe+CvgtKrZV/RRmFXlzGXn+KaJV04B6XENRjCXqZ1Cx7XRcLSvDkGyOn9IjltLhvQC1b3rbh3Y283DwtpNG8GFmqzWU1Xt+abSfBDE33qcZKCI92xdKBNTr8vm30s= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3651ee582cfso165301f8f.2 for ; Thu, 20 Jun 2024 01:53:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873620; x=1719478420; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AvqoOKxXHVl6xrfzcbfMlPwd5YCsyWNdDa7sT2yWYU0=; b=WgReLTkpcsByBzKd5yGdvLtiUD8aK57I/7+NEfNj4cCxpbipWN2bRdm5J9HT/4aI5C BM6tiailtgNQZ1jKe9f70TN/I61oV9ezFmFXgSLf6f/fijyeo6lNbtjxdaCpeFB51353 ctdI3AceCTynZHgVvO5gZY7H5Gon5UTFf0+IRco6EbJ7y1wWzy9TQJ4kaZh8DgIXj8Nl NYy5xQ1+Or40W91wFC5JgCiiXJ8xQyOEe0d4PNe+s9HOdtwQnb4KL1uGE+sLQ3zv4n8j N74nljtNLNi8EuKFvBmOjAmEPOEWUuibk8xShsOAl/+Y6qeos3rCCLDkOD1ssdS291+m 7Reg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873620; x=1719478420; 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=AvqoOKxXHVl6xrfzcbfMlPwd5YCsyWNdDa7sT2yWYU0=; b=gi+c7dwuZE+kbOO5v5w4hdy+fRFnLzrlSPBRQGZP9kRS5l9MjuWSDSuvHVLdrYToy/ EUN+xRoJcU17TBa/kVaZuFLXh9sUjQL7TvPUTYGrhkSWHYE52o0cgftgwsj5pK5YLsut kQJYBB+wA7TnUJWIuq58SKlrheupb8aLw2ZL2NQnrKEUkbqEoR35wUoHkzPCuc6Oyshr WZH1ZJol7mFPJDA3IiXJWamWmaNutP5Ss1hYsdZsm4j7jJXS5a1An9HoIFd2vfKizuXl MUJjTvlX06Hj1k06N7NYIl7tzAk9AsQ8zy8jCa8gaZu/nDjVChYL+JOS5QrIWk62pscx aetg== X-Gm-Message-State: AOJu0YxzfK+rY5FqOg6mmwiu96+1K+d2BAxHrbB0SUnA3ShAsH4SJYSS IU9FiJFrIFAWSVYzjCEuKSvfW9StglgwbvgHqF7E4/lXNsOgys0ty/gi2gtGdZVMwerVCSbcQyE = X-Google-Smtp-Source: AGHT+IExO5nRc4MzrTZC/xsntXa3X+Rr/i+L+9xSCt/5sc0Y/nqzdMhInbSqWfIr5uwM3draQKXPXQ== X-Received: by 2002:a5d:464a:0:b0:360:7f85:69a4 with SMTP id ffacd0b85a97d-363171e19ccmr3599957f8f.3.1718873620579; Thu, 20 Jun 2024 01:53:40 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:40 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 12/30] ada: Couple of minor fixes in GNAT Reference Manual Date: Thu, 20 Jun 2024 10:53:02 +0200 Message-ID: <20240620085321.2412421-12-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> 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, KAM_ASCII_DIVIDERS, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou The Storage_Model pragma no longer exists. gcc/ada/ * doc/gnat_rm/gnat_language_extensions.rst (Pragma Storage_Model): Rename to Storage Model. * doc/gnat_rm/implementation_defined_aspects.rst: Alphabetize. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../doc/gnat_rm/gnat_language_extensions.rst | 4 +- .../implementation_defined_aspects.rst | 13 +++--- gcc/ada/gnat_rm.texi | 42 +++++++++---------- gcc/ada/gnat_ugn.texi | 2 +- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst index 99cab9d2816..f71e8f6eef8 100644 --- a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst +++ b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst @@ -355,8 +355,8 @@ particular the ``Shift_Left`` and ``Shift_Right`` intrinsics. Experimental Language Extensions ================================ -Pragma Storage_Model --------------------- +Storage Model +------------- This feature proposes to redesign the concepts of Storage Pools into a more efficient model allowing higher performances and easier integration with low diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst b/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst index 6b58dde18c0..ec09fe7f6c2 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst @@ -574,6 +574,12 @@ Aspect Remote_Access_Type This aspect is equivalent to :ref:`pragma Remote_Access_Type`. +Aspect Scalar_Storage_Order +=========================== +.. index:: Scalar_Storage_Order + +This aspect is equivalent to a :ref:`attribute Scalar_Storage_Order`. + Aspect Secondary_Stack_Size =========================== @@ -581,13 +587,6 @@ Aspect Secondary_Stack_Size This aspect is equivalent to :ref:`pragma Secondary_Stack_Size`. - -Aspect Scalar_Storage_Order -=========================== -.. index:: Scalar_Storage_Order - -This aspect is equivalent to a :ref:`attribute Scalar_Storage_Order`. - Aspect Shared ============= .. index:: Shared diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 8068b4de4c6..e811ef2c02d 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -349,8 +349,8 @@ Implementation Defined Aspects * Aspect Refined_State:: * Aspect Relaxed_Initialization:: * Aspect Remote_Access_Type:: -* Aspect Secondary_Stack_Size:: * Aspect Scalar_Storage_Order:: +* Aspect Secondary_Stack_Size:: * Aspect Shared:: * Aspect Side_Effects:: * Aspect Simple_Storage_Pool:: @@ -900,7 +900,7 @@ Curated Extensions Experimental Language Extensions -* Pragma Storage_Model:: +* Storage Model:: * Attribute Super:: * Simpler accessibility model:: * Case pattern matching:: @@ -9298,8 +9298,8 @@ or attribute definition clause. * Aspect Refined_State:: * Aspect Relaxed_Initialization:: * Aspect Remote_Access_Type:: -* Aspect Secondary_Stack_Size:: * Aspect Scalar_Storage_Order:: +* Aspect Secondary_Stack_Size:: * Aspect Shared:: * Aspect Side_Effects:: * Aspect Simple_Storage_Pool:: @@ -9989,7 +9989,7 @@ This aspect is equivalent to @ref{d9,,pragma Refined_State}. For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.10. -@node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Relaxed_Initialization,Implementation Defined Aspects +@node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{159} @section Aspect Remote_Access_Type @@ -9998,25 +9998,25 @@ Manual, section 6.10. This aspect is equivalent to @ref{dc,,pragma Remote_Access_Type}. -@node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15a} -@section Aspect Secondary_Stack_Size +@node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects +@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15a} +@section Aspect Scalar_Storage_Order -@geindex Secondary_Stack_Size +@geindex Scalar_Storage_Order -This aspect is equivalent to @ref{e2,,pragma Secondary_Stack_Size}. +This aspect is equivalent to a @ref{15b,,attribute Scalar_Storage_Order}. -@node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15b} -@section Aspect Scalar_Storage_Order +@node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects +@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15c} +@section Aspect Secondary_Stack_Size -@geindex Scalar_Storage_Order +@geindex Secondary_Stack_Size -This aspect is equivalent to a @ref{15c,,attribute Scalar_Storage_Order}. +This aspect is equivalent to @ref{e2,,pragma Secondary_Stack_Size}. -@node Aspect Shared,Aspect Side_Effects,Aspect Scalar_Storage_Order,Implementation Defined Aspects +@node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{15d} @section Aspect Shared @@ -11389,7 +11389,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15c}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1aa} +@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15b}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1aa} @section Attribute Scalar_Storage_Order @@ -29198,7 +29198,7 @@ particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @menu -* Pragma Storage_Model:: +* Storage Model:: * Attribute Super:: * Simpler accessibility model:: * Case pattern matching:: @@ -29206,9 +29206,9 @@ particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @end menu -@node Pragma Storage_Model,Attribute Super,,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions pragma-storage-model}@anchor{448} -@subsection Pragma Storage_Model +@node Storage Model,Attribute Super,,Experimental Language Extensions +@anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{448} +@subsection Storage Model This feature proposes to redesign the concepts of Storage Pools into a more @@ -29221,7 +29221,7 @@ support interactions with GPU. Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-storage-model.rst} -@node Attribute Super,Simpler accessibility model,Pragma Storage_Model,Experimental Language Extensions +@node Attribute Super,Simpler accessibility model,Storage Model,Experimental Language Extensions @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{449} @subsection Attribute Super diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index bba4f25aa13..db06a771ddd 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -29666,8 +29666,8 @@ to permit their use in free software. @printindex ge -@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @anchor{d1}@w{ } +@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @c %**end of body @bye From patchwork Thu Jun 20 08:53:03 2024 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: 1950012 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=Nn6C0ggn; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZWR5xnzz20X8 for ; Thu, 20 Jun 2024 19:12:19 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AC36F388A025 for ; Thu, 20 Jun 2024 09:12:17 +0000 (GMT) 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 A7A033888C5F for ; Thu, 20 Jun 2024 08:53:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A7A033888C5F Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A7A033888C5F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873629; cv=none; b=hH9p7GXDfKQvtn2m09y5/UsY9iBS80QErQWSm3xknMeEVC+k5XgXDvFiPi051PjqK6KCZsyq8W2G41BCmlLVdGLqYSmigFHaFcFK5YxFI4qO8ew4DgW8N6Ch+jUuTvz7++RdlXtSpXEVslMBD1z0tr0QBubSYFl0o1VI4PiMxMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873629; c=relaxed/simple; bh=dgfg541f7axAQI36wZG3S1+4oTmVD7LcKyBv4lztrxg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=nz/5gnCisSADbPEXcXC1GjYSdGaNGVlWwRX9r7SzuQPNtAMZgLMLtWg1M5uAHU5+qrw/NDbkRWvaVWJk03GdnsjTA+hZMfIYWjpQi+iiOl8IZ6CANR+0xYl900W+GOZn1t8TmHp9lAEBdFhxVOPjywCyQ/wt4E3utAKlc7zD3+s= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-42121d27861so7060405e9.0 for ; Thu, 20 Jun 2024 01:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873621; x=1719478421; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a2fBn8oH9/eIzV1WefnR6gNa4cZawFV9WrptHbQDS3I=; b=Nn6C0ggnMpKUPju8D9nkB1SLZwm8e+tnI32GBLtQdm35FXwWAAwAYBNkRIYSTiZmZv IgHTE7OCe2cN55YXVkX6loNcPXrpzlN1Z/jNQPcnNLu+S5GTo3qoBpyQQNkZJsMvPtWL v7u03bHVfVALnhDHzVrdF1LIE0qvxxSxtJcqKAV46+U2dM3tZIvc3mNG4/O+Wpr2u1Is 51fWmYvQAe6z0wEGSfHBtsNPoQsLvV0TXlb2dYf5Rysf/OH28aABFFnqUVZjGXl02jwb YBAhnjCggxI5tdFkt36uDHMK9zd/UVgU9CgbHocZuzOnrRV/Ak/VXZKjn14IlM7mfSTU GE0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873621; x=1719478421; 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=a2fBn8oH9/eIzV1WefnR6gNa4cZawFV9WrptHbQDS3I=; b=gNBWd49SfF/kp4EKa8xqOUsCwvCMW79PueAzu514NAcw2udGlppaAeYvtKHcykAwGT IfvRxqnzIib8VJy8Udc67G2xEAHU8GEDidw4cmpSzl/jPFfG7v7EyGHnoXmQ+0hDQaeD xj8H9ZModLnVKSBU4qneQh9feMLc9V3j7KR1di9jps8XM/VJkBhaiAR8HU3gtTijAYJF /ZMufxub1wwZEo1RFTszpa0JsXbRlfLsCCk7RPdbBZpgHtTpSkk1jsp5ozAgy1P9eXwb KzyEqynTb/0XhhqEatyvSUjdZGXEh90M7BstkW3lLdDxT7IxXRZOZ0V1DuPIFTt3dKPF W92g== X-Gm-Message-State: AOJu0YxA6s7ZNpzEjvvTNOfor48owQFLWwnKIWQvr/3mD+qNzSOTD/fm 4xK4Mnd8qG3JEYzQxxRh6L43oXRrWC4nSPdzu39OrLHLCxuCcrHNBZnsf8hEArEYLMRJVCYmqnE = X-Google-Smtp-Source: AGHT+IHaQQI4Gc8FRvuiyYOh49tICLemPwIemtCIpuHB0BP8wc/+hhfQ58/zJ4lxdMVBna09FJgYpw== X-Received: by 2002:adf:fe0b:0:b0:362:541d:2488 with SMTP id ffacd0b85a97d-36313eddf8dmr3503281f8f.0.1718873621366; Thu, 20 Jun 2024 01:53:41 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:40 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 13/30] ada: Remove Max_Entry_Queue_Depth pragma/aspect Date: Thu, 20 Jun 2024 10:53:03 +0200 Message-ID: <20240620085321.2412421-13-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou It was implemented apparently because a very early version of AI12-0164 that standardizes GNAT's Max_Queue_Length opted for the subtly different moniker, but later versions of the AI use Max_Entry_Queue_Length instead. gcc/ada/ * aspects.ads (Aspect_Id): Remove Aspect_Max_Entry_Queue_Depth. (global arrays): Remove entry for it. * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove reference to pragma Max_Entry_Queue_Depth in comment. * par-prag.adb (Prag): Remove handling of Pragma_Max_Entry_Queue_Depth. * sem_ch13.adb (Analyze_Aspect_Specifications): Remove reference to aspect Max_Entry_Queue_Depth in comment. (Analyze_Aspect_Specifications): Remove processing of aspect Max_Entry_Queue_Depth. (Check_Aspect_At_Freeze_Point): Likewise. * sem_prag.ads (Find_Related_Declaration_Or_Body): Remove reference to pragma Max_Entry_Queue_Depth in comment. * sem_prag.adb (Analyze_Pragma): Remove processing of pragma Max_Entry_Queue_Depth. (Sig_Flags): Remove entry for Pragma_Max_Entry_Queue_Depth. * sem_util.adb (Get_Max_Queue_Length): Remove handling of pragma Max_Entry_Queue_Depth. (Has_Max_Queue_Length): Likewise. * snames.ads-tmpl (Name_Max_Entry_Queue_Depth): Move back from pragmas section to others section. (Pragma_Id): Remove Pragma_Max_Entry_Queue_Depth. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/aspects.ads | 6 ------ gcc/ada/exp_ch9.adb | 3 +-- gcc/ada/par-prag.adb | 1 - gcc/ada/sem_ch13.adb | 15 --------------- gcc/ada/sem_prag.adb | 13 +------------ gcc/ada/sem_prag.ads | 1 - gcc/ada/sem_util.adb | 11 +++-------- gcc/ada/snames.ads-tmpl | 3 +-- 8 files changed, 6 insertions(+), 47 deletions(-) diff --git a/gcc/ada/aspects.ads b/gcc/ada/aspects.ads index 202d42193d1..140fb7c8fe1 100644 --- a/gcc/ada/aspects.ads +++ b/gcc/ada/aspects.ads @@ -114,7 +114,6 @@ package Aspects is Aspect_Linker_Section, -- GNAT Aspect_Local_Restrictions, -- GNAT Aspect_Machine_Radix, - Aspect_Max_Entry_Queue_Depth, -- GNAT Aspect_Max_Entry_Queue_Length, Aspect_Max_Queue_Length, -- GNAT Aspect_Object_Size, @@ -304,7 +303,6 @@ package Aspects is Aspect_Linker_Section => True, Aspect_Local_Restrictions => True, Aspect_Lock_Free => True, - Aspect_Max_Entry_Queue_Depth => True, Aspect_Max_Queue_Length => True, Aspect_No_Caching => True, Aspect_No_Elaboration_Code_All => True, @@ -450,7 +448,6 @@ package Aspects is Aspect_Linker_Section => Expression, Aspect_Local_Restrictions => Expression, Aspect_Machine_Radix => Expression, - Aspect_Max_Entry_Queue_Depth => Expression, Aspect_Max_Entry_Queue_Length => Expression, Aspect_Max_Queue_Length => Expression, Aspect_Object_Size => Expression, @@ -549,7 +546,6 @@ package Aspects is Aspect_Linker_Section => True, Aspect_Local_Restrictions => False, Aspect_Machine_Radix => True, - Aspect_Max_Entry_Queue_Depth => False, Aspect_Max_Entry_Queue_Length => False, Aspect_Max_Queue_Length => False, Aspect_Object_Size => True, @@ -732,7 +728,6 @@ package Aspects is Aspect_Lock_Free => Name_Lock_Free, Aspect_Local_Restrictions => Name_Local_Restrictions, Aspect_Machine_Radix => Name_Machine_Radix, - Aspect_Max_Entry_Queue_Depth => Name_Max_Entry_Queue_Depth, Aspect_Max_Entry_Queue_Length => Name_Max_Entry_Queue_Length, Aspect_Max_Queue_Length => Name_Max_Queue_Length, Aspect_No_Caching => Name_No_Caching, @@ -1046,7 +1041,6 @@ package Aspects is Aspect_Initial_Condition => Never_Delay, Aspect_Local_Restrictions => Never_Delay, Aspect_Initializes => Never_Delay, - Aspect_Max_Entry_Queue_Depth => Never_Delay, Aspect_Max_Entry_Queue_Length => Never_Delay, Aspect_Max_Queue_Length => Never_Delay, Aspect_No_Caching => Never_Delay, diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index 890bd038c5b..a8c70598fa5 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -9376,8 +9376,7 @@ package body Exp_Ch9 is Need_Array : Boolean := False; begin - -- First check if there is any Max_Queue_Length, - -- Max_Entry_Queue_Length or Max_Entry_Queue_Depth pragma. + -- First check if there is any Max_[Entry_]Queue_Length pragma Item := First_Entity (Prot_Typ); while Present (Item) loop diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index 4d10a6e060a..04eed22031a 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -1484,7 +1484,6 @@ begin | Pragma_Machine_Attribute | Pragma_Main | Pragma_Main_Storage - | Pragma_Max_Entry_Queue_Depth | Pragma_Max_Entry_Queue_Length | Pragma_Max_Queue_Length | Pragma_Memory_Size diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index a35b67eddc8..f2f1b0cb853 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -1449,7 +1449,6 @@ package body Sem_Ch13 is -- Global -- Initial_Condition -- Initializes - -- Max_Entry_Queue_Depth -- Max_Entry_Queue_Length -- Max_Queue_Length -- No_Caching @@ -3759,19 +3758,6 @@ package body Sem_Ch13 is goto Continue; end Initializes; - -- Max_Entry_Queue_Depth - - when Aspect_Max_Entry_Queue_Depth => - Aitem := Make_Aitem_Pragma - (Pragma_Argument_Associations => New_List ( - Make_Pragma_Argument_Association (Loc, - Expression => Relocate_Node (Expr))), - Pragma_Name => Name_Max_Entry_Queue_Depth); - - Decorate (Aspect, Aitem); - Insert_Pragma (Aitem); - goto Continue; - -- Max_Entry_Queue_Length when Aspect_Max_Entry_Queue_Length => @@ -11551,7 +11537,6 @@ package body Sem_Ch13 is | Aspect_Implicit_Dereference | Aspect_Initial_Condition | Aspect_Initializes - | Aspect_Max_Entry_Queue_Depth | Aspect_Max_Entry_Queue_Length | Aspect_Max_Queue_Length | Aspect_Obsolescent diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index d3b29089d77..772bf1b1abb 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -20464,11 +20464,7 @@ package body Sem_Prag is -- pragma Max_Entry_Queue_Length (static_integer_EXPRESSION); - -- This processing is shared by Pragma_Max_Entry_Queue_Depth and - -- Pragma_Max_Queue_Length. - when Pragma_Max_Entry_Queue_Length - | Pragma_Max_Entry_Queue_Depth | Pragma_Max_Queue_Length => Max_Entry_Queue_Length : declare @@ -20478,9 +20474,7 @@ package body Sem_Prag is Val : Uint; begin - if Prag_Id = Pragma_Max_Entry_Queue_Depth - or else Prag_Id = Pragma_Max_Queue_Length - then + if Prag_Id = Pragma_Max_Queue_Length then GNAT_Pragma; end if; @@ -20516,10 +20510,6 @@ package body Sem_Prag is and then Prag_Id /= Pragma_Max_Entry_Queue_Length) or else - (Has_Rep_Pragma (Entry_Id, Name_Max_Entry_Queue_Depth) - and then - Prag_Id /= Pragma_Max_Entry_Queue_Depth) - or else (Has_Rep_Pragma (Entry_Id, Name_Max_Queue_Length) and then Prag_Id /= Pragma_Max_Queue_Length) @@ -32766,7 +32756,6 @@ package body Sem_Prag is Pragma_Machine_Attribute => -1, Pragma_Main => -1, Pragma_Main_Storage => -1, - Pragma_Max_Entry_Queue_Depth => 0, Pragma_Max_Entry_Queue_Length => 0, Pragma_Max_Queue_Length => 0, Pragma_Memory_Size => 0, diff --git a/gcc/ada/sem_prag.ads b/gcc/ada/sem_prag.ads index 42c38d8e126..59220ea890c 100644 --- a/gcc/ada/sem_prag.ads +++ b/gcc/ada/sem_prag.ads @@ -467,7 +467,6 @@ package Sem_Prag is -- Extensions_Visible -- Global -- Initializes - -- Max_Entry_Queue_Depth -- Max_Entry_Queue_Length -- Max_Queue_Length -- Post diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 8479e8c4661..7f5d70245dd 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -10709,8 +10709,6 @@ package body Sem_Util is function Get_Max_Queue_Length (Id : Entity_Id) return Uint is pragma Assert (Is_Entry (Id)); PMQL : constant Entity_Id := Get_Pragma (Id, Pragma_Max_Queue_Length); - PMEQD : constant Entity_Id := - Get_Pragma (Id, Pragma_Max_Entry_Queue_Depth); PMEQL : constant Entity_Id := Get_Pragma (Id, Pragma_Max_Entry_Queue_Length); Max : Uint; @@ -10725,9 +10723,6 @@ package body Sem_Util is if Present (PMQL) then Max := Expr_Value (Expression (First (Pragma_Argument_Associations (PMQL)))); - elsif Present (PMEQD) then - Max := Expr_Value - (Expression (First (Pragma_Argument_Associations (PMEQD)))); elsif Present (PMEQL) then Max := Expr_Value (Expression (First (Pragma_Argument_Associations (PMEQL)))); @@ -12224,9 +12219,9 @@ package body Sem_Util is return Ekind (Id) = E_Entry and then - (Present (Get_Pragma (Id, Pragma_Max_Queue_Length)) or else - Present (Get_Pragma (Id, Pragma_Max_Entry_Queue_Depth)) or else - Present (Get_Pragma (Id, Pragma_Max_Entry_Queue_Length))); + (Present (Get_Pragma (Id, Pragma_Max_Queue_Length)) + or else + Present (Get_Pragma (Id, Pragma_Max_Entry_Queue_Length))); end Has_Max_Queue_Length; --------------------------------- diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index d2f724f86ca..ade933e0bbc 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -613,7 +613,6 @@ package Snames is Name_Machine_Attribute : constant Name_Id := N + $; -- GNAT Name_Main : constant Name_Id := N + $; -- GNAT Name_Main_Storage : constant Name_Id := N + $; -- GNAT - Name_Max_Entry_Queue_Depth : constant Name_Id := N + $; -- GNAT Name_Max_Entry_Queue_Length : constant Name_Id := N + $; -- Ada 12 Name_Max_Queue_Length : constant Name_Id := N + $; -- GNAT Name_Memory_Size : constant Name_Id := N + $; -- Ada 83 @@ -829,6 +828,7 @@ package Snames is Name_Link_Name : constant Name_Id := N + $; Name_Low_Order_First : constant Name_Id := N + $; Name_Lowercase : constant Name_Id := N + $; + Name_Max_Entry_Queue_Depth : constant Name_Id := N + $; Name_Max_Size : constant Name_Id := N + $; Name_Mechanism : constant Name_Id := N + $; Name_Message : constant Name_Id := N + $; @@ -1900,7 +1900,6 @@ package Snames is Pragma_Machine_Attribute, Pragma_Main, Pragma_Main_Storage, - Pragma_Max_Entry_Queue_Depth, Pragma_Max_Entry_Queue_Length, Pragma_Max_Queue_Length, Pragma_Memory_Size, From patchwork Thu Jun 20 08:53:04 2024 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: 1949995 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=R7jOD5U9; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZGB3sxfz20X6 for ; Thu, 20 Jun 2024 19:00:50 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 90F163890429 for ; Thu, 20 Jun 2024 09:00:48 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by sourceware.org (Postfix) with ESMTPS id 65B633888C71 for ; Thu, 20 Jun 2024 08:53:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 65B633888C71 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 65B633888C71 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; cv=none; b=DcuIYLf0W6ccJ/7M4roygR3JAteffpC0lUO9p7+PmjPxs76vBBP1sIolsMXdL0+w29D47lEJt9To6hJO5tDiiPISKeay8bNHuYRvdets2qh9o6jO1NHW0AV90U0Hv/q4mLGeWdtNxsuWqEeYL2nCq9fbHKTMVOxfS1o7FYg4rZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; c=relaxed/simple; bh=ybCam+IZF067SYeyv/qCMCr9zWyj6Z3y+V6MoLC9W6s=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=T3Ur0exhIhXoI61ZTxYzUQegaEskCfT6bu2d2eouyYTliqXecNax+3PUAlLuDGDpcG7zX14F8wr2WSXy9HrCHY61lcr3onaACOFbII1ZlyCuIJxTXNQNHtwWRq4MgV+cP8OuicMPcBtL5yOatd3H1/Z2P9ArHfEe8Omr3AQRgs0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3627ef1fc07so524523f8f.3 for ; Thu, 20 Jun 2024 01:53:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873622; x=1719478422; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=waaOL0UaHzitfGUSgpjNupHHpcoZzsa1Tgfk3KO2F24=; b=R7jOD5U9P/SLdEF7pIeznxoN28l/YFJLvYtPWcWHYqkp6pePqrOl+dI7C5z904xHcs 1AAa9uYf/kqA7yV2CyBqm3jtKw8MdIaVbl+6SBKEtCTR/Coz5WRD7ACb1vzbOXnScTiy 6wIZAIsy9W7ZSoRMQ2ZBNO7jiUdvq9DOU7FFmoxIWcIaUIhlthTQWkcAWV9ZlUiyBJ5B xwIY6ww3amira/WGOjO+8Rbq4umTGNsLOlR9on0i4LcPtkGE2yJoDBF0rupEiYc49IXm 9AhQmL/frHrAuSpquxQqzXVirPjsKs7rHgcGKHUGWtx7V0BxwzA8Pu1V1q+mOGhXDHVd mJow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873622; x=1719478422; 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=waaOL0UaHzitfGUSgpjNupHHpcoZzsa1Tgfk3KO2F24=; b=IONVWQeJdvzhF+hRPcdGCs7GhRStbuPaYcA8yP/H+WNE0tZHBoQDZAkxLEOxZTt4Ao 2ZV2iJ+v9xWh+Xcgzc9lgeujgVC/9Mz/RPPASCD+lsNx6VM/gfS+9oi/pRfVP+ZO/pPK sRvfgquW8KAUWOq6lRtp18axR/Zr5yOOLAsp9Ok/Wfh9l3tJnmxgos2kt7TB8Rv7gT2M 1YRKJnFnkfr5Ohzzze5ffRzyitF2Q678wsbNBlZrd4afhXJDAYiE8W+krZEn0Nlmm6tl JdpjDO+wXsJS74SiOFcXUC/92yIZzXbbRM948S4MSUSAOl437RyQQB4+vf1rBQlTkILw m4Uw== X-Gm-Message-State: AOJu0YytkffMevUWm2AkfOodqe50y3j7swuxmSjqGuF5pBqs3GSbD4gP EVwhOg4I9s08JMGRU43BNirqAGG7y6fmveBghDl6DCLYqYYu6NlDmG4fiK9r5wE+/12oZjnP+4s = X-Google-Smtp-Source: AGHT+IEiT780TIc93u0yjMxd6zAwy2Ugswcfv7zuAibNA4GYHMXxx3G6ubrqptpPT5Ciiylh/H2L2A== X-Received: by 2002:adf:a1d1:0:b0:360:780a:6653 with SMTP id ffacd0b85a97d-363199907b1mr2834401f8f.57.1718873622121; Thu, 20 Jun 2024 01:53:42 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:41 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Piotr Trojanek Subject: [COMMITTED 14/30] ada: Fix style in freezing code Date: Thu, 20 Jun 2024 10:53:04 +0200 Message-ID: <20240620085321.2412421-14-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Piotr Trojanek Code cleanup; semantics is unaffected. gcc/ada/ * freeze.adb (Find_Aspect_No_Parts): Tune whitespace. * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Fix style. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/freeze.adb | 8 +++----- gcc/ada/sem_ch13.adb | 6 +++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 452e11fc747..2fcc2ce02e7 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -3201,9 +3201,7 @@ package body Freeze is -- Search through aspects present on the private type while Present (Curr_Aspect_Spec) loop - if Get_Aspect_Id (Curr_Aspect_Spec) - = Aspect_No_Parts - then + if Get_Aspect_Id (Curr_Aspect_Spec) = Aspect_No_Parts then Aspect_Spec := Curr_Aspect_Spec; exit; end if; @@ -8906,8 +8904,8 @@ package body Freeze is -- Now we have the right place to do the freezing. First, a special -- adjustment, if we are in spec-expression analysis mode, these freeze -- actions must not be thrown away (normally all inserted actions are - -- thrown away in this mode. However, the freeze actions are from static - -- expressions and one of the important reasons we are doing this + -- thrown away in this mode). However, the freeze actions are from + -- static expressions and one of the important reasons we are doing this -- special analysis is to get these freeze actions. Therefore we turn -- off the In_Spec_Expression mode to propagate these freeze actions. -- This also means they get properly analyzed and expanded. diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index f2f1b0cb853..f65217b0b90 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -11003,10 +11003,10 @@ package body Sem_Ch13 is -- Expression to be analyzed at end of declarations Freeze_Expr : constant Node_Id := Expression (ASN); - -- Expression from call to Check_Aspect_At_Freeze_Point. + -- Expression from call to Check_Aspect_At_Freeze_Point T : constant Entity_Id := - (if Present (Freeze_Expr) and A_Id /= Aspect_Stable_Properties + (if Present (Freeze_Expr) and then A_Id /= Aspect_Stable_Properties then Etype (Original_Node (Freeze_Expr)) else Empty); -- Type required for preanalyze call. We use the original expression to @@ -11073,7 +11073,7 @@ package body Sem_Ch13 is if In_Instance then return; - -- The enclosing scope may have been rewritten during expansion (.e.g. a + -- The enclosing scope may have been rewritten during expansion (e.g. a -- task body is rewritten as a procedure) after this conformance check -- has been performed, so do not perform it again (it may not easily be -- done if full visibility of local entities is not available). From patchwork Thu Jun 20 08:53:05 2024 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: 1950019 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=eVKSGeHi; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zcq3ndrz20X6 for ; Thu, 20 Jun 2024 19:16:59 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B270238930CE for ; Thu, 20 Jun 2024 09:16:57 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id 2A6283888C74 for ; Thu, 20 Jun 2024 08:53:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2A6283888C74 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2A6283888C74 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; cv=none; b=UZMpEoBunkOKtDQ9ybYhVukBuHGCV4byMWy4/4qsBU6LVfVwPthAckkaIfO5ECmwcWL0EQ6/uEQE75ldRn6kKh+Fvyl8DcE+Rze+9cFdqqVUMoIo79m460E/XpFeh0lNUeYOxAD4AtuWu//5/BQxP8fJJhyHkzwuGfNawKHQa1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873628; c=relaxed/simple; bh=Gx5h2LyefH9sWJTflibAhWc/NnaEDgtk+0aGf7RCgHs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=cO7Mhs1ReeU7Af+nwYKjB/9M4jQN+YZpgO/yH0g8vxdm0griDmNBf1WrOe4Xj7wOPBM5rvDMAwSGUAErSlvGLXqEh+fD9JPT9g/Tf0HcsB9Dx48zcwYuReoZWpsKmbFU07Iqi6GIagvDXJ84gpv3I9ltx5a7NmjsTA5q8QD886U= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-361785bfa71so585707f8f.2 for ; Thu, 20 Jun 2024 01:53:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873623; x=1719478423; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Orimv94JDuG6wx8T0cZHMhyDBw05VvD0M8uwE4NCPys=; b=eVKSGeHiDlBiEMX+1hG0ITjYZCFEX+LxJP0nGTL/0p4JNAW7GQClNQsDjBI2lxfu4U T1IwnCQAgOztPnb8mlWNbbFLZcNB7KWhZHlHlGwl+/qiWloKUxET7KxagCZdarIz4ppT cBxU2BDCzAaGUIL8yfvjKKHFWDjnluwFgIVeNzond2TyLeB1ehLZKbbr9o2mZe5PPNMh a69DY3PNMZJGOw9urpYEX/XoN/e7KHF2nkFt/VuBHcaIitPDk9VfCYaR6ASFjTsMSNf7 2SdmtNUuFT/HXsYBmwxB2+hqGhFRaj4L0MeZTNra796A+UyxdvCWiGFueAfMjsEJajwX fVCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873623; x=1719478423; 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=Orimv94JDuG6wx8T0cZHMhyDBw05VvD0M8uwE4NCPys=; b=fyWljguPyPqCIeQgf0CkQK0XLTCzFWi+PYyevfC4kiYo7EhRprEJJ/thHORhcuDcya JA8bUSfWrpsIVPsxPbkyVcaV+th1fJdDd3BpdiVJaXLJA0ME2bsZpz0LiCTDiheV/zrR DZ7uhxovlG+DY8zjXVAzgKXnRRt48NbnhGvcVJyT0zRTDin2PnRJeQwFCRdEZe1Jg1uJ JZoIXkzK/yJFXpjuD4u61sudKZVAJfz0O81rr/a3p0FX3ihrgRvf9whlZfhiXdY+B3CH foKyKl1/IpTnIvXmoppab3BriYHuhmzzEhmhNv9r28NP+n8VeIzJ9uR3lhVZh5Jf0LH4 BhUQ== X-Gm-Message-State: AOJu0Yx8DV/JbSl8StAoCg2u52PmHtsvD8QkFcsMmLh6eHbaNphlgjwc DM0cGR+9eGi43VvTXgA6YN9SaB8mxqeskSsMKXJR2aDDY6E3FwceBfQ3IrAVRs8YqvU/GTVxc3g = X-Google-Smtp-Source: AGHT+IGUgtqeL6OTmv0TUkY+gUabqNxNO+4qR+go0sR49VbNN8DhdHQx7KZngPnoWgdTU2/npi3ABg== X-Received: by 2002:a5d:4b0d:0:b0:35f:29a8:2abc with SMTP id ffacd0b85a97d-363192cdf2cmr3471059f8f.56.1718873622852; Thu, 20 Jun 2024 01:53:42 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:42 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Piotr Trojanek Subject: [COMMITTED 15/30] ada: Remove redundant conditions from freezing code Date: Thu, 20 Jun 2024 10:53:05 +0200 Message-ID: <20240620085321.2412421-15-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Piotr Trojanek Code cleanup; behavior is unaffected. gcc/ada/ * freeze.adb (Check_Current_Instance): This routine is only called with parameter E being a type entity, so there is no need to check for types just before the equality with E. * sem_ch13.adb (Analyze_Aspect_Specifications): Regroup condition to avoid unnecessary evaluation. (Check_Aspect_At_End_Of_Declarations): If In_Instance is true, then the routine exits early. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/freeze.adb | 1 - gcc/ada/sem_ch13.adb | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 2fcc2ce02e7..2a0a59f5b03 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -3086,7 +3086,6 @@ package body Freeze is when N_Attribute_Reference => if Attribute_Name (N) in Name_Access | Name_Unchecked_Access and then Is_Entity_Name (Prefix (N)) - and then Is_Type (Entity (Prefix (N))) and then Entity (Prefix (N)) = E then if Ada_Version < Ada_2012 then diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index f65217b0b90..d81b7412313 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -4086,12 +4086,12 @@ package body Sem_Ch13 is Error_Msg_N ("aspect% cannot apply to subtype", Id); goto Continue; - elsif A_Id = Aspect_Default_Value - and then not Is_Scalar_Type (E) - then - Error_Msg_N - ("aspect% can only be applied to scalar type", Id); - goto Continue; + elsif A_Id = Aspect_Default_Value then + if not Is_Scalar_Type (E) then + Error_Msg_N + ("aspect% can only be applied to scalar type", Id); + goto Continue; + end if; elsif A_Id = Aspect_Default_Component_Value then if not Is_Array_Type (E) then @@ -11118,7 +11118,7 @@ package body Sem_Ch13 is -- If the end of declarations comes before any other freeze point, -- the Freeze_Expr is not analyzed: no check needed. - if Analyzed (Freeze_Expr) and then not In_Instance then + if Analyzed (Freeze_Expr) then Check_Overloaded_Name; else Err := False; From patchwork Thu Jun 20 08:53:06 2024 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: 1950011 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=UNb9QHEf; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZWF3Fyvz20X8 for ; Thu, 20 Jun 2024 19:12:09 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1B66C3891C13 for ; Thu, 20 Jun 2024 09:12:07 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id E085D3889831 for ; Thu, 20 Jun 2024 08:53:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E085D3889831 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E085D3889831 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873638; cv=none; b=GiiH9PGZhEHnfXB4VuvsznTUlrMahCQN9ckf8xFPiY9fWch6xlSOpH5pk3qebNMgDjZUO+lfXGcc6N4OkWzEZtGX95HeNuZF1+JRvOoOoyf+gCwSkFvOx+uBoTWgWn3x4+xRKTKZccJTU4F6aMGzeCkHFczZVvdsJJso/WnEF1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873638; c=relaxed/simple; bh=ltn8Fz7bDCgRuyOsm7xMPqBu1PWaFSJJfVm5kmvEbSg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=erUyw0x7gqGsbNg3FJDXpzXLcDJSXbH5tR54dAD7vavft6uo+DJoGF31HWlbjtqbMRO5b78e4A1N8+47k1QyxdUJ5zxp0UxCEyhRuBJOE4Z+qXDSLSxynYCtlr0vOIdOevxFq8LScnkJ1J2Zw+zpi7F8b5zRUV49b20VNMAWx8I= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-363826fbcdeso535153f8f.0 for ; Thu, 20 Jun 2024 01:53:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873623; x=1719478423; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oOvWLKCzCNWmLFwye6dOLYScV3mZ04wvPSN/OkN+VnU=; b=UNb9QHEfZ40M7kwx/EJCprybpsRaeBhBYhLSQGXU3tRhhf+pXCIMKXFeG9UsfKk/wl Srr9BYz2/PMDj4fcpeHmiod/S7wu7QkyJbujaeCh9uiMJzL/7CDXlPCOCuyCZ0MsVC7v zXQZ7vFJFIGnGI/0yjvjKPx0jfl6ZwfSyviWaa6+xtBpk//Fa90Qd5yycedeO8h8WYBj zEoLXlikClWvBd35izQ1R8fgKm+KyXxQiHSfwjTKtbt6qhQo9SiuphFYi6k8J6PtXgSF eoSBa7ki/8Evyr/nRTCc0iH3+tFjY0aujkogpMMZdfarCydQLXEe1SPOCHASMxOtApc4 zDcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873623; x=1719478423; 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=oOvWLKCzCNWmLFwye6dOLYScV3mZ04wvPSN/OkN+VnU=; b=OYJEJ3JaFtvERRm/Kk7GE6sAjQvCYKAoRLLCxu/hdx1ds9/WaDd7ZpDGibsKE0JNsv 8iHRzlJCo5Mj/YDZz29M5NgCsGmTeXHZwLry7xt53DhTWwHgqW6nZ1vVzO3pci9bVnR7 h/EmywJ/vZBxTSQknHd/LbWPWGUHXU5qTiRJLgRjSPM2GnvEsDMkBjKYnfAojqaI6p5x cx79txMt4+YVLeZ4amsP4VjqVBN7FMQ0n12AxxnFbaJZ0S3mVuyJTCxtHQW9YnFDAwRo IUbKIO5ET7hFHGFt+yp2jDVqKMbkllLJUHD6h1RjB9YTd+1B+4iJdx5lz8G/iPg4dsp4 Hopg== X-Gm-Message-State: AOJu0Yz7sYg0XM94O0G+pX0Om8/Z598HTlcnYxVTEP07pjvCfbQwp7/l +ANj0WedFkBJqpiMZ1A4tbz3A/UvuRkTQuEx786GGvapozol+X5TSprJKhbNWmSdSv3UqulyQzA = X-Google-Smtp-Source: AGHT+IE0HsEXLxB/lqmza4MS372BVD52jejXYnQGqa34KZEN8953JBNoU9VLeEuxlgKj2Uad8QJeow== X-Received: by 2002:adf:a3ca:0:b0:362:ebf5:3fd with SMTP id ffacd0b85a97d-36317b786e4mr3208585f8f.30.1718873623656; Thu, 20 Jun 2024 01:53:43 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:43 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 16/30] ada: Streamline propagation of controlled flags on types Date: Thu, 20 Jun 2024 10:53:06 +0200 Message-ID: <20240620085321.2412421-16-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> 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, KAM_ASCII_DIVIDERS, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou The front-end maintains a set of 4 flags on (base) types that are used to parameterize the implementation of controlled operations, and these flags need to be propagated through composition and derivation. This is done on a per-flag basis in the current implementation with a few loopholes. This introduces a Propagate_Controlled_Flags routine to that effect, which is modeled on the existing Propagate_Concurrent_Flags routine, and is used in most cases to do the propagation. This also removes the handling of the Finalize_Storage_Only flag from Inherit_Aspects_At_Freeze_Point, since the associated aspect does not exist (only the pragma does). gcc/ada/ * freeze.adb (Freeze_Array_Type): Call Propagate_Controlled_Flags to propagate the controlled flags from the component to the array. (Freeze_Record_Type): Propagate the Finalize_Storage_Only flag from the components to the record. * sem_ch3.adb (Analyze_Private_Extension_Declaration): Do not call Propagate_Concurrent_Flags here but... (Array_Type_Declaration): Tidy and call Propagate_Controlled_Flags to propagate the controlled flags from the component to the array. (Build_Derived_Private_Type): Do not propagate the controlled flags manually here but... (Build_Derived_Record_Type): ...call Propagate_Controlled_Flags to propagate the controlled flags from parent to derived type. (Build_Derived_Type): Likewise. (Copy_Array_Base_Type_Attributes): Call Propagate_Controlled_Flags to copy the controlled flags. (Record_Type_Definition): Streamline the propagation of the Finalize_Storage_Only flag from the components to the record. * sem_ch7.adb (Preserve_Full_Attributes): Use Full_Base and call Propagate_Controlled_Flags to copy the controlled flags. * sem_ch9.adb (Analyze_Protected_Definition): Use canonical idiom to compute Has_Controlled_Component. (Analyze_Protected_Type_Declaration): Minor tweak. * sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): Do not deal with Finalize_Storage_Only here. * sem_util.ads (Propagate_Controlled_Flags): New declaration. * sem_util.adb (Propagate_Controlled_Flags): New procedure. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/freeze.adb | 22 ++++++--- gcc/ada/sem_ch13.adb | 7 --- gcc/ada/sem_ch3.adb | 108 +++++++++++++------------------------------ gcc/ada/sem_ch7.adb | 11 ++--- gcc/ada/sem_ch9.adb | 7 +-- gcc/ada/sem_util.adb | 48 +++++++++++++++++++ gcc/ada/sem_util.ads | 11 +++++ 7 files changed, 113 insertions(+), 101 deletions(-) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 2a0a59f5b03..d0dd1de087d 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -3661,12 +3661,7 @@ package body Freeze is -- Propagate flags from component type Propagate_Concurrent_Flags (Arr, Ctyp); - - if Is_Controlled (Ctyp) - or else Has_Controlled_Component (Ctyp) - then - Set_Has_Controlled_Component (Arr); - end if; + Propagate_Controlled_Flags (Arr, Ctyp, Comp => True); if Has_Unchecked_Union (Ctyp) then Set_Has_Unchecked_Union (Arr); @@ -5083,6 +5078,9 @@ package body Freeze is -- Accumulates total Esize values of all elementary components. Used -- for processing of Implicit_Packing. + Final_Storage_Only : Boolean := True; + -- Used to compute the Finalize_Storage_Only flag + Placed_Component : Boolean := False; -- Set True if we find at least one component with a component -- clause (used to warn about useless Bit_Order pragmas, and also @@ -5708,6 +5706,9 @@ package body Freeze is (Corresponding_Record_Type (Etype (Comp))))) then Set_Has_Controlled_Component (Rec); + Final_Storage_Only := + Final_Storage_Only + and then Finalize_Storage_Only (Etype (Comp)); end if; if Has_Unchecked_Union (Etype (Comp)) then @@ -5739,6 +5740,15 @@ package body Freeze is Next_Component (Comp); end loop; + + -- For a type that is not directly controlled but has controlled + -- components, Finalize_Storage_Only is set if all the controlled + -- components are Finalize_Storage_Only. + + if not Is_Controlled (Rec) and then Has_Controlled_Component (Rec) + then + Set_Finalize_Storage_Only (Rec, Final_Storage_Only); + end if; end if; -- Enforce the restriction that access attributes with a current diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index d81b7412313..4012932a6f2 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -14097,13 +14097,6 @@ package body Sem_Ch13 is Set_Has_Volatile_Components (Imp_Bas_Typ); end if; - -- Finalize_Storage_Only - - Rep := Get_Inherited_Rep_Item (Typ, Name_Finalize_Storage_Only); - if Present (Rep) then - Set_Finalize_Storage_Only (Bas_Typ); - end if; - -- Universal_Aliasing Rep := Get_Inherited_Rep_Item (Typ, Name_Universal_Aliasing); diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 76e5cdcbf5d..0e951c1b6b8 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -5485,10 +5485,7 @@ package body Sem_Ch3 is Reinit_Size_Align (T); Set_Default_SSO (T); Set_No_Reordering (T, No_Component_Reordering); - - Set_Etype (T, Parent_Base); - Propagate_Concurrent_Flags (T, Parent_Base); - + Set_Etype (T, Parent_Base); Set_Convention (T, Convention (Parent_Type)); Set_First_Rep_Item (T, First_Rep_Item (Parent_Type)); Set_Is_First_Subtype (T); @@ -6567,14 +6564,16 @@ package body Sem_Ch3 is end if; if Nkind (Def) = N_Constrained_Array_Definition then + Index := First (Discrete_Subtype_Definitions (Def)); + -- Establish Implicit_Base as unconstrained base type Implicit_Base := Create_Itype (E_Array_Type, P, Related_Id, 'B'); Set_Etype (Implicit_Base, Implicit_Base); Set_Scope (Implicit_Base, Current_Scope); + Set_First_Index (Implicit_Base, Index); Set_Has_Delayed_Freeze (Implicit_Base); - Set_Default_SSO (Implicit_Base); -- The constrained array type is a subtype of the unconstrained one @@ -6582,27 +6581,9 @@ package body Sem_Ch3 is Reinit_Size_Align (T); Set_Etype (T, Implicit_Base); Set_Scope (T, Current_Scope); - Set_Is_Constrained (T); - Set_First_Index (T, - First (Discrete_Subtype_Definitions (Def))); + Set_First_Index (T, Index); Set_Has_Delayed_Freeze (T); - - -- Complete setup of implicit base type - - pragma Assert (not Known_Component_Size (Implicit_Base)); - Set_Component_Type (Implicit_Base, Element_Type); - Set_Finalize_Storage_Only - (Implicit_Base, - Finalize_Storage_Only (Element_Type)); - Set_First_Index (Implicit_Base, First_Index (T)); - Set_Has_Controlled_Component - (Implicit_Base, - Has_Controlled_Component (Element_Type) - or else Is_Controlled (Element_Type)); - Set_Packed_Array_Impl_Type - (Implicit_Base, Empty); - - Propagate_Concurrent_Flags (Implicit_Base, Element_Type); + Set_Is_Constrained (T); -- Unconstrained array case @@ -6611,26 +6592,15 @@ package body Sem_Ch3 is Reinit_Size_Align (T); Set_Etype (T, T); Set_Scope (T, Current_Scope); - pragma Assert (not Known_Component_Size (T)); - Set_Is_Constrained (T, False); + Set_First_Index (T, First (Subtype_Marks (Def))); + Set_Has_Delayed_Freeze (T); Set_Is_Fixed_Lower_Bound_Array_Subtype (T, Has_FLB_Index); - Set_First_Index (T, First (Subtype_Marks (Def))); - Set_Has_Delayed_Freeze (T, True); - Propagate_Concurrent_Flags (T, Element_Type); - Set_Has_Controlled_Component (T, Has_Controlled_Component - (Element_Type) - or else - Is_Controlled (Element_Type)); - Set_Finalize_Storage_Only (T, Finalize_Storage_Only - (Element_Type)); - Set_Default_SSO (T); end if; -- Common attributes for both cases - Set_Component_Type (Base_Type (T), Element_Type); - Set_Packed_Array_Impl_Type (T, Empty); + Set_Component_Type (Etype (T), Element_Type); if Aliased_Present (Component_Definition (Def)) then Set_Has_Aliased_Components (Etype (T)); @@ -6641,6 +6611,13 @@ package body Sem_Ch3 is Set_Has_Independent_Components (Etype (T)); end if; + pragma Assert (not Known_Component_Size (Etype (T))); + + Propagate_Concurrent_Flags (Etype (T), Element_Type); + Propagate_Controlled_Flags (Etype (T), Element_Type, Comp => True); + + Set_Default_SSO (Etype (T)); + -- Ada 2005 (AI-231): Propagate the null-excluding attribute to the -- array type to ensure that objects of this type are initialized. @@ -8516,22 +8493,6 @@ package body Sem_Ch3 is Set_Stored_Constraint (Derived_Type, No_Elist); Set_Is_Constrained (Derived_Type, Is_Constrained (Parent_Type)); - Set_Is_Controlled_Active - (Derived_Type, Is_Controlled_Active (Parent_Type)); - - Set_Disable_Controlled - (Derived_Type, Disable_Controlled (Parent_Type)); - - Set_Has_Controlled_Component - (Derived_Type, Has_Controlled_Component (Parent_Type)); - - -- Direct controlled types do not inherit Finalize_Storage_Only flag - - if not Is_Controlled (Parent_Type) then - Set_Finalize_Storage_Only - (Base_Type (Derived_Type), Finalize_Storage_Only (Parent_Type)); - end if; - -- If this is not a completion, construct the implicit full view by -- deriving from the full view of the parent type. But if this is a -- completion, the derived private type being built is a full view @@ -9848,8 +9809,9 @@ package body Sem_Ch3 is -- Fields inherited from the Parent_Base - Set_Has_Controlled_Component - (Derived_Type, Has_Controlled_Component (Parent_Base)); + Propagate_Concurrent_Flags (Derived_Type, Parent_Base); + Propagate_Controlled_Flags (Derived_Type, Parent_Base, Deriv => True); + Set_Has_Non_Standard_Rep (Derived_Type, Has_Non_Standard_Rep (Parent_Base)); Set_Has_Primitive_Operations @@ -9914,9 +9876,6 @@ package body Sem_Ch3 is and then Scope (Scope (Scope (Derived_Type))) = Standard_Standard then Set_Is_Controlled_Active (Derived_Type); - else - Set_Is_Controlled_Active - (Derived_Type, Is_Controlled_Active (Parent_Base)); end if; -- Minor optimization: there is no need to generate the class-wide @@ -10194,17 +10153,15 @@ package body Sem_Ch3 is Set_Scope (Derived_Type, Current_Scope); Set_Etype (Derived_Type, Parent_Base); Mutate_Ekind (Derived_Type, Ekind (Parent_Base)); - Propagate_Concurrent_Flags (Derived_Type, Parent_Base); + + Propagate_Concurrent_Flags (Derived_Type, Parent_Base); + Propagate_Controlled_Flags (Derived_Type, Parent_Base, Deriv => True); Set_Size_Info (Derived_Type, Parent_Type); Copy_RM_Size (To => Derived_Type, From => Parent_Type); - Set_Is_Controlled_Active - (Derived_Type, Is_Controlled_Active (Parent_Type)); - - Set_Disable_Controlled (Derived_Type, Disable_Controlled (Parent_Type)); - Set_Is_Tagged_Type (Derived_Type, Is_Tagged_Type (Parent_Type)); - Set_Is_Volatile (Derived_Type, Is_Volatile (Parent_Type)); + Set_Is_Tagged_Type (Derived_Type, Is_Tagged_Type (Parent_Type)); + Set_Is_Volatile (Derived_Type, Is_Volatile (Parent_Type)); if Is_Tagged_Type (Derived_Type) then Set_No_Tagged_Streams_Pragma @@ -15272,9 +15229,9 @@ package body Sem_Ch3 is Set_Component_Alignment (T1, Component_Alignment (T2)); Set_Component_Type (T1, Component_Type (T2)); Set_Component_Size (T1, Component_Size (T2)); - Set_Has_Controlled_Component (T1, Has_Controlled_Component (T2)); Set_Has_Non_Standard_Rep (T1, Has_Non_Standard_Rep (T2)); Propagate_Concurrent_Flags (T1, T2); + Propagate_Controlled_Flags (T1, T2); Set_Is_Packed (T1, Is_Packed (T2)); Set_Has_Aliased_Components (T1, Has_Aliased_Components (T2)); Set_Has_Atomic_Components (T1, Has_Atomic_Components (T2)); @@ -22950,8 +22907,7 @@ package body Sem_Ch3 is procedure Record_Type_Definition (Def : Node_Id; Prev_T : Entity_Id) is Component : Entity_Id; - Ctrl_Components : Boolean := False; - Final_Storage_Only : Boolean; + Final_Storage_Only : Boolean := True; T : Entity_Id; begin @@ -22963,8 +22919,6 @@ package body Sem_Ch3 is Set_Is_Not_Self_Hidden (T); - Final_Storage_Only := not Is_Controlled (T); - -- Ada 2005: Check whether an explicit "limited" is present in a derived -- type declaration. @@ -23020,20 +22974,20 @@ package body Sem_Ch3 is or else (Chars (Component) /= Name_uParent and then Is_Controlled (Etype (Component)))) then - Set_Has_Controlled_Component (T, True); + Set_Has_Controlled_Component (T); Final_Storage_Only := Final_Storage_Only and then Finalize_Storage_Only (Etype (Component)); - Ctrl_Components := True; end if; Next_Entity (Component); end loop; - -- A Type is Finalize_Storage_Only only if all its controlled components - -- are also. + -- For a type that is not directly controlled but has controlled + -- components, Finalize_Storage_Only is set if all the controlled + -- components are Finalize_Storage_Only. - if Ctrl_Components then + if not Is_Controlled (T) and then Has_Controlled_Component (T) then Set_Finalize_Storage_Only (T, Final_Storage_Only); end if; diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb index 0f0fc90ad6b..28031b5dbc2 100644 --- a/gcc/ada/sem_ch7.adb +++ b/gcc/ada/sem_ch7.adb @@ -2919,6 +2919,7 @@ package body Sem_Ch7 is (Priv, Has_Pragma_Unreferenced_Objects (Full)); Set_Predicates_Ignored (Priv, Predicates_Ignored (Full)); + if Is_Unchecked_Union (Full) then Set_Is_Unchecked_Union (Base_Type (Priv)); end if; @@ -2928,14 +2929,8 @@ package body Sem_Ch7 is end if; if Priv_Is_Base_Type then - Set_Is_Controlled_Active - (Priv, Is_Controlled_Active (Full_Base)); - Set_Finalize_Storage_Only - (Priv, Finalize_Storage_Only (Full_Base)); - Set_Has_Controlled_Component - (Priv, Has_Controlled_Component (Full_Base)); - - Propagate_Concurrent_Flags (Priv, Base_Type (Full)); + Propagate_Concurrent_Flags (Priv, Full_Base); + Propagate_Controlled_Flags (Priv, Full_Base); end if; -- As explained in Freeze_Entity, private types are required to point diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb index 5172b62f2fc..391cbeb02a9 100644 --- a/gcc/ada/sem_ch9.adb +++ b/gcc/ada/sem_ch9.adb @@ -2011,8 +2011,9 @@ package body Sem_Ch9 is else Propagate_Concurrent_Flags (Prot_Typ, Etype (Item_Id)); - if Chars (Item_Id) /= Name_uParent - and then Needs_Finalization (Etype (Item_Id)) + if Has_Controlled_Component (Etype (Item_Id)) + or else (Chars (Item_Id) /= Name_uParent + and then Is_Controlled (Etype (Item_Id))) then Set_Has_Controlled_Component (Prot_Typ); end if; @@ -2167,7 +2168,7 @@ package body Sem_Ch9 is or else Has_Interrupt_Handler (T) or else Has_Attach_Handler (T)) then - Set_Has_Controlled_Component (T, True); + Set_Has_Controlled_Component (T); end if; -- The Ekind of components is E_Void during analysis for historical diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 7f5d70245dd..8425359e052 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -26238,6 +26238,54 @@ package body Sem_Util is end if; end Propagate_Concurrent_Flags; + -------------------------------- + -- Propagate_Controlled_Flags -- + -------------------------------- + + procedure Propagate_Controlled_Flags + (Typ : Entity_Id; + From_Typ : Entity_Id; + Comp : Boolean := False; + Deriv : Boolean := False) + is + begin + -- It does not make sense to have both Comp and Deriv set True + + pragma Assert (not Comp or else not Deriv); + + -- This implementation only supports array types for the component case. + -- Disregard Is_Controlled_Active and Disable_Controlled in this case. + + if Comp then + pragma Assert (Is_Array_Type (Typ)); + + else + if Is_Controlled_Active (From_Typ) then + Set_Is_Controlled_Active (Typ); + end if; + + if Disable_Controlled (From_Typ) then + Set_Disable_Controlled (Typ); + end if; + end if; + + -- Direct controlled types do not inherit Finalize_Storage_Only + + if not (Deriv and then Is_Controlled (From_Typ)) then + if Finalize_Storage_Only (From_Typ) then + Set_Finalize_Storage_Only (Typ); + end if; + end if; + + -- Is_Controlled yields Has_Controlled_Component for component + + if Has_Controlled_Component (From_Typ) + or else (Comp and then Is_Controlled (From_Typ)) + then + Set_Has_Controlled_Component (Typ); + end if; + end Propagate_Controlled_Flags; + ------------------------------ -- Propagate_DIC_Attributes -- ------------------------------ diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index bda295f0a7f..7363ad96bd8 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -2914,6 +2914,17 @@ package Sem_Util is -- by one of these flags. This procedure can only set flags for Typ, and -- never clear them. Comp_Typ is the type of a component or a parent. + procedure Propagate_Controlled_Flags + (Typ : Entity_Id; + From_Typ : Entity_Id; + Comp : Boolean := False; + Deriv : Boolean := False); + -- Set Disable_Controlled, Finalize_Storage_Only, Has_Controlled_Component, + -- and Is_Controlled_Active on Typ when the flags are set on From_Typ. If + -- Comp is True, From_Typ is the type of a component of Typ while, if Deriv + -- is True, From_Typ is the parent type of Typ. This procedure can only set + -- flags for Typ, and never clear them. + procedure Propagate_DIC_Attributes (Typ : Entity_Id; From_Typ : Entity_Id); From patchwork Thu Jun 20 08:53:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1950015 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=infhYwXZ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZZd6mm4z20X8 for ; Thu, 20 Jun 2024 19:15:05 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6F381388E837 for ; Thu, 20 Jun 2024 09:15:03 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 99534388A03C for ; Thu, 20 Jun 2024 08:53:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 99534388A03C Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 99534388A03C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::433 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873647; cv=none; b=TVG+Q73JrpnUs6zkTenmcloE7ajk7T/sjGJhx1s4+g8+vWOKzPgaJe1v7yh9ePU2DSdErM/MmxHwgKZ67GNZ0A6mY/arF9UWKVrjfzbMhTGTw1ZiD5FgcDxbLfzWxR91kfVEPK+8TtB13ZyPEUnLsFLsgeDOWyRa+gIepSLvIGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873647; c=relaxed/simple; bh=yjAeYl8bbCEOET2Shze/QchGvJdCWD2O7e1M3rmXpMo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=a/JY1Ws2QoHAlqJkhAB6FINOGzJFF1dub9d5dbF1DMOIQUlOsVfDomb+5Hj8E1qcA0/nHqx6HjJIh5HUdVjgSu9L89GiW7Bs+VubJqW+Iaa17Kjrpoa8wNUwrNlJv2gO7kkOo/pTw8OcR2IwSZWWRj7x5vLzHH9QlZmRGBPRL2g= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-35f06861ae6so524066f8f.2 for ; Thu, 20 Jun 2024 01:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873628; x=1719478428; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6pWzTEw0F8YYj99PkHszxYPdmYq6jLnlHUti796oNTM=; b=infhYwXZVzlbkJrcCTG88nz5azyGEcC8Ueop9LBZSZV5ea7g8da6jF8mW0vCnBvQYh kpqxcCYYe+gfoKCpza81pjcb1GuE8o2lt4kM84n8M2n0C1OmLuz9GRASTbA1XecufuX/ Tk4s70zqeWYXsmP3cMwWbmTEPNhvPvUByJoAcQHF8vLQdA1b5G4QaMmel76SG3bc/zXz fHpQr62YDRa/Iqm3wnGgT5ztA5QxifZyf4bgCXd+mdRKtV/9g2z8a8l89Fpuaw9L9NFz jAKY/G2t5UixTdiHODBKo3njJst8L7G+Vil4NEIqSONfl5B4QLiuVnS99JFqWWOtYC8a c3Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873628; x=1719478428; 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=6pWzTEw0F8YYj99PkHszxYPdmYq6jLnlHUti796oNTM=; b=eOV10kuDpuAbNIefiz094ZFl2lOH066IOIxC7rL4FELzSkQaDoRloMHXKyRRMs7R0J FwM9nVAzc71G2tcD3SRNwL1SXcKdaANqApl9VSFX3nxXvhdSc0WprHzqgIOxzek3l+k8 TU2G0XYQWbSu3quulhiNYBXjA22WIYBE8TRxjQPLcPcK+WvhsPiEMcrSnThzEoKB3sGG Yor6JZIdpypHNCnyAcV8wHRjAOCfJ+uNeowmuLSXHQLMBDshDWVNAApact4pe6tB9LRq NTjNecz2lmCjmv5dViFyrnjBnXkx0KDUr4phGY8EkU4+7jRDRS8M4+0jEOG9kj42uVlF 5/fA== X-Gm-Message-State: AOJu0YxrbIUrhKtGIb3PrwzXRJQKQxlApK+u+r45CsL9+j3c+ERP2Fk7 QwYt6+TECUbuUtbW46MKH4i6+oOQy38qFxalgipzRysmAzCYKPV15PzFqYbvfl4icbmJuAAo2AY = X-Google-Smtp-Source: AGHT+IFC+r+QKdK+2aFubu8N36lIRaKUmRCkA3zRF7l+ajaEN43oM0SoEarJA9pzvSlFIh2lgBNQWQ== X-Received: by 2002:a05:6000:108:b0:360:9641:573a with SMTP id ffacd0b85a97d-363193c62dfmr3726811f8f.43.1718873625185; Thu, 20 Jun 2024 01:53:45 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:44 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Piotr Trojanek Subject: [COMMITTED 17/30] ada: Add documentation for Subprogram_Variant aspect and pragma Date: Thu, 20 Jun 2024 10:53:07 +0200 Message-ID: <20240620085321.2412421-17-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Piotr Trojanek For completeness, the GNAT Reference Manual should document aspects and pragmas that are specific to SPARK and described in the SPARK User's Guide. gcc/ada/ * doc/gnat_rm/implementation_defined_aspects.rst (Aspect Subprogram_Variant): Refer to SPARK User's Guide. * doc/gnat_rm/implementation_defined_pragmas.rst (Pragma Subprogram_Variant): Document syntax to satisfy the convention; refer to SPARK User's Guide for semantics. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../implementation_defined_aspects.rst | 7 + .../implementation_defined_pragmas.rst | 30 + gcc/ada/gnat_rm.texi | 1354 +++++++++-------- gcc/ada/gnat_ugn.texi | 2 +- 4 files changed, 738 insertions(+), 655 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst b/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst index ec09fe7f6c2..e19684c31b9 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst @@ -620,6 +620,13 @@ This aspect is equivalent to :ref:`pragma SPARK_Mode` and may be specified for either or both of the specification and body of a subprogram or package. +Aspect Subprogram_Variant +========================= +.. index:: Subprogram_Variant + +For the syntax and semantics of this aspect, see the SPARK 2014 Reference +Manual, section 6.1.8. + Aspect Suppress_Debug_Info ========================== .. index:: Suppress_Debug_Info diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index 0661670e047..acfa729dd4c 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -6347,6 +6347,36 @@ for the specified entity, as shown in the following example: pragma Style_Checks (Off, Arg); Rf2 : Integer := ARG; -- OK, no error +Pragma Subprogram_Variant +========================= +.. index:: Subprogram_Variant + +Syntax: + + +:: + + pragma Subprogram_Variant (SUBPROGRAM_VARIANT_LIST); + + SUBPROGRAM_VARIANT_LIST ::= + STRUCTURAL_SUBPROGRAM_VARIANT_ITEM + | NUMERIC_SUBPROGRAM_VARIANT_ITEMS + + NUMERIC_SUBPROGRAM_VARIANT_ITEMS ::= + NUMERIC_SUBPROGRAM_VARIANT_ITEM {, NUMERIC_SUBPROGRAM_VARIANT_ITEM} + + NUMERIC_SUBPROGRAM_VARIANT_ITEM ::= + CHANGE_DIRECTION => EXPRESSION + + STRUCTURAL_SUBPROGRAM_VARIANT_ITEM ::= + STRUCTURAL => EXPRESSION + + CHANGE_DIRECTION ::= Increases | Decreases + +The ``Subprogram_Variant`` pragma is intended to be an exact replacement for +the implementation-defined ``Subprogram_Variant`` aspect, and shares its +restrictions and semantics. + Pragma Subtitle =============== diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index e811ef2c02d..0c15ad511fa 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -265,6 +265,7 @@ Implementation Defined Pragmas * Pragma Static_Elaboration_Desired:: * Pragma Stream_Convert:: * Pragma Style_Checks:: +* Pragma Subprogram_Variant:: * Pragma Subtitle:: * Pragma Suppress:: * Pragma Suppress_All:: @@ -356,6 +357,7 @@ Implementation Defined Aspects * Aspect Simple_Storage_Pool:: * Aspect Simple_Storage_Pool_Type:: * Aspect SPARK_Mode:: +* Aspect Subprogram_Variant:: * Aspect Suppress_Debug_Info:: * Aspect Suppress_Initialization:: * Aspect Test_Case:: @@ -1386,6 +1388,7 @@ consideration, the use of these pragmas should be minimized. * Pragma Static_Elaboration_Desired:: * Pragma Stream_Convert:: * Pragma Style_Checks:: +* Pragma Subprogram_Variant:: * Pragma Subtitle:: * Pragma Suppress:: * Pragma Suppress_All:: @@ -7836,7 +7839,7 @@ a derived type of a non-limited tagged type. If such a type is specified then the pragma is silently ignored, and the default implementation of the stream attributes is used instead. -@node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas +@node Pragma Style_Checks,Pragma Subprogram_Variant,Pragma Stream_Convert,Implementation Defined Pragmas @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f6} @section Pragma Style_Checks @@ -7909,8 +7912,40 @@ pragma Style_Checks (Off, Arg); Rf2 : Integer := ARG; -- OK, no error @end example -@node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f7} +@node Pragma Subprogram_Variant,Pragma Subtitle,Pragma Style_Checks,Implementation Defined Pragmas +@anchor{gnat_rm/implementation_defined_pragmas pragma-subprogram-variant}@anchor{f7} +@section Pragma Subprogram_Variant + + +@geindex Subprogram_Variant + +Syntax: + +@example +pragma Subprogram_Variant (SUBPROGRAM_VARIANT_LIST); + +SUBPROGRAM_VARIANT_LIST ::= + STRUCTURAL_SUBPROGRAM_VARIANT_ITEM +| NUMERIC_SUBPROGRAM_VARIANT_ITEMS + +NUMERIC_SUBPROGRAM_VARIANT_ITEMS ::= + NUMERIC_SUBPROGRAM_VARIANT_ITEM @{, NUMERIC_SUBPROGRAM_VARIANT_ITEM@} + +NUMERIC_SUBPROGRAM_VARIANT_ITEM ::= + CHANGE_DIRECTION => EXPRESSION + +STRUCTURAL_SUBPROGRAM_VARIANT_ITEM ::= + STRUCTURAL => EXPRESSION + +CHANGE_DIRECTION ::= Increases | Decreases +@end example + +The @code{Subprogram_Variant} pragma is intended to be an exact replacement for +the implementation-defined @code{Subprogram_Variant} aspect, and shares its +restrictions and semantics. + +@node Pragma Subtitle,Pragma Suppress,Pragma Subprogram_Variant,Implementation Defined Pragmas +@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f8} @section Pragma Subtitle @@ -7924,7 +7959,7 @@ This pragma is recognized for compatibility with other Ada compilers but is ignored by GNAT. @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f9} @section Pragma Suppress @@ -7997,7 +8032,7 @@ Of course, run-time checks are omitted whenever the compiler can prove that they will not fail, whether or not checks are suppressed. @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{fa} @section Pragma Suppress_All @@ -8016,7 +8051,7 @@ The use of the standard Ada pragma @code{Suppress (All_Checks)} as a normal configuration pragma is the preferred usage in GNAT. @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{fb} +@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fb}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{fc} @section Pragma Suppress_Debug_Info @@ -8031,7 +8066,7 @@ for the specified entity. It is intended primarily for use in debugging the debugger, and navigating around debugger problems. @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{fc} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{fd} @section Pragma Suppress_Exception_Locations @@ -8054,7 +8089,7 @@ a partition, so it is fine to have some units within a partition compiled with this pragma and others compiled in normal mode without it. @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{fd}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{fe} +@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{fe}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{ff} @section Pragma Suppress_Initialization @@ -8099,7 +8134,7 @@ is suppressed, just as though its subtype had been given in a pragma Suppress_Initialization, as described above. @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{ff} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{100} @section Pragma Task_Name @@ -8155,7 +8190,7 @@ end; @end example @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{100} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{101} @section Pragma Task_Storage @@ -8175,7 +8210,7 @@ created, depending on the target. This pragma can appear anywhere a type. @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{101}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{102} +@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{102}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{103} @section Pragma Test_Case @@ -8231,7 +8266,7 @@ postcondition. Mode @code{Robustness} indicates that the precondition and postcondition of the subprogram should be ignored for this test case. @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{103}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{104} +@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{104}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{105} @section Pragma Thread_Local_Storage @@ -8269,7 +8304,7 @@ If this pragma is used on a system where @code{TLS} is not supported, then an error message will be generated and the program will be rejected. @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{105} +@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{106} @section Pragma Time_Slice @@ -8285,7 +8320,7 @@ It is ignored if it is used in a system that does not allow this control, or if it appears in other than the main program unit. @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{106} +@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{107} @section Pragma Title @@ -8310,7 +8345,7 @@ notation is used, and named and positional notation can be mixed following the normal rules for procedure calls in Ada. @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{107} +@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{108} @section Pragma Type_Invariant @@ -8331,7 +8366,7 @@ controlled by the assertion identifier @code{Type_Invariant} rather than @code{Invariant}. @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{109} +@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{109}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{10a} @section Pragma Type_Invariant_Class @@ -8358,7 +8393,7 @@ policy that controls this pragma is @code{Type_Invariant'Class}, not @code{Type_Invariant_Class}. @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{10a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{10b} @section Pragma Unchecked_Union @@ -8378,7 +8413,7 @@ version in all language modes (Ada 83, Ada 95, and Ada 2005). For full details, consult the Ada 2012 Reference Manual, section B.3.3. @node Pragma Unevaluated_Use_Of_Old,Pragma User_Aspect_Definition,Pragma Unchecked_Union,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{10b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{10c} @section Pragma Unevaluated_Use_Of_Old @@ -8433,7 +8468,7 @@ uses up to the end of the corresponding statement sequence or sequence of package declarations. @node Pragma User_Aspect_Definition,Pragma Unimplemented_Unit,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{10c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{10d} @section Pragma User_Aspect_Definition @@ -8465,7 +8500,7 @@ pragma. If multiple definitions are visible for some aspect at some point, then the definitions must agree. A predefined aspect cannot be redefined. @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma User_Aspect_Definition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{10d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{10e} @section Pragma Unimplemented_Unit @@ -8485,7 +8520,7 @@ The abort only happens if code is being generated. Thus you can use specs of unimplemented packages in syntax or semantic checking mode. @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10e}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{10f} +@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{110} @section Pragma Universal_Aliasing @@ -8503,7 +8538,7 @@ they need to be suppressed, see the section on @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}. @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{111} +@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{112} @section Pragma Unmodified @@ -8537,7 +8572,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such variables, though it is harmless to do so. @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{113} +@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{113}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{114} @section Pragma Unreferenced @@ -8599,7 +8634,7 @@ Thus it is never necessary to use @code{pragma Unreferenced} for such variables, though it is harmless to do so. @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{114}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{115} +@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{115}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{116} @section Pragma Unreferenced_Objects @@ -8624,7 +8659,7 @@ compiler will automatically suppress unwanted warnings about these variables not being referenced. @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{116} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{117} @section Pragma Unreserve_All_Interrupts @@ -8660,7 +8695,7 @@ handled, see pragma @code{Interrupt_State}, which subsumes the functionality of the @code{Unreserve_All_Interrupts} pragma. @node Pragma Unsuppress,Pragma Unused,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{117} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{118} @section Pragma Unsuppress @@ -8696,7 +8731,7 @@ number of implementation-defined check names. See the description of pragma @code{Suppress} for full details. @node Pragma Unused,Pragma Use_VADS_Size,Pragma Unsuppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{118}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{119} +@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{119}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{11a} @section Pragma Unused @@ -8730,7 +8765,7 @@ Thus it is never necessary to use @code{pragma Unused} for such variables, though it is harmless to do so. @node Pragma Use_VADS_Size,Pragma Validity_Checks,Pragma Unused,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{11a} +@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{11b} @section Pragma Use_VADS_Size @@ -8754,7 +8789,7 @@ as implemented in the VADS compiler. See description of the VADS_Size attribute for further details. @node Pragma Validity_Checks,Pragma Volatile,Pragma Use_VADS_Size,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{11b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{11c} @section Pragma Validity_Checks @@ -8810,7 +8845,7 @@ A := C; -- C will be validity checked @end example @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11c}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11d} +@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11d}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11e} @section Pragma Volatile @@ -8828,7 +8863,7 @@ implementation of pragma Volatile is upwards compatible with the implementation in DEC Ada 83. @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{11e}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{11f} +@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{11f}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{120} @section Pragma Volatile_Full_Access @@ -8854,7 +8889,7 @@ is not to the whole object; the compiler is allowed (and generally will) access only part of the object in this case. @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{120}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{121} +@anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{121}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{122} @section Pragma Volatile_Function @@ -8868,7 +8903,7 @@ For the semantics of this pragma, see the entry for aspect @code{Volatile_Functi in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{122} +@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{123} @section Pragma Warning_As_Error @@ -8908,7 +8943,7 @@ you can use multiple pragma Warning_As_Error. The above use of patterns to match the message applies only to warning messages generated by the front end. This pragma can also be applied to -warnings provided by the back end and mentioned in @ref{123,,Pragma Warnings}. +warnings provided by the back end and mentioned in @ref{124,,Pragma Warnings}. By using a single full `-Wxxx' switch in the pragma, such warnings can also be treated as errors. @@ -8958,7 +8993,7 @@ the tag is changed from “warning:” to “error:” and the string “[warning-as-error]” is appended to the end of the message. @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{124}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{123} +@anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{125}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{124} @section Pragma Warnings @@ -9114,7 +9149,7 @@ selectively for each tool, and as a consequence to detect useless pragma Warnings with switch @code{-gnatw.w}. @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{125} +@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{126} @section Pragma Weak_External @@ -9165,7 +9200,7 @@ end External_Module; @end example @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{126} +@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{127} @section Pragma Wide_Character_Encoding @@ -9196,7 +9231,7 @@ encoding within that file, and does not affect withed units, specs, or subunits. @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top -@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{127}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{128}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{129} +@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{128}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{129}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{12a} @chapter Implementation Defined Aspects @@ -9305,6 +9340,7 @@ or attribute definition clause. * Aspect Simple_Storage_Pool:: * Aspect Simple_Storage_Pool_Type:: * Aspect SPARK_Mode:: +* Aspect Subprogram_Variant:: * Aspect Suppress_Debug_Info:: * Aspect Suppress_Initialization:: * Aspect Test_Case:: @@ -9322,7 +9358,7 @@ or attribute definition clause. @end menu @node Aspect Abstract_State,Aspect Always_Terminates,,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{12a} +@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{12b} @section Aspect Abstract_State @@ -9331,7 +9367,7 @@ or attribute definition clause. This aspect is equivalent to @ref{1e,,pragma Abstract_State}. @node Aspect Always_Terminates,Aspect Annotate,Aspect Abstract_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{12b} +@anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{12c} @section Aspect Always_Terminates @@ -9340,7 +9376,7 @@ This aspect is equivalent to @ref{1e,,pragma Abstract_State}. This boolean aspect is equivalent to @ref{29,,pragma Always_Terminates}. @node Aspect Annotate,Aspect Async_Readers,Aspect Always_Terminates,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{12c} +@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{12d} @section Aspect Annotate @@ -9367,7 +9403,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} @end table @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12d} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12e} @section Aspect Async_Readers @@ -9376,7 +9412,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} This boolean aspect is equivalent to @ref{32,,pragma Async_Readers}. @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12e} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12f} @section Aspect Async_Writers @@ -9385,7 +9421,7 @@ This boolean aspect is equivalent to @ref{32,,pragma Async_Readers}. This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}. @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{12f} +@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{130} @section Aspect Constant_After_Elaboration @@ -9394,7 +9430,7 @@ This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}. This aspect is equivalent to @ref{44,,pragma Constant_After_Elaboration}. @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{130} +@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{131} @section Aspect Contract_Cases @@ -9405,7 +9441,7 @@ of clauses being enclosed in parentheses so that syntactically it is an aggregate. @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{131} +@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{132} @section Aspect Depends @@ -9414,7 +9450,7 @@ aggregate. This aspect is equivalent to @ref{56,,pragma Depends}. @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{132} +@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{133} @section Aspect Default_Initial_Condition @@ -9423,7 +9459,7 @@ This aspect is equivalent to @ref{56,,pragma Depends}. This aspect is equivalent to @ref{52,,pragma Default_Initial_Condition}. @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{133} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{134} @section Aspect Dimension @@ -9459,7 +9495,7 @@ Note that when the dimensioned type is an integer type, then any dimension value must be an integer literal. @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{134} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{135} @section Aspect Dimension_System @@ -9519,7 +9555,7 @@ See section ‘Performing Dimensionality Analysis in GNAT’ in the GNAT Users Guide for detailed examples of use of the dimension system. @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{135} +@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{136} @section Aspect Disable_Controlled @@ -9532,7 +9568,7 @@ where for example you might want a record to be controlled or not depending on whether some run-time check is enabled or suppressed. @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{136} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{137} @section Aspect Effective_Reads @@ -9541,7 +9577,7 @@ whether some run-time check is enabled or suppressed. This aspect is equivalent to @ref{5b,,pragma Effective_Reads}. @node Aspect Effective_Writes,Aspect Exceptional_Cases,Aspect Effective_Reads,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{137} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{138} @section Aspect Effective_Writes @@ -9550,7 +9586,7 @@ This aspect is equivalent to @ref{5b,,pragma Effective_Reads}. This aspect is equivalent to @ref{5d,,pragma Effective_Writes}. @node Aspect Exceptional_Cases,Aspect Extensions_Visible,Aspect Effective_Writes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{138} +@anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{139} @section Aspect Exceptional_Cases @@ -9565,7 +9601,7 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.1.9. @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Exceptional_Cases,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{139} +@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{13a} @section Aspect Extensions_Visible @@ -9574,7 +9610,7 @@ Manual, section 6.1.9. This aspect is equivalent to @ref{6c,,pragma Extensions_Visible}. @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{13a} +@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{13b} @section Aspect Favor_Top_Level @@ -9583,7 +9619,7 @@ This aspect is equivalent to @ref{6c,,pragma Extensions_Visible}. This boolean aspect is equivalent to @ref{71,,pragma Favor_Top_Level}. @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{13b} +@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{13c} @section Aspect Ghost @@ -9592,7 +9628,7 @@ This boolean aspect is equivalent to @ref{71,,pragma Favor_Top_Level}. This aspect is equivalent to @ref{75,,pragma Ghost}. @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{13c} +@anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{13d} @section Aspect Ghost_Predicate @@ -9605,7 +9641,7 @@ For the detailed semantics of this aspect, see the entry for subtype predicates in the SPARK Reference Manual, section 3.2.4. @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{13d} +@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{13e} @section Aspect Global @@ -9614,7 +9650,7 @@ in the SPARK Reference Manual, section 3.2.4. This aspect is equivalent to @ref{77,,pragma Global}. @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{13e} +@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{13f} @section Aspect Initial_Condition @@ -9623,7 +9659,7 @@ This aspect is equivalent to @ref{77,,pragma Global}. This aspect is equivalent to @ref{84,,pragma Initial_Condition}. @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{13f} +@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{140} @section Aspect Initializes @@ -9632,7 +9668,7 @@ This aspect is equivalent to @ref{84,,pragma Initial_Condition}. This aspect is equivalent to @ref{87,,pragma Initializes}. @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{140} +@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{141} @section Aspect Inline_Always @@ -9641,7 +9677,7 @@ This aspect is equivalent to @ref{87,,pragma Initializes}. This boolean aspect is equivalent to @ref{89,,pragma Inline_Always}. @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{141} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{142} @section Aspect Invariant @@ -9652,18 +9688,18 @@ synonym for the language defined aspect @code{Type_Invariant} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{142} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{143} @section Aspect Invariant’Class @geindex Invariant'Class -This aspect is equivalent to @ref{109,,pragma Type_Invariant_Class}. It is a +This aspect is equivalent to @ref{10a,,pragma Type_Invariant_Class}. It is a synonym for the language defined aspect @code{Type_Invariant'Class} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{143} +@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{144} @section Aspect Iterable @@ -9747,7 +9783,7 @@ function Get_Element (Cont : Container; Position : Cursor) return Element_Type; This aspect is used in the GNAT-defined formal container packages. @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{144} +@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{145} @section Aspect Linker_Section @@ -9756,7 +9792,7 @@ This aspect is used in the GNAT-defined formal container packages. This aspect is equivalent to @ref{98,,pragma Linker_Section}. @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{145} +@anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{146} @section Aspect Local_Restrictions @@ -9810,7 +9846,7 @@ case of a declaration that occurs within nested packages that each have a Local_Restrictions specification). @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{146} +@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{147} @section Aspect Lock_Free @@ -9819,7 +9855,7 @@ a Local_Restrictions specification). This boolean aspect is equivalent to @ref{9a,,pragma Lock_Free}. @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{147} +@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{148} @section Aspect Max_Queue_Length @@ -9828,7 +9864,7 @@ This boolean aspect is equivalent to @ref{9a,,pragma Lock_Free}. This aspect is equivalent to @ref{a2,,pragma Max_Queue_Length}. @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{148} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{149} @section Aspect No_Caching @@ -9837,7 +9873,7 @@ This aspect is equivalent to @ref{a2,,pragma Max_Queue_Length}. This boolean aspect is equivalent to @ref{a5,,pragma No_Caching}. @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{149} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{14a} @section Aspect No_Elaboration_Code_All @@ -9847,7 +9883,7 @@ This aspect is equivalent to @ref{a8,,pragma No_Elaboration_Code_All} for a program unit. @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{14a} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{14b} @section Aspect No_Inline @@ -9856,7 +9892,7 @@ for a program unit. This boolean aspect is equivalent to @ref{ab,,pragma No_Inline}. @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Inline,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{14b} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{14c} @section Aspect No_Tagged_Streams @@ -9867,7 +9903,7 @@ argument specifying a root tagged type (thus this aspect can only be applied to such a type). @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{14c} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{14d} @section Aspect No_Task_Parts @@ -9883,16 +9919,16 @@ away certain tasking-related code that would otherwise be needed for T’Class, because descendants of T might contain tasks. @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{14d} +@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{14e} @section Aspect Object_Size @geindex Object_Size -This aspect is equivalent to @ref{14e,,attribute Object_Size}. +This aspect is equivalent to @ref{14f,,attribute Object_Size}. @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{14f} +@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{150} @section Aspect Obsolescent @@ -9903,7 +9939,7 @@ evaluation of this aspect happens at the point of occurrence, it is not delayed until the freeze point. @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{150} +@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{151} @section Aspect Part_Of @@ -9912,7 +9948,7 @@ delayed until the freeze point. This aspect is equivalent to @ref{b8,,pragma Part_Of}. @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{151} +@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{152} @section Aspect Persistent_BSS @@ -9921,7 +9957,7 @@ This aspect is equivalent to @ref{b8,,pragma Part_Of}. This boolean aspect is equivalent to @ref{bc,,pragma Persistent_BSS}. @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{152} +@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{153} @section Aspect Predicate @@ -9935,7 +9971,7 @@ expression. It is also separately controllable using pragma @code{Assertion_Policy}. @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{153} +@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{154} @section Aspect Pure_Function @@ -9944,7 +9980,7 @@ expression. It is also separately controllable using pragma This boolean aspect is equivalent to @ref{cf,,pragma Pure_Function}. @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{154} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{155} @section Aspect Refined_Depends @@ -9953,7 +9989,7 @@ This boolean aspect is equivalent to @ref{cf,,pragma Pure_Function}. This aspect is equivalent to @ref{d3,,pragma Refined_Depends}. @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{155} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{156} @section Aspect Refined_Global @@ -9962,7 +9998,7 @@ This aspect is equivalent to @ref{d3,,pragma Refined_Depends}. This aspect is equivalent to @ref{d5,,pragma Refined_Global}. @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{156} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{157} @section Aspect Refined_Post @@ -9971,7 +10007,7 @@ This aspect is equivalent to @ref{d5,,pragma Refined_Global}. This aspect is equivalent to @ref{d7,,pragma Refined_Post}. @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{157} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{158} @section Aspect Refined_State @@ -9980,7 +10016,7 @@ This aspect is equivalent to @ref{d7,,pragma Refined_Post}. This aspect is equivalent to @ref{d9,,pragma Refined_State}. @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{158} +@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{159} @section Aspect Relaxed_Initialization @@ -9990,7 +10026,7 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.10. @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{159} +@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{15a} @section Aspect Remote_Access_Type @@ -9999,16 +10035,16 @@ Manual, section 6.10. This aspect is equivalent to @ref{dc,,pragma Remote_Access_Type}. @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15a} +@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15b} @section Aspect Scalar_Storage_Order @geindex Scalar_Storage_Order -This aspect is equivalent to a @ref{15b,,attribute Scalar_Storage_Order}. +This aspect is equivalent to a @ref{15c,,attribute Scalar_Storage_Order}. @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15c} +@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15d} @section Aspect Secondary_Stack_Size @@ -10017,7 +10053,7 @@ This aspect is equivalent to a @ref{15b,,attribute Scalar_Storage_Order}. This aspect is equivalent to @ref{e2,,pragma Secondary_Stack_Size}. @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{15d} +@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{15e} @section Aspect Shared @@ -10027,7 +10063,7 @@ This boolean aspect is equivalent to @ref{e5,,pragma Shared} and is thus a synonym for aspect @code{Atomic}. @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{15e} +@anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{15f} @section Aspect Side_Effects @@ -10036,7 +10072,7 @@ and is thus a synonym for aspect @code{Atomic}. This aspect is equivalent to @ref{e9,,pragma Side_Effects}. @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{15f} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{160} @section Aspect Simple_Storage_Pool @@ -10045,7 +10081,7 @@ This aspect is equivalent to @ref{e9,,pragma Side_Effects}. This aspect is equivalent to @ref{ec,,attribute Simple_Storage_Pool}. @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{160} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{161} @section Aspect Simple_Storage_Pool_Type @@ -10053,8 +10089,8 @@ This aspect is equivalent to @ref{ec,,attribute Simple_Storage_Pool}. This boolean aspect is equivalent to @ref{eb,,pragma Simple_Storage_Pool_Type}. -@node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{161} +@node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects +@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{162} @section Aspect SPARK_Mode @@ -10064,84 +10100,94 @@ This aspect is equivalent to @ref{f3,,pragma SPARK_Mode} and may be specified for either or both of the specification and body of a subprogram or package. -@node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{162} +@node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects +@anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{163} +@section Aspect Subprogram_Variant + + +@geindex Subprogram_Variant + +For the syntax and semantics of this aspect, see the SPARK 2014 Reference +Manual, section 6.1.8. + +@node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{164} @section Aspect Suppress_Debug_Info @geindex Suppress_Debug_Info -This boolean aspect is equivalent to @ref{fb,,pragma Suppress_Debug_Info}. +This boolean aspect is equivalent to @ref{fc,,pragma Suppress_Debug_Info}. @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{163} +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{165} @section Aspect Suppress_Initialization @geindex Suppress_Initialization -This boolean aspect is equivalent to @ref{fe,,pragma Suppress_Initialization}. +This boolean aspect is equivalent to @ref{ff,,pragma Suppress_Initialization}. @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{164} +@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{166} @section Aspect Test_Case @geindex Test_Case -This aspect is equivalent to @ref{102,,pragma Test_Case}. +This aspect is equivalent to @ref{103,,pragma Test_Case}. @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{165} +@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{167} @section Aspect Thread_Local_Storage @geindex Thread_Local_Storage -This boolean aspect is equivalent to @ref{104,,pragma Thread_Local_Storage}. +This boolean aspect is equivalent to @ref{105,,pragma Thread_Local_Storage}. @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{166} +@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{168} @section Aspect Universal_Aliasing @geindex Universal_Aliasing -This boolean aspect is equivalent to @ref{10f,,pragma Universal_Aliasing}. +This boolean aspect is equivalent to @ref{110,,pragma Universal_Aliasing}. @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{167} +@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{169} @section Aspect Unmodified @geindex Unmodified -This boolean aspect is equivalent to @ref{111,,pragma Unmodified}. +This boolean aspect is equivalent to @ref{112,,pragma Unmodified}. @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{168} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{16a} @section Aspect Unreferenced @geindex Unreferenced -This boolean aspect is equivalent to @ref{113,,pragma Unreferenced}. +This boolean aspect is equivalent to @ref{114,,pragma Unreferenced}. When using the @code{-gnat2022} switch, this aspect is also supported on formal parameters, which is in particular the only form possible for expression functions. @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{169} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{16b} @section Aspect Unreferenced_Objects @geindex Unreferenced_Objects -This boolean aspect is equivalent to @ref{115,,pragma Unreferenced_Objects}. +This boolean aspect is equivalent to @ref{116,,pragma Unreferenced_Objects}. @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{16a} +@anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{16c} @section Aspect User_Aspect @@ -10154,45 +10200,45 @@ replicating the set of aspect specifications associated with the named pragma-defined aspect. @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{16b} +@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{16d} @section Aspect Value_Size @geindex Value_Size -This aspect is equivalent to @ref{16c,,attribute Value_Size}. +This aspect is equivalent to @ref{16e,,attribute Value_Size}. @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{16d} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{16f} @section Aspect Volatile_Full_Access @geindex Volatile_Full_Access -This boolean aspect is equivalent to @ref{11f,,pragma Volatile_Full_Access}. +This boolean aspect is equivalent to @ref{120,,pragma Volatile_Full_Access}. @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{16e} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{170} @section Aspect Volatile_Function @geindex Volatile_Function -This boolean aspect is equivalent to @ref{121,,pragma Volatile_Function}. +This boolean aspect is equivalent to @ref{122,,pragma Volatile_Function}. @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{16f} +@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{171} @section Aspect Warnings @geindex Warnings -This aspect is equivalent to the two argument form of @ref{123,,pragma Warnings}, +This aspect is equivalent to the two argument form of @ref{124,,pragma Warnings}, where the first argument is @code{ON} or @code{OFF} and the second argument is the entity. @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top -@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{170}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{171}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} +@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{172}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{173}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} @chapter Implementation Defined Attributes @@ -10298,7 +10344,7 @@ consideration, you should minimize the use of these attributes. @end menu @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{172} +@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{174} @section Attribute Abort_Signal @@ -10312,7 +10358,7 @@ completely outside the normal semantics of Ada, for a user program to intercept the abort exception). @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{173} +@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{175} @section Attribute Address_Size @@ -10328,7 +10374,7 @@ reference to System.Address’Size is nonstatic because Address is a private type. @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{174} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{176} @section Attribute Asm_Input @@ -10342,10 +10388,10 @@ to be a static expression, and is the constraint for the parameter, value to be used as the input argument. The possible values for the constant are the same as those used in the RTL, and are dependent on the configuration file used to built the GCC back end. -@ref{175,,Machine Code Insertions} +@ref{177,,Machine Code Insertions} @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{176} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{178} @section Attribute Asm_Output @@ -10361,10 +10407,10 @@ result. The possible values for constraint are the same as those used in the RTL, and are dependent on the configuration file used to build the GCC back end. If there are no output operands, then this argument may either be omitted, or explicitly given as @code{No_Output_Operands}. -@ref{175,,Machine Code Insertions} +@ref{177,,Machine Code Insertions} @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{177} +@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{179} @section Attribute Atomic_Always_Lock_Free @@ -10375,7 +10421,7 @@ result indicates whether atomic operations are supported by the target for the given type. @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{178} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{17a} @section Attribute Bit @@ -10406,7 +10452,7 @@ This attribute is designed to be compatible with the DEC Ada 83 definition and implementation of the @code{Bit} attribute. @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{179} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{17b} @section Attribute Bit_Position @@ -10421,7 +10467,7 @@ type `universal_integer'. The value depends only on the field the containing record @code{R}. @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{17a} +@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{17c} @section Attribute Code_Address @@ -10464,7 +10510,7 @@ the same value as is returned by the corresponding @code{'Address} attribute. @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{17b} +@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{17d} @section Attribute Compiler_Version @@ -10475,7 +10521,7 @@ prefix) yields a static string identifying the version of the compiler being used to compile the unit containing the attribute reference. @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{17c} +@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{17e} @section Attribute Constrained @@ -10490,7 +10536,7 @@ record type without discriminants is always @code{True}. This usage is compatible with older Ada compilers, including notably DEC Ada. @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{17d} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{17f} @section Attribute Default_Bit_Order @@ -10507,7 +10553,7 @@ as a @code{Pos} value (0 for @code{High_Order_First}, 1 for @code{Default_Bit_Order} in package @code{System}. @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{17e} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{180} @section Attribute Default_Scalar_Storage_Order @@ -10524,7 +10570,7 @@ equal to @code{Default_Bit_Order} if unspecified) as a @code{System.Bit_Order} value. This is a static attribute. @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{17f} +@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{181} @section Attribute Deref @@ -10537,7 +10583,7 @@ a named access-to-@cite{typ} type, except that it yields a variable, so it can b used on the left side of an assignment. @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{180} +@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{182} @section Attribute Descriptor_Size @@ -10566,7 +10612,7 @@ since @code{Positive} has an alignment of 4, the size of the descriptor is which yields a size of 32 bits, i.e. including 16 bits of padding. @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{181} +@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{183} @section Attribute Elaborated @@ -10581,7 +10627,7 @@ units has been completed. An exception is for units which need no elaboration, the value is always False for such units. @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{182} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{184} @section Attribute Elab_Body @@ -10597,7 +10643,7 @@ e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{183} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{185} @section Attribute Elab_Spec @@ -10613,7 +10659,7 @@ Ada code, e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{184} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{186} @section Attribute Elab_Subp_Body @@ -10627,7 +10673,7 @@ elaboration procedure by the binder in CodePeer mode only and is unrecognized otherwise. @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{185} +@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{187} @section Attribute Emax @@ -10640,7 +10686,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{186} +@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{188} @section Attribute Enabled @@ -10664,7 +10710,7 @@ a @code{pragma Suppress} or @code{pragma Unsuppress} before instantiating the package or subprogram, controlling whether the check will be present. @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{187} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{189} @section Attribute Enum_Rep @@ -10704,7 +10750,7 @@ integer calculation is done at run time, then the call to @code{Enum_Rep} may raise @code{Constraint_Error}. @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{188} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{18a} @section Attribute Enum_Val @@ -10730,7 +10776,7 @@ absence of an enumeration representation clause. This is a static attribute (i.e., the result is static if the argument is static). @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{189} +@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{18b} @section Attribute Epsilon @@ -10743,7 +10789,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{18a} +@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{18c} @section Attribute Fast_Math @@ -10754,7 +10800,7 @@ prefix) yields a static Boolean value that is True if pragma @code{Fast_Math} is active, and False otherwise. @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{18b} +@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{18d} @section Attribute Finalization_Size @@ -10772,7 +10818,7 @@ class-wide type whose tag denotes a type with no controlled parts. Note that only heap-allocated objects contain finalization data. @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{18c} +@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{18e} @section Attribute Fixed_Value @@ -10799,7 +10845,7 @@ This attribute is primarily intended for use in implementation of the input-output functions for fixed-point values. @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{18d} +@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{18f} @section Attribute From_Any @@ -10809,7 +10855,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{18e} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{190} @section Attribute Has_Access_Values @@ -10827,7 +10873,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{18f} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{191} @section Attribute Has_Discriminants @@ -10843,7 +10889,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has discriminants. @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{190} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{192} @section Attribute Has_Tagged_Values @@ -10860,7 +10906,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{191} +@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{193} @section Attribute Img @@ -10890,7 +10936,7 @@ that returns the appropriate string when called. This means that in an instantiation as a function parameter. @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{192} +@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{194} @section Attribute Initialized @@ -10900,7 +10946,7 @@ For the syntax and semantics of this attribute, see the SPARK 2014 Reference Manual, section 6.10. @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{193} +@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{195} @section Attribute Integer_Value @@ -10928,7 +10974,7 @@ This attribute is primarily intended for use in implementation of the standard input-output functions for fixed-point values. @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{194} +@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{196} @section Attribute Invalid_Value @@ -10942,7 +10988,7 @@ including the ability to modify the value with the binder -Sxx flag and relevant environment variables at run time. @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{195} +@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{197} @section Attribute Large @@ -10955,7 +11001,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{196} +@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{198} @section Attribute Library_Level @@ -10981,7 +11027,7 @@ end Gen; @end example @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{197} +@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{199} @section Attribute Loop_Entry @@ -11014,7 +11060,7 @@ entry. This copy is not performed if the loop is not entered, or if the corresponding pragmas are ignored or disabled. @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{198} +@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{19a} @section Attribute Machine_Size @@ -11024,7 +11070,7 @@ This attribute is identical to the @code{Object_Size} attribute. It is provided for compatibility with the DEC Ada 83 attribute of this name. @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{199} +@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{19b} @section Attribute Mantissa @@ -11037,7 +11083,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{19a}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{19b} +@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{19c}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{19d} @section Attribute Maximum_Alignment @@ -11053,7 +11099,7 @@ for an object, guaranteeing that it is properly aligned in all cases. @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{19c} +@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{19e} @section Attribute Max_Integer_Size @@ -11064,7 +11110,7 @@ prefix) provides the size of the largest supported integer type for the target. The result is a static constant. @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{19d} +@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{19f} @section Attribute Mechanism_Code @@ -11095,7 +11141,7 @@ by reference @end table @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{19e} +@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1a0} @section Attribute Null_Parameter @@ -11120,7 +11166,7 @@ There is no way of indicating this without the @code{Null_Parameter} attribute. @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{14e}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{19f} +@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{14f}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1a1} @section Attribute Object_Size @@ -11190,7 +11236,7 @@ Similar additional checks are performed in other contexts requiring statically matching subtypes. @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1a0} +@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1a2} @section Attribute Old @@ -11205,7 +11251,7 @@ definition are allowed under control of implementation defined pragma @code{Unevaluated_Use_Of_Old}. @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1a1} +@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1a3} @section Attribute Passed_By_Reference @@ -11221,7 +11267,7 @@ passed by copy in calls. For scalar types, the result is always @code{False} and is static. For non-scalar types, the result is nonstatic. @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1a2} +@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1a4} @section Attribute Pool_Address @@ -11243,7 +11289,7 @@ For an object created by @code{new}, @code{Ptr.all'Pool_Address} is what is passed to @code{Allocate} and returned from @code{Deallocate}. @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1a3} +@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1a5} @section Attribute Range_Length @@ -11256,7 +11302,7 @@ applied to the index subtype of a one dimensional array always gives the same result as @code{Length} applied to the array itself. @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1a4} +@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1a6} @section Attribute Restriction_Set @@ -11326,7 +11372,7 @@ Restrictions pragma, they are not analyzed semantically, so they do not have a type. @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1a5} +@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1a7} @section Attribute Result @@ -11339,7 +11385,7 @@ For a further discussion of the use of this attribute and examples of its use, see the description of pragma Postcondition. @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1a6} +@anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1a8} @section Attribute Round @@ -11350,7 +11396,7 @@ also permits the use of the @code{'Round} attribute for ordinary fixed point types. @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1a7} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1a9} @section Attribute Safe_Emax @@ -11363,7 +11409,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1a8} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1aa} @section Attribute Safe_Large @@ -11376,7 +11422,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1a9} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1ab} @section Attribute Safe_Small @@ -11389,7 +11435,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15b}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1aa} +@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15c}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1ac} @section Attribute Scalar_Storage_Order @@ -11552,7 +11598,7 @@ Note that debuggers may be unable to display the correct value of scalar components of a type for which the opposite storage order is specified. @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{ec}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1ab} +@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{ec}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1ad} @section Attribute Simple_Storage_Pool @@ -11615,7 +11661,7 @@ as defined in section 13.11.2 of the Ada Reference Manual, except that the term `simple storage pool' is substituted for `storage pool'. @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1ac} +@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1ae} @section Attribute Small @@ -11631,7 +11677,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute when applied to floating-point types. @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1ad} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1af} @section Attribute Small_Denominator @@ -11644,7 +11690,7 @@ denominator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1ae} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1b0} @section Attribute Small_Numerator @@ -11657,7 +11703,7 @@ numerator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1af} +@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1b1} @section Attribute Storage_Unit @@ -11667,7 +11713,7 @@ with coprime factors (i.e. as an irreducible fraction). prefix) provides the same value as @code{System.Storage_Unit}. @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1b0} +@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1b2} @section Attribute Stub_Type @@ -11691,7 +11737,7 @@ unit @code{System.Partition_Interface}. Use of this attribute will create an implicit dependency on this unit. @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b1} +@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b3} @section Attribute System_Allocator_Alignment @@ -11708,7 +11754,7 @@ with alignment too large or to enable a realignment circuitry if the alignment request is larger than this value. @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b2} +@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b4} @section Attribute Target_Name @@ -11721,7 +11767,7 @@ standard gcc target name without the terminating slash (for example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”). @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b3} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b5} @section Attribute To_Address @@ -11744,7 +11790,7 @@ modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on a 32 bits machine). @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b4} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b6} @section Attribute To_Any @@ -11754,7 +11800,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b5} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b7} @section Attribute Type_Class @@ -11784,7 +11830,7 @@ applies to all concurrent types. This attribute is designed to be compatible with the DEC Ada 83 attribute of the same name. @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b6} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b8} @section Attribute Type_Key @@ -11796,7 +11842,7 @@ about the type or subtype. This provides improved compatibility with other implementations that support this attribute. @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1b7} +@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1b9} @section Attribute TypeCode @@ -11806,7 +11852,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1b8} +@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1ba} @section Attribute Unconstrained_Array @@ -11820,7 +11866,7 @@ still static, and yields the result of applying this test to the generic actual. @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1b9} +@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1bb} @section Attribute Universal_Literal_String @@ -11848,7 +11894,7 @@ end; @end example @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ba} +@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1bc} @section Attribute Unrestricted_Access @@ -12035,7 +12081,7 @@ In general this is a risky approach. It may appear to “work” but such uses o of GNAT to another, so are best avoided if possible. @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1bb} +@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1bd} @section Attribute Update @@ -12116,7 +12162,7 @@ A := A'Update ((1, 2) => 20, (3, 4) => 30); which changes element (1,2) to 20 and (3,4) to 30. @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1bc} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1be} @section Attribute Valid_Value @@ -12128,7 +12174,7 @@ a String, and returns Boolean. @code{T'Valid_Value (S)} returns True if and only if @code{T'Value (S)} would not raise Constraint_Error. @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1bd} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1bf} @section Attribute Valid_Scalars @@ -12162,7 +12208,7 @@ write a function with a single use of the attribute, and then call that function from multiple places. @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1be} +@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1c0} @section Attribute VADS_Size @@ -12182,7 +12228,7 @@ gives the result that would be obtained by applying the attribute to the corresponding type. @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16c}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1bf} +@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16e}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1c1} @section Attribute Value_Size @@ -12196,7 +12242,7 @@ a value of the given subtype. It is the same as @code{type'Size}, but, unlike @code{Size}, may be set for non-first subtypes. @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c0} +@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c2} @section Attribute Wchar_T_Size @@ -12208,7 +12254,7 @@ primarily for constructing the definition of this type in package @code{Interfaces.C}. The result is a static constant. @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c1} +@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c3} @section Attribute Word_Size @@ -12219,7 +12265,7 @@ prefix) provides the value @code{System.Word_Size}. The result is a static constant. @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top -@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c2}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} @chapter Standard and Implementation Defined Restrictions @@ -12248,7 +12294,7 @@ language defined or GNAT-specific, are listed in the following. @end menu @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c7} @section Partition-Wide Restrictions @@ -12341,7 +12387,7 @@ then all compilation units in the partition must obey the restriction). @end menu @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c8} @subsection Immediate_Reclamation @@ -12353,7 +12399,7 @@ deallocation, any storage reserved at run time for an object is immediately reclaimed when the object no longer exists. @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1c7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1c9} @subsection Max_Asynchronous_Select_Nesting @@ -12365,7 +12411,7 @@ detected at compile time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1c8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1ca} @subsection Max_Entry_Queue_Length @@ -12386,7 +12432,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1c9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1cb} @subsection Max_Protected_Entries @@ -12397,7 +12443,7 @@ bounds of every entry family of a protected unit shall be static, or shall be defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1ca} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1cc} @subsection Max_Select_Alternatives @@ -12406,7 +12452,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. [RM D.7] Specifies the maximum number of alternatives in a selective accept. @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1cb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1cd} @subsection Max_Storage_At_Blocking @@ -12417,7 +12463,7 @@ Storage_Size that can be retained by a blocked task. A violation of this restriction causes Storage_Error to be raised. @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1cc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1ce} @subsection Max_Task_Entries @@ -12430,7 +12476,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1cd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1cf} @subsection Max_Tasks @@ -12443,7 +12489,7 @@ time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1ce} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1d0} @subsection No_Abort_Statements @@ -12453,7 +12499,7 @@ Storage_Error to be raised. no calls to Task_Identification.Abort_Task. @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1cf} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1d1} @subsection No_Access_Parameter_Allocators @@ -12464,7 +12510,7 @@ occurrences of an allocator as the actual parameter to an access parameter. @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d2} @subsection No_Access_Subprograms @@ -12474,7 +12520,7 @@ parameter. declarations of access-to-subprogram types. @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d3} @subsection No_Allocators @@ -12484,7 +12530,7 @@ declarations of access-to-subprogram types. occurrences of an allocator. @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d4} @subsection No_Anonymous_Allocators @@ -12494,7 +12540,7 @@ occurrences of an allocator. occurrences of an allocator of anonymous access type. @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d5} @subsection No_Asynchronous_Control @@ -12504,7 +12550,7 @@ occurrences of an allocator of anonymous access type. dependences on the predefined package Asynchronous_Task_Control. @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d6} @subsection No_Calendar @@ -12514,7 +12560,7 @@ dependences on the predefined package Asynchronous_Task_Control. dependences on package Calendar. @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d7} @subsection No_Coextensions @@ -12524,7 +12570,7 @@ dependences on package Calendar. coextensions. See 3.10.2. @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d8} @subsection No_Default_Initialization @@ -12541,7 +12587,7 @@ is to prohibit all cases of variables declared without a specific initializer (including the case of OUT scalar parameters). @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1d7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1d9} @subsection No_Delay @@ -12551,7 +12597,7 @@ initializer (including the case of OUT scalar parameters). delay statements and no semantic dependences on package Calendar. @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1d8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1da} @subsection No_Dependence @@ -12594,7 +12640,7 @@ to support specific constructs of the language. Here are some examples: @end itemize @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1d9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1db} @subsection No_Direct_Boolean_Operators @@ -12607,7 +12653,7 @@ protocol requires the use of short-circuit (and then, or else) forms for all composite boolean operations. @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1da} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1dc} @subsection No_Dispatch @@ -12617,7 +12663,7 @@ composite boolean operations. occurrences of @code{T'Class}, for any (tagged) subtype @code{T}. @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1db} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1dd} @subsection No_Dispatching_Calls @@ -12678,7 +12724,7 @@ end Example; @end example @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1dc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1de} @subsection No_Dynamic_Attachment @@ -12697,7 +12743,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1dd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1df} @subsection No_Dynamic_Priorities @@ -12706,7 +12752,7 @@ warnings on obsolescent features are activated). [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities. @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1de} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1e0} @subsection No_Entry_Calls_In_Elaboration_Code @@ -12718,7 +12764,7 @@ restriction, the compiler can assume that no code past an accept statement in a task can be executed at elaboration time. @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1df} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1e1} @subsection No_Enumeration_Maps @@ -12729,7 +12775,7 @@ enumeration maps are used (that is Image and Value attributes applied to enumeration types). @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e2} @subsection No_Exception_Handlers @@ -12754,7 +12800,7 @@ statement generated by the compiler). The Line parameter when nonzero represents the line number in the source program where the raise occurs. @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e3} @subsection No_Exception_Propagation @@ -12771,7 +12817,7 @@ the package GNAT.Current_Exception is not permitted, and reraise statements (raise with no operand) are not permitted. @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e4} @subsection No_Exception_Registration @@ -12785,7 +12831,7 @@ code is simplified by omitting the otherwise-required global registration of exceptions when they are declared. @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e5} @subsection No_Exceptions @@ -12796,7 +12842,7 @@ raise statements and no exception handlers and also suppresses the generation of language-defined run-time checks. @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e6} @subsection No_Finalization @@ -12837,7 +12883,7 @@ object or a nested component, either declared on the stack or on the heap. The deallocation of a controlled object no longer finalizes its contents. @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e7} @subsection No_Fixed_Point @@ -12847,7 +12893,7 @@ deallocation of a controlled object no longer finalizes its contents. occurrences of fixed point types and operations. @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e8} @subsection No_Floating_Point @@ -12857,7 +12903,7 @@ occurrences of fixed point types and operations. occurrences of floating point types and operations. @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1e7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1e9} @subsection No_Implicit_Conditionals @@ -12873,7 +12919,7 @@ normal manner. Constructs generating implicit conditionals include comparisons of composite objects and the Max/Min attributes. @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1e8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1ea} @subsection No_Implicit_Dynamic_Code @@ -12903,7 +12949,7 @@ foreign-language convention; primitive operations of nested tagged types. @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1e9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1eb} @subsection No_Implicit_Heap_Allocations @@ -12912,7 +12958,7 @@ types. [RM D.7] No constructs are allowed to cause implicit heap allocation. @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ea} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ec} @subsection No_Implicit_Protected_Object_Allocations @@ -12922,7 +12968,7 @@ types. protected object. @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1eb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1ed} @subsection No_Implicit_Task_Allocations @@ -12931,7 +12977,7 @@ protected object. [GNAT] No constructs are allowed to cause implicit heap allocation of a task. @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ec} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ee} @subsection No_Initialize_Scalars @@ -12943,7 +12989,7 @@ code, and in particular eliminates dummy null initialization routines that are otherwise generated for some record and array types. @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1ed} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1ef} @subsection No_IO @@ -12954,7 +13000,7 @@ dependences on any of the library units Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO. @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1ee} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1f0} @subsection No_Local_Allocators @@ -12965,7 +13011,7 @@ occurrences of an allocator in subprograms, generic subprograms, tasks, and entry bodies. @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1ef} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1f1} @subsection No_Local_Protected_Objects @@ -12975,7 +13021,7 @@ and entry bodies. only declared at the library level. @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f2} @subsection No_Local_Tagged_Types @@ -12985,7 +13031,7 @@ only declared at the library level. declared at the library level. @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f3} @subsection No_Local_Timing_Events @@ -12995,7 +13041,7 @@ declared at the library level. declared at the library level. @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f4} @subsection No_Long_Long_Integers @@ -13007,7 +13053,7 @@ implicit base type is Long_Long_Integer, and modular types whose size exceeds Long_Integer’Size. @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f5} @subsection No_Multiple_Elaboration @@ -13023,7 +13069,7 @@ possible, including non-Ada main programs and Stand Alone libraries, are not permitted and will be diagnosed by the binder. @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f6} @subsection No_Nested_Finalization @@ -13032,7 +13078,7 @@ permitted and will be diagnosed by the binder. [RM D.7] All objects requiring finalization are declared at the library level. @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f7} @subsection No_Protected_Type_Allocators @@ -13042,7 +13088,7 @@ permitted and will be diagnosed by the binder. expressions that attempt to allocate protected objects. @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f8} @subsection No_Protected_Types @@ -13052,7 +13098,7 @@ expressions that attempt to allocate protected objects. declarations of protected types or protected objects. @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1f7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1f9} @subsection No_Recursion @@ -13062,7 +13108,7 @@ declarations of protected types or protected objects. part of its execution. @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1f8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1fa} @subsection No_Reentrancy @@ -13072,7 +13118,7 @@ part of its execution. two tasks at the same time. @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1f9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1fb} @subsection No_Relative_Delay @@ -13083,7 +13129,7 @@ relative statements and prevents expressions such as @code{delay 1.23;} from appearing in source code. @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fa} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fc} @subsection No_Requeue_Statements @@ -13101,7 +13147,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on oNobsolescent features are activated). @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fd} @subsection No_Secondary_Stack @@ -13114,7 +13160,7 @@ stack is used to implement functions returning unconstrained objects secondary stacks for tasks (excluding the environment task) at run time. @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1fc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1fe} @subsection No_Select_Statements @@ -13124,7 +13170,7 @@ secondary stacks for tasks (excluding the environment task) at run time. kind are permitted, that is the keyword @code{select} may not appear. @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1fd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ff} @subsection No_Specific_Termination_Handlers @@ -13134,7 +13180,7 @@ kind are permitted, that is the keyword @code{select} may not appear. or to Ada.Task_Termination.Specific_Handler. @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1fe} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{200} @subsection No_Specification_of_Aspect @@ -13145,7 +13191,7 @@ specification, attribute definition clause, or pragma is given for a given aspect. @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1ff} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{201} @subsection No_Standard_Allocators_After_Elaboration @@ -13157,7 +13203,7 @@ library items of the partition has completed. Otherwise, Storage_Error is raised. @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{200} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{202} @subsection No_Standard_Storage_Pools @@ -13169,7 +13215,7 @@ have an explicit Storage_Pool attribute defined specifying a user-defined storage pool. @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{201} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{203} @subsection No_Stream_Optimizations @@ -13182,7 +13228,7 @@ due to their superior performance. When this restriction is in effect, the compiler performs all IO operations on a per-character basis. @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{202} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{204} @subsection No_Streams @@ -13209,7 +13255,7 @@ configuration pragmas to avoid exposing entity names at binary level for the entire partition. @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{203} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{205} @subsection No_Tagged_Type_Registration @@ -13224,7 +13270,7 @@ are declared. This restriction may be necessary in order to also apply the No_Elaboration_Code restriction. @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{204} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{206} @subsection No_Task_Allocators @@ -13234,7 +13280,7 @@ the No_Elaboration_Code restriction. or types containing task subcomponents. @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{205} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{207} @subsection No_Task_At_Interrupt_Priority @@ -13246,7 +13292,7 @@ a consequence, the tasks are always created with a priority below that an interrupt priority. @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{206} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{208} @subsection No_Task_Attributes_Package @@ -13263,7 +13309,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{207} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{209} @subsection No_Task_Hierarchy @@ -13273,7 +13319,7 @@ warnings on obsolescent features are activated). directly on the environment task of the partition. @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{208} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{20a} @subsection No_Task_Termination @@ -13282,7 +13328,7 @@ directly on the environment task of the partition. [RM D.7] Tasks that terminate are erroneous. @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{209} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{20b} @subsection No_Tasking @@ -13295,7 +13341,7 @@ and cause an error message to be output either by the compiler or binder. @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20c} @subsection No_Terminate_Alternatives @@ -13304,7 +13350,7 @@ binder. [RM D.7] There are no selective accepts with terminate alternatives. @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20d} @subsection No_Unchecked_Access @@ -13314,7 +13360,7 @@ binder. occurrences of the Unchecked_Access attribute. @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20e} @subsection No_Unchecked_Conversion @@ -13324,7 +13370,7 @@ occurrences of the Unchecked_Access attribute. dependences on the predefined generic function Unchecked_Conversion. @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{20d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{20f} @subsection No_Unchecked_Deallocation @@ -13334,7 +13380,7 @@ dependences on the predefined generic function Unchecked_Conversion. dependences on the predefined generic procedure Unchecked_Deallocation. @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{20e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{210} @subsection No_Use_Of_Attribute @@ -13344,7 +13390,7 @@ dependences on the predefined generic procedure Unchecked_Deallocation. earlier versions of Ada. @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{20f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{211} @subsection No_Use_Of_Entity @@ -13364,7 +13410,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line @end example @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{210} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{212} @subsection No_Use_Of_Pragma @@ -13374,7 +13420,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line earlier versions of Ada. @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{211} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{213} @subsection Pure_Barriers @@ -13425,7 +13471,7 @@ but still ensures absence of side effects, exceptions, and recursion during the evaluation of the barriers. @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{212} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{214} @subsection Simple_Barriers @@ -13444,7 +13490,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{213} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{215} @subsection Static_Priorities @@ -13455,7 +13501,7 @@ are static, and that there are no dependences on the package @code{Ada.Dynamic_Priorities}. @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{214} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{216} @subsection Static_Storage_Size @@ -13465,7 +13511,7 @@ are static, and that there are no dependences on the package in a Storage_Size pragma or attribute definition clause is static. @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{215}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{216} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{217}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{218} @section Program Unit Level Restrictions @@ -13496,7 +13542,7 @@ other compilation units in the partition. @end menu @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{217} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{219} @subsection No_Elaboration_Code @@ -13552,7 +13598,7 @@ associated with the unit. This counter is typically used to check for access before elaboration and to control multiple elaboration attempts. @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{218} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{21a} @subsection No_Dynamic_Accessibility_Checks @@ -13601,7 +13647,7 @@ In all other cases, the level of T is as defined by the existing rules of Ada. @end itemize @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{219} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{21b} @subsection No_Dynamic_Sized_Objects @@ -13619,7 +13665,7 @@ access discriminants. It is often a good idea to combine this restriction with No_Secondary_Stack. @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21c} @subsection No_Entry_Queue @@ -13632,7 +13678,7 @@ checked at compile time. A program execution is erroneous if an attempt is made to queue a second task on such an entry. @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21d} @subsection No_Implementation_Aspect_Specifications @@ -13643,7 +13689,7 @@ GNAT-defined aspects are present. With this restriction, the only aspects that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21e} @subsection No_Implementation_Attributes @@ -13655,7 +13701,7 @@ attributes that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{21d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{21f} @subsection No_Implementation_Identifiers @@ -13666,7 +13712,7 @@ implementation-defined identifiers (marked with pragma Implementation_Defined) occur within language-defined packages. @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{21e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{220} @subsection No_Implementation_Pragmas @@ -13677,7 +13723,7 @@ GNAT-defined pragmas are present. With this restriction, the only pragmas that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{21f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{221} @subsection No_Implementation_Restrictions @@ -13689,7 +13735,7 @@ are present. With this restriction, the only other restriction identifiers that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{220} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{222} @subsection No_Implementation_Units @@ -13700,7 +13746,7 @@ mention in the context clause of any implementation-defined descendants of packages Ada, Interfaces, or System. @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{221} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{223} @subsection No_Implicit_Aliasing @@ -13715,7 +13761,7 @@ to be aliased, and in such cases, it can always be replaced by the standard attribute Unchecked_Access which is preferable. @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{222} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{224} @subsection No_Implicit_Loops @@ -13732,7 +13778,7 @@ arrays larger than about 5000 scalar components. Note that if this restriction is set in the spec of a package, it will not apply to its body. @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{223} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{225} @subsection No_Obsolescent_Features @@ -13742,7 +13788,7 @@ is set in the spec of a package, it will not apply to its body. features are used, as defined in Annex J of the Ada Reference Manual. @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{224} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{226} @subsection No_Wide_Characters @@ -13756,7 +13802,7 @@ appear in the program (that is literals representing characters not in type @code{Character}). @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{225} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{227} @subsection Static_Dispatch_Tables @@ -13766,7 +13812,7 @@ type @code{Character}). associated with dispatch tables can be placed in read-only memory. @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{226} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{228} @subsection SPARK_05 @@ -13789,7 +13835,7 @@ gnatprove -P project.gpr --mode=check_all @end example @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top -@anchor{gnat_rm/implementation_advice doc}@anchor{227}@anchor{gnat_rm/implementation_advice id1}@anchor{228}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} +@anchor{gnat_rm/implementation_advice doc}@anchor{229}@anchor{gnat_rm/implementation_advice id1}@anchor{22a}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} @chapter Implementation Advice @@ -13887,7 +13933,7 @@ case the text describes what GNAT does and why. @end menu @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{229} +@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{22b} @section RM 1.1.3(20): Error Detection @@ -13904,7 +13950,7 @@ or diagnosed at compile time. @geindex Child Units @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22a} +@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22c} @section RM 1.1.3(31): Child Units @@ -13920,7 +13966,7 @@ Followed. @geindex Bounded errors @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22b} +@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22d} @section RM 1.1.5(12): Bounded Errors @@ -13937,7 +13983,7 @@ runtime. @geindex Pragmas @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice -@anchor{gnat_rm/implementation_advice id2}@anchor{22c}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{22d} +@anchor{gnat_rm/implementation_advice id2}@anchor{22e}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{22f} @section RM 2.8(16): Pragmas @@ -14050,7 +14096,7 @@ that this advice not be followed. For details see @ref{7,,Implementation Defined Pragmas}. @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{22e} +@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{230} @section RM 2.8(17-19): Pragmas @@ -14071,14 +14117,14 @@ replacing @code{library_items}.” @end itemize @end quotation -See @ref{22d,,RM 2.8(16); Pragmas}. +See @ref{22f,,RM 2.8(16); Pragmas}. @geindex Character Sets @geindex Alternative Character Sets @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{22f} +@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{231} @section RM 3.5.2(5): Alternative Character Sets @@ -14106,7 +14152,7 @@ there is no such restriction. @geindex Integer types @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{230} +@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{232} @section RM 3.5.4(28): Integer Types @@ -14125,7 +14171,7 @@ are supported for convenient interface to C, and so that all hardware types of the machine are easily available. @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{231} +@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{233} @section RM 3.5.4(29): Integer Types @@ -14141,7 +14187,7 @@ Followed. @geindex Enumeration values @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{232} +@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{234} @section RM 3.5.5(8): Enumeration Values @@ -14161,7 +14207,7 @@ Followed. @geindex Float types @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{233} +@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{235} @section RM 3.5.7(17): Float Types @@ -14191,7 +14237,7 @@ is a software rather than a hardware format. @geindex multidimensional @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{234} +@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{236} @section RM 3.6.2(11): Multidimensional Arrays @@ -14209,7 +14255,7 @@ Followed. @geindex Duration'Small @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{235} +@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{237} @section RM 9.6(30-31): Duration’Small @@ -14230,7 +14276,7 @@ it need not be the same time base as used for @code{Calendar.Clock}.” Followed. @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{236} +@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{238} @section RM 10.2.1(12): Consistent Representation @@ -14252,7 +14298,7 @@ advice without severely impacting efficiency of execution. @geindex Exception information @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{237} +@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{239} @section RM 11.4.1(19): Exception Information @@ -14283,7 +14329,7 @@ Pragma @code{Discard_Names}. @geindex suppression of @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{238} +@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{23a} @section RM 11.5(28): Suppression of Checks @@ -14298,7 +14344,7 @@ Followed. @geindex Representation clauses @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{239} +@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{23b} @section RM 13.1 (21-24): Representation Clauses @@ -14347,7 +14393,7 @@ Followed. @geindex Packed types @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23a} +@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23c} @section RM 13.2(6-8): Packed Types @@ -14378,7 +14424,7 @@ subcomponent of the packed type. @geindex Address clauses @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23b} +@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23d} @section RM 13.3(14-19): Address Clauses @@ -14431,7 +14477,7 @@ Followed. @geindex Alignment clauses @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23c} +@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23e} @section RM 13.3(29-35): Alignment Clauses @@ -14488,7 +14534,7 @@ Followed. @geindex Size clauses @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{23d} +@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{23f} @section RM 13.3(42-43): Size Clauses @@ -14506,7 +14552,7 @@ object’s @code{Alignment} (if the @code{Alignment} is nonzero).” Followed. @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{23e} +@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{240} @section RM 13.3(50-56): Size Clauses @@ -14557,7 +14603,7 @@ Followed. @geindex Component_Size clauses @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{23f} +@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{241} @section RM 13.3(71-73): Component Size Clauses @@ -14591,7 +14637,7 @@ Followed. @geindex enumeration @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{240} +@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{242} @section RM 13.4(9-10): Enumeration Representation Clauses @@ -14613,7 +14659,7 @@ Followed. @geindex records @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{241} +@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{243} @section RM 13.5.1(17-22): Record Representation Clauses @@ -14673,7 +14719,7 @@ and all mentioned features are implemented. @geindex Storage place attributes @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{242} +@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{244} @section RM 13.5.2(5): Storage Place Attributes @@ -14693,7 +14739,7 @@ Followed. There are no such components in GNAT. @geindex Bit ordering @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{243} +@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{245} @section RM 13.5.3(7-8): Bit Ordering @@ -14713,7 +14759,7 @@ Thus non-default bit ordering is not supported. @geindex as private type @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{244} +@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{246} @section RM 13.7(37): Address as Private @@ -14731,7 +14777,7 @@ Followed. @geindex operations of @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{245} +@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{247} @section RM 13.7.1(16): Address Operations @@ -14749,7 +14795,7 @@ operation raises @code{Program_Error}, since all operations make sense. @geindex Unchecked conversion @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{246} +@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{248} @section RM 13.9(14-17): Unchecked Conversion @@ -14793,7 +14839,7 @@ Followed. @geindex implicit @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{247} +@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{249} @section RM 13.11(23-25): Implicit Heap Usage @@ -14844,7 +14890,7 @@ Followed. @geindex Unchecked deallocation @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{248} +@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{24a} @section RM 13.11.2(17): Unchecked Deallocation @@ -14859,7 +14905,7 @@ Followed. @geindex Stream oriented attributes @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{249} +@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{24b} @section RM 13.13.2(1.6): Stream Oriented Attributes @@ -14890,7 +14936,7 @@ scalar types. This XDR alternative can be enabled via the binder switch -xdr. @geindex Stream oriented attributes @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24a} +@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24c} @section RM A.1(52): Names of Predefined Numeric Types @@ -14908,7 +14954,7 @@ Followed. @geindex Ada.Characters.Handling @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24b} +@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24d} @section RM A.3.2(49): @code{Ada.Characters.Handling} @@ -14925,7 +14971,7 @@ Followed. GNAT provides no such localized definitions. @geindex Bounded-length strings @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24c} +@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24e} @section RM A.4.4(106): Bounded-Length String Handling @@ -14940,7 +14986,7 @@ Followed. No implicit pointers or dynamic allocation are used. @geindex Random number generation @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{24d} +@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{24f} @section RM A.5.2(46-47): Random Number Generation @@ -14969,7 +15015,7 @@ condition here to hold true. @geindex Get_Immediate @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{24e} +@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{250} @section RM A.10.7(23): @code{Get_Immediate} @@ -14993,7 +15039,7 @@ this functionality. @geindex Containers @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{24f} +@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{251} @section RM A.18: @code{Containers} @@ -15014,7 +15060,7 @@ follow the implementation advice. @geindex Export @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{250} +@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{252} @section RM B.1(39-41): Pragma @code{Export} @@ -15062,7 +15108,7 @@ Followed. @geindex Interfaces @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{251} +@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{253} @section RM B.2(12-13): Package @code{Interfaces} @@ -15092,7 +15138,7 @@ Followed. GNAT provides all the packages described in this section. @geindex interfacing with @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{252} +@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{254} @section RM B.3(63-71): Interfacing with C @@ -15180,7 +15226,7 @@ Followed. @geindex interfacing with @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{253} +@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{255} @section RM B.4(95-98): Interfacing with COBOL @@ -15221,7 +15267,7 @@ Followed. @geindex interfacing with @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{254} +@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{256} @section RM B.5(22-26): Interfacing with Fortran @@ -15272,7 +15318,7 @@ Followed. @geindex Machine operations @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{255} +@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{257} @section RM C.1(3-5): Access to Machine Operations @@ -15307,7 +15353,7 @@ object that is specified as exported.” Followed. @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{256} +@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{258} @section RM C.1(10-16): Access to Machine Operations @@ -15368,7 +15414,7 @@ Followed on any target supporting such operations. @geindex Interrupt support @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{257} +@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{259} @section RM C.3(28): Interrupt Support @@ -15386,7 +15432,7 @@ of interrupt blocking. @geindex Protected procedure handlers @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{258} +@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{25a} @section RM C.3.1(20-21): Protected Procedure Handlers @@ -15412,7 +15458,7 @@ Followed. Compile time warnings are given when possible. @geindex Interrupts @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{259} +@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{25b} @section RM C.3.2(25): Package @code{Interrupts} @@ -15430,7 +15476,7 @@ Followed. @geindex Pre-elaboration requirements @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25a} +@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25c} @section RM C.4(14): Pre-elaboration Requirements @@ -15446,7 +15492,7 @@ Followed. Executable code is generated in some cases, e.g., loops to initialize large arrays. @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25b} +@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25d} @section RM C.5(8): Pragma @code{Discard_Names} @@ -15464,7 +15510,7 @@ Followed. @geindex Task_Attributes @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25c} +@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25e} @section RM C.7.2(30): The Package Task_Attributes @@ -15485,7 +15531,7 @@ Not followed. This implementation is not targeted to such a domain. @geindex Locking Policies @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{25d} +@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{25f} @section RM D.3(17): Locking Policies @@ -15502,7 +15548,7 @@ whose names (@code{Inheritance_Locking} and @geindex Entry queuing policies @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{25e} +@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{260} @section RM D.4(16): Entry Queuing Policies @@ -15517,7 +15563,7 @@ Followed. No such implementation-defined queuing policies exist. @geindex Preemptive abort @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{25f} +@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{261} @section RM D.6(9-10): Preemptive Abort @@ -15543,7 +15589,7 @@ Followed. @geindex Tasking restrictions @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{260} +@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{262} @section RM D.7(21): Tasking Restrictions @@ -15562,7 +15608,7 @@ pragma @code{Profile (Restricted)} for more details. @geindex monotonic @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{261} +@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{263} @section RM D.8(47-49): Monotonic Time @@ -15597,7 +15643,7 @@ Followed. @geindex PCS @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{262} +@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{264} @section RM E.5(28-29): Partition Communication Subsystem @@ -15625,7 +15671,7 @@ GNAT. @geindex COBOL support @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{263} +@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{265} @section RM F(7): COBOL Support @@ -15645,7 +15691,7 @@ Followed. @geindex Decimal radix support @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{264} +@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{266} @section RM F.1(2): Decimal Radix Support @@ -15661,7 +15707,7 @@ representations. @geindex Numerics @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{265} +@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{267} @section RM G: Numerics @@ -15681,7 +15727,7 @@ Followed. @geindex Complex types @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{266} +@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{268} @section RM G.1.1(56-58): Complex Types @@ -15743,7 +15789,7 @@ Followed. @geindex Complex elementary functions @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{267} +@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{269} @section RM G.1.2(49): Complex Elementary Functions @@ -15765,7 +15811,7 @@ Followed. @geindex Accuracy requirements @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{268} +@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{26a} @section RM G.2.4(19): Accuracy Requirements @@ -15789,7 +15835,7 @@ Followed. @geindex complex arithmetic @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{269} +@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{26b} @section RM G.2.6(15): Complex Arithmetic Accuracy @@ -15807,7 +15853,7 @@ Followed. @geindex Sequential elaboration policy @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26a} +@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26c} @section RM H.6(15/2): Pragma Partition_Elaboration_Policy @@ -15822,7 +15868,7 @@ immediately terminated.” Not followed. @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top -@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26b}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26c}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} +@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26d}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26e}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} @chapter Implementation Defined Characteristics @@ -16671,7 +16717,7 @@ See separate section on data representations. such aspects and the legality rules for such aspects. See 13.1.1(38).” @end itemize -See @ref{129,,Implementation Defined Aspects}. +See @ref{12a,,Implementation Defined Aspects}. @itemize * @@ -17117,7 +17163,7 @@ When the @code{Pattern} parameter is not the null string, it is interpreted according to the syntax of regular expressions as defined in the @code{GNAT.Regexp} package. -See @ref{26d,,GNAT.Regexp (g-regexp.ads)}. +See @ref{26f,,GNAT.Regexp (g-regexp.ads)}. @itemize * @@ -18215,7 +18261,7 @@ Information on those subjects is not yet available. Execution is erroneous in that case. @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top -@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} +@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} @chapter Intrinsic Subprograms @@ -18253,7 +18299,7 @@ Ada standard does not require Ada compilers to implement this feature. @end menu @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{271} +@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{273} @section Intrinsic Operators @@ -18284,7 +18330,7 @@ It is also possible to specify such operators for private types, if the full views are appropriate arithmetic types. @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{273} +@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{275} @section Compilation_ISO_Date @@ -18298,7 +18344,7 @@ application program should simply call the function the current compilation (in local time format YYYY-MM-DD). @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{275} +@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{276}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{277} @section Compilation_Date @@ -18308,7 +18354,7 @@ Same as Compilation_ISO_Date, except the string is in the form MMM DD YYYY. @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{276}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{277} +@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{278}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{279} @section Compilation_Time @@ -18322,7 +18368,7 @@ application program should simply call the function the current compilation (in local time format HH:MM:SS). @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{278}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{279} +@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{27a}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{27b} @section Enclosing_Entity @@ -18336,7 +18382,7 @@ application program should simply call the function the current subprogram, package, task, entry, or protected subprogram. @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27a}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27b} +@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27d} @section Exception_Information @@ -18350,7 +18396,7 @@ so an application program should simply call the function the exception information associated with the current exception. @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{27d} +@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{27f} @section Exception_Message @@ -18364,7 +18410,7 @@ so an application program should simply call the function the message associated with the current exception. @node Exception_Name,File,Exception_Message,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{27f} +@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{281} @section Exception_Name @@ -18378,7 +18424,7 @@ so an application program should simply call the function the name of the current exception. @node File,Line,Exception_Name,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms file}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{281} +@anchor{gnat_rm/intrinsic_subprograms file}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{283} @section File @@ -18392,7 +18438,7 @@ application program should simply call the function file. @node Line,Shifts and Rotates,File,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{283} +@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{285} @section Line @@ -18406,7 +18452,7 @@ application program should simply call the function source line. @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{285} +@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{287} @section Shifts and Rotates @@ -18449,7 +18495,7 @@ corresponding operator for modular type. In particular, shifting a negative number may change its sign bit to positive. @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{287} +@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{288}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{289} @section Source_Location @@ -18463,7 +18509,7 @@ application program should simply call the function source file location. @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top -@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} +@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} @chapter Representation Clauses and Pragmas @@ -18509,7 +18555,7 @@ and this section describes the additional capabilities provided. @end menu @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28b} +@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28d} @section Alignment Clauses @@ -18531,7 +18577,7 @@ For elementary types, the alignment is the minimum of the actual size of objects of the type divided by @code{Storage_Unit}, and the maximum alignment supported by the target. (This maximum alignment is given by the GNAT-specific attribute -@code{Standard'Maximum_Alignment}; see @ref{19a,,Attribute Maximum_Alignment}.) +@code{Standard'Maximum_Alignment}; see @ref{19c,,Attribute Maximum_Alignment}.) @geindex Maximum_Alignment attribute @@ -18640,7 +18686,7 @@ assumption is non-portable, and other compilers may choose different alignments for the subtype @code{RS}. @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{28d} +@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{28f} @section Size Clauses @@ -18717,7 +18763,7 @@ if it is known that a Size value can be accommodated in an object of type Integer. @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{28f} +@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{291} @section Storage_Size Clauses @@ -18790,7 +18836,7 @@ Of course in practice, there will not be any explicit allocators in the case of such an access declaration. @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{291} +@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{293} @section Size of Variant Record Objects @@ -18900,7 +18946,7 @@ the maximum size, regardless of the current variant value, the variant value. @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{293} +@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{295} @section Biased Representation @@ -18938,7 +18984,7 @@ biased representation can be used for all discrete types except for enumeration types for which a representation clause is given. @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{295} +@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{297} @section Value_Size and Object_Size Clauses @@ -19254,7 +19300,7 @@ definition clause forces biased representation. This warning can be turned off using @code{-gnatw.B}. @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{297} +@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{299} @section Component_Size Clauses @@ -19302,7 +19348,7 @@ and a pragma Pack for the same array type. if such duplicate clauses are given, the pragma Pack will be ignored. @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{299} +@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{29b} @section Bit_Order Clauses @@ -19408,7 +19454,7 @@ if desired. The following section contains additional details regarding the issue of byte ordering. @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29b} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29d} @section Effect of Bit_Order on Byte Ordering @@ -19665,7 +19711,7 @@ to set the boolean constant @code{Master_Byte_First} in an appropriate manner. @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{29d} +@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{29f} @section Pragma Pack for Arrays @@ -19785,7 +19831,7 @@ Here 31-bit packing is achieved as required, and no warning is generated, since in this case the programmer intention is clear. @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{29f} +@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2a1} @section Pragma Pack for Records @@ -19869,7 +19915,7 @@ array that is longer than 64 bits, so it is itself non-packable on boundary, and takes an integral number of bytes, i.e., 72 bits. @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a1} +@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a3} @section Record Representation Clauses @@ -19948,7 +19994,7 @@ end record; @end example @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a3} +@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a5} @section Handling of Records with Holes @@ -20024,7 +20070,7 @@ for Hrec'Size use 64; @end example @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a5} +@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a7} @section Enumeration Clauses @@ -20067,7 +20113,7 @@ the overhead of converting representation values to the corresponding positional values, (i.e., the value delivered by the @code{Pos} attribute). @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2a7} +@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2a9} @section Address Clauses @@ -20407,7 +20453,7 @@ then the program compiles without the warning and when run will generate the output @code{X was not clobbered}. @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2a9} +@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2ab} @section Use of Address Clauses for Memory-Mapped I/O @@ -20465,7 +20511,7 @@ provides the pragma @code{Volatile_Full_Access} which can be used in lieu of pragma @code{Atomic} and will give the additional guarantee. @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ab} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ad} @section Effect of Convention on Representation @@ -20543,7 +20589,7 @@ when one of these values is read, any nonzero value is treated as True. @end itemize @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2ad} +@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2af} @section Conventions and Anonymous Access Types @@ -20619,7 +20665,7 @@ package ConvComp is @end example @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2af} +@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2b0}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2b1} @section Determining the Representations chosen by GNAT @@ -20771,7 +20817,7 @@ generated by the compiler into the original source to fix and guarantee the actual representation to be used. @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top -@anchor{gnat_rm/standard_library_routines doc}@anchor{2b0}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b1}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} +@anchor{gnat_rm/standard_library_routines doc}@anchor{2b2}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b3}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} @chapter Standard Library Routines @@ -21595,7 +21641,7 @@ For packages in Interfaces and System, all the RM defined packages are available in GNAT, see the Ada 2012 RM for full details. @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top -@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} +@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} @chapter The Implementation of Standard I/O @@ -21647,7 +21693,7 @@ these additional facilities are also described in this chapter. @end menu @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b7} @section Standard I/O Packages @@ -21718,7 +21764,7 @@ flush the common I/O streams and in particular Standard_Output before elaborating the Ada code. @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2b7} +@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2b9} @section FORM Strings @@ -21744,7 +21790,7 @@ unrecognized keyword appears in a form string, it is silently ignored and not considered invalid. @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2b9} +@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2bb} @section Direct_IO @@ -21763,7 +21809,7 @@ There is no limit on the size of Direct_IO files, they are expanded as necessary to accommodate whatever records are written to the file. @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2bb} +@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2bd} @section Sequential_IO @@ -21810,7 +21856,7 @@ using Stream_IO, and this is the preferred mechanism. In particular, the above program fragment rewritten to use Stream_IO will work correctly. @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2bd} +@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2bf} @section Text_IO @@ -21893,7 +21939,7 @@ the file. @end menu @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2bf} +@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2c1} @subsection Stream Pointer Positioning @@ -21929,7 +21975,7 @@ between two Ada files, then the difference may be observable in some situations. @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c1} +@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c3} @subsection Reading and Writing Non-Regular Files @@ -21980,7 +22026,7 @@ to read data past that end of file indication, until another end of file indication is entered. @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c3} +@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c5} @subsection Get_Immediate @@ -21998,7 +22044,7 @@ possible), it is undefined whether the FF character will be treated as a page mark. @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c7} @subsection Treating Text_IO Files as Streams @@ -22014,7 +22060,7 @@ skipped and the effect is similar to that described above for @code{Get_Immediate}. @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2c7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2c9} @subsection Text_IO Extensions @@ -22042,7 +22088,7 @@ the string is to be read. @end itemize @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2c9} +@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2cb} @subsection Text_IO Facilities for Unbounded Strings @@ -22090,7 +22136,7 @@ files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings. @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2cb} +@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2cd} @section Wide_Text_IO @@ -22337,12 +22383,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2cd} +@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2cf} @subsection Stream Pointer Positioning @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2bd,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2bf,,Text_IO}). There is one additional case: If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22361,7 +22407,7 @@ to a normal program using @code{Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2cf} +@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2d1} @subsection Reading and Writing Non-Regular Files @@ -22372,7 +22418,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d1} +@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d3} @section Wide_Wide_Text_IO @@ -22541,12 +22587,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d3} +@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d5} @subsection Stream Pointer Positioning @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2bd,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2bf,,Text_IO}). There is one additional case: If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22565,7 +22611,7 @@ to a normal program using @code{Wide_Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d7} @subsection Reading and Writing Non-Regular Files @@ -22576,7 +22622,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2d7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2d9} @section Stream_IO @@ -22598,7 +22644,7 @@ manner described for stream attributes. @end itemize @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2d9} +@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2db} @section Text Translation @@ -22632,7 +22678,7 @@ mode. (corresponds to_O_U16TEXT). @end itemize @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2db} +@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2dd} @section Shared Files @@ -22695,7 +22741,7 @@ heterogeneous input-output. Although this approach will work in GNAT if for this purpose (using the stream attributes) @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2dd} +@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2df} @section Filenames encoding @@ -22735,7 +22781,7 @@ platform. On the other Operating Systems the run-time is supporting UTF-8 natively. @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2df} +@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2e1} @section File content encoding @@ -22768,7 +22814,7 @@ Unicode 8-bit encoding This encoding is only supported on the Windows platform. @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e1} +@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e3} @section Open Modes @@ -22871,7 +22917,7 @@ subsequently requires switching from reading to writing or vice-versa, then the file is reopened in @code{r+} mode to permit the required operation. @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e3} +@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e5} @section Operations on C Streams @@ -23031,7 +23077,7 @@ end Interfaces.C_Streams; @end example @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e6}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e7} @section Interfacing to C Streams @@ -23124,7 +23170,7 @@ imported from a C program, allowing an Ada file to operate on an existing C file. @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top -@anchor{gnat_rm/the_gnat_library doc}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id1}@anchor{2e7}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} +@anchor{gnat_rm/the_gnat_library doc}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id1}@anchor{2e9}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} @chapter The GNAT Library @@ -23309,7 +23355,7 @@ of GNAT, and will generate a warning message. @end menu @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id2}@anchor{2e9} +@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id2}@anchor{2eb} @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads}) @@ -23326,7 +23372,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id3}@anchor{2eb} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id3}@anchor{2ed} @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads}) @@ -23343,7 +23389,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id4}@anchor{2ed} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id4}@anchor{2ef} @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads}) @@ -23360,7 +23406,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id5}@anchor{2ef} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id5}@anchor{2f1} @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads}) @@ -23377,7 +23423,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f1} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f3} @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads}) @@ -23394,7 +23440,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f3} +@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f5} @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads}) @@ -23406,7 +23452,7 @@ This child of @code{Ada.Containers} defines a modified version of Indefinite_Holders that avoids heap allocation. @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f5} +@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f7} @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads}) @@ -23419,7 +23465,7 @@ provides a mechanism for obtaining environment values on systems where this concept makes sense. @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id9}@anchor{2f7} +@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id9}@anchor{2f9} @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads}) @@ -23437,7 +23483,7 @@ to further calls to the subprograms in @code{Ada.Command_Line}. These calls will not see the removed argument. @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id10}@anchor{2f9} +@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id10}@anchor{2fb} @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads}) @@ -23457,7 +23503,7 @@ Using a response file allow passing a set of arguments to an executable longer than the maximum allowed by the system on the command line. @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fb} +@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fd} @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads}) @@ -23472,7 +23518,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id12}@anchor{2fd} +@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id12}@anchor{2ff} @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads}) @@ -23486,7 +23532,7 @@ exception occurrence (@code{Null_Occurrence}) without raising an exception. @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ff} +@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id13}@anchor{301} @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads}) @@ -23500,7 +23546,7 @@ exceptions (hence the name last chance), and perform clean ups before terminating the program. Note that this subprogram never returns. @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id14}@anchor{301} +@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id14}@anchor{303} @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads}) @@ -23513,7 +23559,7 @@ give a traceback array of addresses based on an exception occurrence. @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id15}@anchor{303} +@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id15}@anchor{305} @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads}) @@ -23528,7 +23574,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id16}@anchor{305} +@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id16}@anchor{307} @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads}) @@ -23543,7 +23589,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id17}@anchor{307} +@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id17}@anchor{309} @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads}) @@ -23560,7 +23606,7 @@ strings, avoiding the necessity for an intermediate operation with ordinary strings. @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id18}@anchor{309} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id18}@anchor{30b} @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads}) @@ -23577,7 +23623,7 @@ wide strings, avoiding the necessity for an intermediate operation with ordinary wide strings. @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id19}@anchor{30b} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id19}@anchor{30d} @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads}) @@ -23594,7 +23640,7 @@ wide wide strings, avoiding the necessity for an intermediate operation with ordinary wide wide strings. @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id20}@anchor{30d} +@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id20}@anchor{30f} @section @code{Ada.Task_Initialization} (@code{a-tasini.ads}) @@ -23606,7 +23652,7 @@ parameterless procedures. Note that such a handler is only invoked for those tasks activated after the handler is set. @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id21}@anchor{30f} +@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id21}@anchor{311} @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads}) @@ -23621,7 +23667,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id22}@anchor{311} +@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id22}@anchor{313} @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads}) @@ -23636,7 +23682,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id23}@anchor{313} +@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id23}@anchor{315} @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads}) @@ -23649,7 +23695,7 @@ This package provides subprograms that allow categorization of Wide_Character values according to Unicode categories. @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id24}@anchor{315} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id24}@anchor{317} @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads}) @@ -23664,7 +23710,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id25}@anchor{317} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id25}@anchor{319} @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads}) @@ -23679,7 +23725,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id26}@anchor{319} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id26}@anchor{31b} @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads}) @@ -23692,7 +23738,7 @@ This package provides subprograms that allow categorization of Wide_Wide_Character values according to Unicode categories. @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id27}@anchor{31b} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id27}@anchor{31d} @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads}) @@ -23707,7 +23753,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id28}@anchor{31d} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id28}@anchor{31f} @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads}) @@ -23722,7 +23768,7 @@ change during execution (for example a standard input file may be redefined to be interactive). @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id29}@anchor{31f} +@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id29}@anchor{321} @section @code{GNAT.Altivec} (@code{g-altive.ads}) @@ -23735,7 +23781,7 @@ definitions of constants and types common to all the versions of the binding. @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id30}@anchor{321} +@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id30}@anchor{323} @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads}) @@ -23746,7 +23792,7 @@ binding. This package provides the Vector/View conversion routines. @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id31}@anchor{323} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id31}@anchor{325} @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads}) @@ -23760,7 +23806,7 @@ library. The hard binding is provided as a separate package. This unit is common to both bindings. @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id32}@anchor{325} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id32}@anchor{327} @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads}) @@ -23772,7 +23818,7 @@ This package exposes the various vector types part of the Ada binding to AltiVec facilities. @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id33}@anchor{327} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id33}@anchor{329} @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads}) @@ -23787,7 +23833,7 @@ vector elements and provides a simple way to initialize vector objects. @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id34}@anchor{329} +@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id34}@anchor{32b} @section @code{GNAT.Array_Split} (@code{g-arrspl.ads}) @@ -23800,7 +23846,7 @@ an array wherever the separators appear, and provide direct access to the resulting slices. @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id35}@anchor{32b} +@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id35}@anchor{32d} @section @code{GNAT.AWK} (@code{g-awk.ads}) @@ -23815,7 +23861,7 @@ or more files containing formatted data. The file is viewed as a database where each record is a line and a field is a data element in this line. @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id36}@anchor{32d} +@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id36}@anchor{32f} @section @code{GNAT.Binary_Search} (@code{g-binsea.ads}) @@ -23827,7 +23873,7 @@ Allow binary search of a sorted array (or of an array-like container; the generic does not reference the array directly). @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id37}@anchor{32f} +@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id37}@anchor{331} @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads}) @@ -23840,7 +23886,7 @@ These associations can be specified using the @code{-V} binder command line switch. @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id38}@anchor{331} +@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id38}@anchor{333} @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads}) @@ -23851,7 +23897,7 @@ line switch. Provides routines giving hints to the branch predictor of the code generator. @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id39}@anchor{333} +@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id39}@anchor{335} @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads}) @@ -23866,7 +23912,7 @@ useful directly or as parts of the implementations of other abstractions, such as mailboxes. @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id40}@anchor{335} +@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id40}@anchor{337} @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads}) @@ -23879,7 +23925,7 @@ such as mailboxes. Provides a thread-safe asynchronous intertask mailbox communication facility. @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id41}@anchor{337} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id41}@anchor{339} @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads}) @@ -23894,7 +23940,7 @@ data items. Exchange and comparison procedures are provided by passing access-to-procedure values. @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id42}@anchor{339} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id42}@anchor{33b} @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads}) @@ -23910,7 +23956,7 @@ access-to-procedure values. This is an older version, retained for compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable. @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id43}@anchor{33b} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id43}@anchor{33d} @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads}) @@ -23926,7 +23972,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id44}@anchor{33d} +@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id44}@anchor{33f} @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads}) @@ -23942,7 +23988,7 @@ the encoding of the string. The routine includes detection of special XML sequences for various UCS input formats. @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id45}@anchor{33f} +@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id45}@anchor{341} @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads}) @@ -23956,7 +24002,7 @@ General routines for swapping the bytes in 2-, 4-, and 8-byte quantities. Machine-specific implementations are available in some cases. @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id46}@anchor{341} +@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id46}@anchor{343} @section @code{GNAT.Calendar} (@code{g-calend.ads}) @@ -23970,7 +24016,7 @@ Also provides conversion of @code{Ada.Calendar.Time} values to and from the C @code{timeval} format. @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id47}@anchor{343} +@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id47}@anchor{345} @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads}) @@ -23981,7 +24027,7 @@ C @code{timeval} format. @geindex GNAT.Calendar.Time_IO (g-catiio.ads) @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id48}@anchor{345} +@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id48}@anchor{347} @section @code{GNAT.CRC32} (@code{g-crc32.ads}) @@ -23998,7 +24044,7 @@ of this algorithm see Aug. 1988. Sarwate, D.V. @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id49}@anchor{347} +@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id49}@anchor{349} @section @code{GNAT.Case_Util} (@code{g-casuti.ads}) @@ -24013,7 +24059,7 @@ without the overhead of the full casing tables in @code{Ada.Characters.Handling}. @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id50}@anchor{349} +@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id50}@anchor{34b} @section @code{GNAT.CGI} (@code{g-cgi.ads}) @@ -24028,7 +24074,7 @@ builds a table whose index is the key and provides some services to deal with this table. @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id51}@anchor{34b} +@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id51}@anchor{34d} @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads}) @@ -24043,7 +24089,7 @@ Common Gateway Interface (CGI). It exports services to deal with Web cookies (piece of information kept in the Web client software). @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id52}@anchor{34d} +@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id52}@anchor{34f} @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads}) @@ -24055,7 +24101,7 @@ This is a package to help debugging CGI (Common Gateway Interface) programs written in Ada. @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id53}@anchor{34f} +@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id53}@anchor{351} @section @code{GNAT.Command_Line} (@code{g-comlin.ads}) @@ -24068,7 +24114,7 @@ including the ability to scan for named switches with optional parameters and expand file names using wildcard notations. @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id54}@anchor{351} +@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id54}@anchor{353} @section @code{GNAT.Compiler_Version} (@code{g-comver.ads}) @@ -24086,7 +24132,7 @@ of the compiler if a consistent tool set is used to compile all units of a partition). @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id55}@anchor{353} +@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id55}@anchor{355} @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads}) @@ -24097,7 +24143,7 @@ of a partition). Provides a simple interface to handle Ctrl-C keyboard events. @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id56}@anchor{355} +@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id56}@anchor{357} @section @code{GNAT.Current_Exception} (@code{g-curexc.ads}) @@ -24114,7 +24160,7 @@ This is particularly useful in simulating typical facilities for obtaining information about exceptions provided by Ada 83 compilers. @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id57}@anchor{357} +@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id57}@anchor{359} @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads}) @@ -24131,7 +24177,7 @@ problems. See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}. @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id58}@anchor{359} +@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id58}@anchor{35b} @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads}) @@ -24144,7 +24190,7 @@ to and from string images of address values. Supports both C and Ada formats for hexadecimal literals. @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id59}@anchor{35b} +@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id59}@anchor{35d} @section @code{GNAT.Decode_String} (@code{g-decstr.ads}) @@ -24168,7 +24214,7 @@ Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id60}@anchor{35d} +@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id60}@anchor{35f} @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads}) @@ -24189,7 +24235,7 @@ preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding. @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id61}@anchor{35f} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id61}@anchor{361} @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads}) @@ -24202,7 +24248,7 @@ the current directory, making new directories, and scanning the files in a directory. @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id62}@anchor{361} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id62}@anchor{363} @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads}) @@ -24214,7 +24260,7 @@ A child unit of GNAT.Directory_Operations providing additional operations for iterating through directories. @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id63}@anchor{363} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id63}@anchor{365} @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads}) @@ -24232,7 +24278,7 @@ dynamic instances of the hash table, while an instantiation of @code{GNAT.HTable} creates a single instance of the hash table. @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id64}@anchor{365} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id64}@anchor{367} @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads}) @@ -24252,7 +24298,7 @@ dynamic instances of the table, while an instantiation of @code{GNAT.Table} creates a single instance of the table type. @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id65}@anchor{367} +@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id65}@anchor{369} @section @code{GNAT.Encode_String} (@code{g-encstr.ads}) @@ -24274,7 +24320,7 @@ encoding method. Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id66}@anchor{369} +@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id66}@anchor{36b} @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads}) @@ -24295,7 +24341,7 @@ Note there is a preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding. @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id67}@anchor{36b} +@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id67}@anchor{36d} @section @code{GNAT.Exception_Actions} (@code{g-excact.ads}) @@ -24308,7 +24354,7 @@ for specific exceptions, or when any exception is raised. This can be used for instance to force a core dump to ease debugging. @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id68}@anchor{36d} +@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id68}@anchor{36f} @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads}) @@ -24322,7 +24368,7 @@ Provides an interface allowing to control automatic output upon exception occurrences. @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id69}@anchor{36f} +@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id69}@anchor{371} @section @code{GNAT.Exceptions} (@code{g-except.ads}) @@ -24343,7 +24389,7 @@ predefined exceptions, and for example allows raising @code{Constraint_Error} with a message from a pure subprogram. @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id70}@anchor{371} +@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id70}@anchor{373} @section @code{GNAT.Expect} (@code{g-expect.ads}) @@ -24359,7 +24405,7 @@ It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id71}@anchor{373} +@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id71}@anchor{375} @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads}) @@ -24371,7 +24417,7 @@ ports. It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id72}@anchor{375} +@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id72}@anchor{377} @section @code{GNAT.Float_Control} (@code{g-flocon.ads}) @@ -24385,7 +24431,7 @@ library calls may cause this mode to be modified, and the Reset procedure in this package can be used to reestablish the required mode. @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id73}@anchor{377} +@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id73}@anchor{379} @section @code{GNAT.Formatted_String} (@code{g-forstr.ads}) @@ -24400,7 +24446,7 @@ derived from Integer, Float or enumerations as values for the formatted string. @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id74}@anchor{379} +@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id74}@anchor{37b} @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads}) @@ -24418,7 +24464,7 @@ have a vector implementation that can be automatically used by the compiler when auto-vectorization is enabled. @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id75}@anchor{37b} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id75}@anchor{37d} @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads}) @@ -24432,7 +24478,7 @@ access-to-procedure values. The algorithm used is a modified heap sort that performs approximately N*log(N) comparisons in the worst case. @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id76}@anchor{37d} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id76}@anchor{37f} @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads}) @@ -24448,7 +24494,7 @@ This differs from @code{GNAT.Heap_Sort} in having a less convenient interface, but may be slightly more efficient. @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id77}@anchor{37f} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id77}@anchor{381} @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads}) @@ -24462,7 +24508,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id78}@anchor{381} +@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id78}@anchor{383} @section @code{GNAT.HTable} (@code{g-htable.ads}) @@ -24475,7 +24521,7 @@ data. Provides two approaches, one a simple static approach, and the other allowing arbitrary dynamic hash tables. @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id79}@anchor{383} +@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id79}@anchor{385} @section @code{GNAT.IO} (@code{g-io.ads}) @@ -24491,7 +24537,7 @@ Standard_Input, and writing characters, strings and integers to either Standard_Output or Standard_Error. @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id80}@anchor{385} +@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id80}@anchor{387} @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads}) @@ -24505,7 +24551,7 @@ Provides some auxiliary functions for use with Text_IO, including a test for whether a file exists, and functions for reading a line of text. @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id81}@anchor{387} +@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id81}@anchor{389} @section @code{GNAT.Lock_Files} (@code{g-locfil.ads}) @@ -24519,7 +24565,7 @@ Provides a general interface for using files as locks. Can be used for providing program level synchronization. @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id82}@anchor{389} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id82}@anchor{38b} @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads}) @@ -24531,7 +24577,7 @@ The original implementation of @code{Ada.Numerics.Discrete_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id83}@anchor{38b} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id83}@anchor{38d} @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads}) @@ -24543,7 +24589,7 @@ The original implementation of @code{Ada.Numerics.Float_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id84}@anchor{38d} +@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id84}@anchor{38f} @section @code{GNAT.MD5} (@code{g-md5.ads}) @@ -24556,7 +24602,7 @@ the HMAC-MD5 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id85}@anchor{38f} +@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id85}@anchor{391} @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads}) @@ -24569,7 +24615,7 @@ standard output or standard error files. Uses GNAT.IO for actual output. @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id86}@anchor{391} +@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id86}@anchor{393} @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads}) @@ -24583,7 +24629,7 @@ various logging purposes, including duplicating functionality of some Ada 83 implementation dependent extensions. @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id87}@anchor{393} +@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id87}@anchor{395} @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads}) @@ -24599,7 +24645,7 @@ including a portable spawn procedure, and access to environment variables and error return codes. @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id88}@anchor{395} +@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id88}@anchor{397} @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads}) @@ -24617,7 +24663,7 @@ hashcode are in the same order. These hashing functions are very convenient for use with realtime applications. @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id89}@anchor{397} +@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id89}@anchor{399} @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads}) @@ -24629,7 +24675,7 @@ Provides random number capabilities which extend those available in the standard Ada library and are more convenient to use. @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{26d}@anchor{gnat_rm/the_gnat_library id90}@anchor{398} +@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{26f}@anchor{gnat_rm/the_gnat_library id90}@anchor{39a} @section @code{GNAT.Regexp} (@code{g-regexp.ads}) @@ -24645,7 +24691,7 @@ simplest of the three pattern matching packages provided, and is particularly suitable for ‘file globbing’ applications. @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id91}@anchor{39a} +@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id91}@anchor{39c} @section @code{GNAT.Registry} (@code{g-regist.ads}) @@ -24659,7 +24705,7 @@ registry API, but at a lower level of abstraction, refer to the Win32.Winreg package provided with the Win32Ada binding @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id92}@anchor{39c} +@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id92}@anchor{39e} @section @code{GNAT.Regpat} (@code{g-regpat.ads}) @@ -24674,7 +24720,7 @@ from the original V7 style regular expression library written in C by Henry Spencer (and binary compatible with this C library). @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id93}@anchor{39e} +@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id93}@anchor{3a0} @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads}) @@ -24688,7 +24734,7 @@ full content to be processed is not loaded into memory all at once. This makes this interface usable for large files or socket streams. @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a0} +@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a2} @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads}) @@ -24700,7 +24746,7 @@ Provides the capability to query the high water mark of the current task’s secondary stack. @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a2} +@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a4} @section @code{GNAT.Semaphores} (@code{g-semaph.ads}) @@ -24711,7 +24757,7 @@ secondary stack. Provides classic counting and binary semaphores using protected types. @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a4} +@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a6} @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads}) @@ -24723,7 +24769,7 @@ Provides a simple interface to send and receive data over a serial port. This is only supported on GNU/Linux and Windows. @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a6} +@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a8} @section @code{GNAT.SHA1} (@code{g-sha1.ads}) @@ -24736,7 +24782,7 @@ and RFC 3174, and the HMAC-SHA1 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id98}@anchor{3a8} +@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id98}@anchor{3aa} @section @code{GNAT.SHA224} (@code{g-sha224.ads}) @@ -24749,7 +24795,7 @@ and the HMAC-SHA224 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id99}@anchor{3aa} +@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id99}@anchor{3ac} @section @code{GNAT.SHA256} (@code{g-sha256.ads}) @@ -24762,7 +24808,7 @@ and the HMAC-SHA256 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id100}@anchor{3ac} +@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id100}@anchor{3ae} @section @code{GNAT.SHA384} (@code{g-sha384.ads}) @@ -24775,7 +24821,7 @@ and the HMAC-SHA384 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id101}@anchor{3ae} +@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id101}@anchor{3b0} @section @code{GNAT.SHA512} (@code{g-sha512.ads}) @@ -24788,7 +24834,7 @@ and the HMAC-SHA512 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b0} +@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b2} @section @code{GNAT.Signals} (@code{g-signal.ads}) @@ -24800,7 +24846,7 @@ Provides the ability to manipulate the blocked status of signals on supported targets. @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b2} +@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b4} @section @code{GNAT.Sockets} (@code{g-socket.ads}) @@ -24815,7 +24861,7 @@ on all native GNAT ports and on VxWorks cross ports. It is not implemented for the LynxOS cross port. @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b4} +@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b6} @section @code{GNAT.Source_Info} (@code{g-souinf.ads}) @@ -24829,7 +24875,7 @@ subprograms yielding the date and time of the current compilation (like the C macros @code{__DATE__} and @code{__TIME__}) @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b6} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b8} @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads}) @@ -24841,7 +24887,7 @@ Provides a function for determining whether one string is a plausible near misspelling of another string. @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id106}@anchor{3b8} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id106}@anchor{3ba} @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads}) @@ -24854,7 +24900,7 @@ determining whether one string is a plausible near misspelling of another string. @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id107}@anchor{3ba} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id107}@anchor{3bc} @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads}) @@ -24870,7 +24916,7 @@ the SNOBOL4 dynamic pattern construction and matching capabilities, using the efficient algorithm developed by Robert Dewar for the SPITBOL system. @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id108}@anchor{3bc} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id108}@anchor{3be} @section @code{GNAT.Spitbol} (@code{g-spitbo.ads}) @@ -24885,7 +24931,7 @@ useful for constructing arbitrary mappings from strings in the style of the SNOBOL4 TABLE function. @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id109}@anchor{3be} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id109}@anchor{3c0} @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads}) @@ -24900,7 +24946,7 @@ for type @code{Standard.Boolean}, giving an implementation of sets of string values. @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c0} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c2} @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads}) @@ -24917,7 +24963,7 @@ for type @code{Standard.Integer}, giving an implementation of maps from string to integer values. @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c2} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c4} @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads}) @@ -24934,7 +24980,7 @@ a variable length string type, giving an implementation of general maps from strings to strings. @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c4} +@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c6} @section @code{GNAT.SSE} (@code{g-sse.ads}) @@ -24946,7 +24992,7 @@ targets. It exposes vector component types together with a general introduction to the binding contents and use. @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c6} +@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c8} @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads}) @@ -24955,7 +25001,7 @@ introduction to the binding contents and use. SSE vector types for use with SSE related intrinsics. @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id114}@anchor{3c8} +@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id114}@anchor{3ca} @section @code{GNAT.String_Hash} (@code{g-strhas.ads}) @@ -24967,7 +25013,7 @@ Provides a generic hash function working on arrays of scalars. Both the scalar type and the hash result type are parameters. @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id115}@anchor{3ca} +@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id115}@anchor{3cc} @section @code{GNAT.Strings} (@code{g-string.ads}) @@ -24977,7 +25023,7 @@ Common String access types and related subprograms. Basically it defines a string access and an array of string access types. @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id116}@anchor{3cc} +@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id116}@anchor{3ce} @section @code{GNAT.String_Split} (@code{g-strspl.ads}) @@ -24991,7 +25037,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id117}@anchor{3ce} +@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id117}@anchor{3d0} @section @code{GNAT.Table} (@code{g-table.ads}) @@ -25011,7 +25057,7 @@ while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be used to define dynamic instances of the table. @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d0} +@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d2} @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads}) @@ -25028,7 +25074,7 @@ single global task lock. Appropriate for use in situations where contention between tasks is very rarely expected. @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d2} +@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d4} @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads}) @@ -25043,7 +25089,7 @@ represents the current date and time in ISO 8601 format. This is a very simple routine with minimal code and there are no dependencies on any other unit. @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d4} +@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d6} @section @code{GNAT.Threads} (@code{g-thread.ads}) @@ -25060,7 +25106,7 @@ further details if your program has threads that are created by a non-Ada environment which then accesses Ada code. @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d6} +@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d8} @section @code{GNAT.Traceback} (@code{g-traceb.ads}) @@ -25072,7 +25118,7 @@ Provides a facility for obtaining non-symbolic traceback information, useful in various debugging situations. @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id122}@anchor{3d8} +@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id122}@anchor{3da} @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads}) @@ -25081,7 +25127,7 @@ in various debugging situations. @geindex Trace back facilities @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id123}@anchor{3da} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id123}@anchor{3dc} @section @code{GNAT.UTF_32} (@code{g-utf_32.ads}) @@ -25100,7 +25146,7 @@ lower case to upper case fold routine corresponding to the Ada 2005 rules for identifier equivalence. @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id124}@anchor{3dc} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id124}@anchor{3de} @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads}) @@ -25113,7 +25159,7 @@ near misspelling of another wide wide string, where the strings are represented using the UTF_32_String type defined in System.Wch_Cnv. @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id125}@anchor{3de} +@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id125}@anchor{3e0} @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads}) @@ -25125,7 +25171,7 @@ Provides a function for determining whether one wide string is a plausible near misspelling of another wide string. @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e0} +@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e2} @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads}) @@ -25139,7 +25185,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e2} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e4} @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads}) @@ -25151,7 +25197,7 @@ Provides a function for determining whether one wide wide string is a plausible near misspelling of another wide wide string. @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e4} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e5}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e6} @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads}) @@ -25165,7 +25211,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id129}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e6} +@anchor{gnat_rm/the_gnat_library id129}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e8} @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads}) @@ -25176,7 +25222,7 @@ for use with either manually or automatically generated bindings to C libraries. @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id130}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e8} +@anchor{gnat_rm/the_gnat_library id130}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3ea} @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads}) @@ -25189,7 +25235,7 @@ This package is a binding for the most commonly used operations on C streams. @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id131}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3ea} +@anchor{gnat_rm/the_gnat_library id131}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3ec} @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads}) @@ -25204,7 +25250,7 @@ from a packed decimal format compatible with that used on IBM mainframes. @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id132}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ec} +@anchor{gnat_rm/the_gnat_library id132}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ee} @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads}) @@ -25218,7 +25264,7 @@ mainframes. This package provides a limited binding to the VxWorks API. @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id133}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ee} +@anchor{gnat_rm/the_gnat_library id133}@anchor{3ef}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3f0} @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads}) @@ -25241,7 +25287,7 @@ function codes. A particular use of this package is to enable the use of Get_Immediate under VxWorks. @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id134}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f0} +@anchor{gnat_rm/the_gnat_library id134}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f2} @section @code{System.Address_Image} (@code{s-addima.ads}) @@ -25257,7 +25303,7 @@ function that gives an (implementation dependent) string which identifies an address. @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id135}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f2} +@anchor{gnat_rm/the_gnat_library id135}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f4} @section @code{System.Assertions} (@code{s-assert.ads}) @@ -25273,7 +25319,7 @@ by an run-time assertion failure, as well as the routine that is used internally to raise this assertion. @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id136}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f4} +@anchor{gnat_rm/the_gnat_library id136}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f6} @section @code{System.Atomic_Counters} (@code{s-atocou.ads}) @@ -25287,7 +25333,7 @@ on most targets, including all Alpha, AARCH64, ARM, ia64, PowerPC, SPARC V9, x86, and x86_64 platforms. @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id137}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f6} +@anchor{gnat_rm/the_gnat_library id137}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f8} @section @code{System.Memory} (@code{s-memory.ads}) @@ -25305,7 +25351,7 @@ calls to this unit may be made for low level allocation uses (for example see the body of @code{GNAT.Tables}). @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id138}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f8} +@anchor{gnat_rm/the_gnat_library id138}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3fa} @section @code{System.Multiprocessors} (@code{s-multip.ads}) @@ -25318,7 +25364,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id139}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fa} +@anchor{gnat_rm/the_gnat_library id139}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fc} @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads}) @@ -25331,7 +25377,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id140}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fc} +@anchor{gnat_rm/the_gnat_library id140}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fe} @section @code{System.Partition_Interface} (@code{s-parint.ads}) @@ -25344,7 +25390,7 @@ is used primarily in a distribution context when using Annex E with @code{GLADE}. @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id141}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fe} +@anchor{gnat_rm/the_gnat_library id141}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{400} @section @code{System.Pool_Global} (@code{s-pooglo.ads}) @@ -25361,7 +25407,7 @@ declared. It uses malloc/free to allocate/free and does not attempt to do any automatic reclamation. @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id142}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{400} +@anchor{gnat_rm/the_gnat_library id142}@anchor{401}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{402} @section @code{System.Pool_Local} (@code{s-pooloc.ads}) @@ -25378,7 +25424,7 @@ a list of allocated blocks, so that all storage allocated for the pool can be freed automatically when the pool is finalized. @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id143}@anchor{401}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{402} +@anchor{gnat_rm/the_gnat_library id143}@anchor{403}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{404} @section @code{System.Restrictions} (@code{s-restri.ads}) @@ -25394,7 +25440,7 @@ compiler determined information on which restrictions are violated by one or more packages in the partition. @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id144}@anchor{403}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{404} +@anchor{gnat_rm/the_gnat_library id144}@anchor{405}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{406} @section @code{System.Rident} (@code{s-rident.ads}) @@ -25410,7 +25456,7 @@ since the necessary instantiation is included in package System.Restrictions. @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id145}@anchor{405}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{406} +@anchor{gnat_rm/the_gnat_library id145}@anchor{407}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{408} @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads}) @@ -25426,7 +25472,7 @@ stream attributes are applied to string types, but the subprograms in this package can be used directly by application programs. @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id146}@anchor{407}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{408} +@anchor{gnat_rm/the_gnat_library id146}@anchor{409}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{40a} @section @code{System.Unsigned_Types} (@code{s-unstyp.ads}) @@ -25439,7 +25485,7 @@ also contains some related definitions for other specialized types used by the compiler in connection with packed array types. @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id147}@anchor{409}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40a} +@anchor{gnat_rm/the_gnat_library id147}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40c} @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads}) @@ -25460,7 +25506,7 @@ encoding method. It uses definitions in package @code{System.Wch_Con}. @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id148}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40c} +@anchor{gnat_rm/the_gnat_library id148}@anchor{40d}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40e} @section @code{System.Wch_Con} (@code{s-wchcon.ads}) @@ -25472,7 +25518,7 @@ in ordinary strings. These definitions are used by the package @code{System.Wch_Cnv}. @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top -@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} +@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} @chapter Interfacing to Other Languages @@ -25490,7 +25536,7 @@ provided. @end menu @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{410} +@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{411}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{412} @section Interfacing to C @@ -25630,7 +25676,7 @@ of the length corresponding to the @code{type'Size} value in Ada. @end itemize @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{411} +@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{413} @section Interfacing to C++ @@ -25687,7 +25733,7 @@ The @code{External_Name} is the name of the C++ RTTI symbol. You can then cover a specific C++ exception in an exception handler. @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{413} +@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{415} @section Interfacing to COBOL @@ -25695,7 +25741,7 @@ Interfacing to COBOL is achieved as described in section B.4 of the Ada Reference Manual. @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{415} +@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{417} @section Interfacing to Fortran @@ -25705,7 +25751,7 @@ multi-dimensional array causes the array to be stored in column-major order as required for convenient interface to Fortran. @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{417} +@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{418}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{419} @section Interfacing to non-GNAT Ada code @@ -25729,7 +25775,7 @@ values or simple record types without variants, or simple array types with fixed bounds. @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top -@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{418}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} +@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{41a}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{41b}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} @chapter Specialized Needs Annexes @@ -25770,7 +25816,7 @@ in Ada 2005) is fully implemented. @end table @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top -@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} +@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} @chapter Implementation of Specific Ada Features @@ -25789,7 +25835,7 @@ facilities. @end menu @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{175} +@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{177} @section Machine Code Insertions @@ -25957,7 +26003,7 @@ according to normal visibility rules. In particular if there is no qualification is required. @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41e} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{420} @section GNAT Implementation of Tasking @@ -25973,7 +26019,7 @@ to compliance with the Real-Time Systems Annex. @end menu @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{420} +@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{422} @subsection Mapping Ada Tasks onto the Underlying Kernel Threads @@ -26042,7 +26088,7 @@ support this functionality when the parent contains more than one task. @geindex Forking a new process @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{422} +@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{423}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{424} @subsection Ensuring Compliance with the Real-Time Annex @@ -26093,7 +26139,7 @@ placed at the end. @c Support_for_Locking_Policies @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{423} +@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{425} @subsection Support for Locking Policies @@ -26127,7 +26173,7 @@ then ceiling locking is used. Otherwise, the @code{Ceiling_Locking} policy is ignored. @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{425} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{427} @section GNAT Implementation of Shared Passive Packages @@ -26225,7 +26271,7 @@ This is used to provide the required locking semantics for proper protected object synchronization. @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{427} +@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{429} @section Code Generation for Array Aggregates @@ -26256,7 +26302,7 @@ component values and static subtypes also lead to simpler code. @end menu @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{429} +@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{42b} @subsection Static constant aggregates with static bounds @@ -26303,7 +26349,7 @@ Zero2: constant two_dim := (others => (others => 0)); @end example @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42b} +@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42d} @subsection Constant aggregates with unconstrained nominal types @@ -26318,7 +26364,7 @@ Cr_Unc : constant One_Unc := (12,24,36); @end example @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42d} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42f} @subsection Aggregates with static bounds @@ -26346,7 +26392,7 @@ end loop; @end example @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42f} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{431} @subsection Aggregates with nonstatic bounds @@ -26357,7 +26403,7 @@ have to be applied to sub-arrays individually, if they do not have statically compatible subtypes. @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{431} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{433} @subsection Aggregates in assignment statements @@ -26399,7 +26445,7 @@ a temporary (created either by the front-end or the code generator) and then that temporary will be copied onto the target. @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{433} +@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{435} @section The Size of Discriminated Records with Default Discriminants @@ -26479,7 +26525,7 @@ say) must be consistent, so it is imperative that the object, once created, remain invariant. @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{435} +@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{437} @section Image Values For Nonscalar Types @@ -26499,7 +26545,7 @@ control of image text is required for some type T, then T’Put_Image should be explicitly specified. @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{437} +@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{439} @section Strict Conformance to the Ada Reference Manual @@ -26526,7 +26572,7 @@ behavior (although at the cost of a significant performance penalty), so infinite and NaN values are properly generated. @node Implementation of Ada 2012 Features,GNAT language extensions,Implementation of Specific Ada Features,Top -@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{438}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} +@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{43a}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{43b}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} @chapter Implementation of Ada 2012 Features @@ -28692,7 +28738,7 @@ RM References: 4.03.01 (17) @end itemize @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2012 Features,Top -@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43a}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43b}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43c} +@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43c}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43d}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43e} @chapter GNAT language extensions @@ -28723,7 +28769,7 @@ prototyping phase. @end menu @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{43d} +@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{43f} @section How to activate the extended GNAT Ada superset @@ -28762,7 +28808,7 @@ for serious projects, and is only means as a playground/technology preview. @end cartouche @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{43e}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} +@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{440}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} @section Curated Extensions @@ -28779,7 +28825,7 @@ for serious projects, and is only means as a playground/technology preview. @end menu @node Local Declarations Without Block,Conditional when constructs,,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{43f} +@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{441} @subsection Local Declarations Without Block @@ -28802,7 +28848,7 @@ end if; @end example @node Conditional when constructs,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{440} +@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{442} @subsection Conditional when constructs @@ -28874,7 +28920,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-conditional-when-constructs.rst} @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Conditional when constructs,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{441} +@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{443} @subsection Fixed lower bounds for array types and subtypes @@ -28928,7 +28974,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-fixed-lower-bound.rst} @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{442} +@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{444} @subsection Prefixed-view notation for calls to primitive subprograms of untagged types @@ -28981,7 +29027,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-prefixed-untagged.rst} @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{443} +@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{445} @subsection Expression defaults for generic formal functions @@ -29010,7 +29056,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-expression-functions-as-default-for-generic-formal-function-parameters.rst} @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{444} +@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{446} @subsection String interpolation @@ -29176,7 +29222,7 @@ Here is a link to the original RFC : @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-string-interpolation.rst} @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{445} +@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{447} @subsection Constrained attribute for generic objects @@ -29184,7 +29230,7 @@ The @code{Constrained} attribute is permitted for objects of generic types. The result indicates whether the corresponding actual is constrained. @node Static aspect on intrinsic functions,,Constrained attribute for generic objects,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{446} +@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{448} @subsection @code{Static} aspect on intrinsic functions @@ -29193,7 +29239,7 @@ and the compiler will evaluate some of these intrinsics statically, in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{447} +@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{449} @section Experimental Language Extensions @@ -29207,7 +29253,7 @@ particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @end menu @node Storage Model,Attribute Super,,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{448} +@anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{44a} @subsection Storage Model @@ -29222,7 +29268,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-storage-model.rst} @node Attribute Super,Simpler accessibility model,Storage Model,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{449} +@anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{44b} @subsection Attribute Super @@ -29252,7 +29298,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/QuentinOchem/ada-spark-rfcs/blob/oop/considered/rfc-oop-super.rst} @node Simpler accessibility model,Case pattern matching,Attribute Super,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{44a} +@anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{44c} @subsection Simpler accessibility model @@ -29265,7 +29311,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-simpler-accessibility.md} @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler accessibility model,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{44b} +@anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{44d} @subsection Case pattern matching @@ -29397,7 +29443,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-pattern-matching.rst} @node Mutably Tagged Types with Size’Class Aspect,,Case pattern matching,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{44c} +@anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{44e} @subsection Mutably Tagged Types with Size’Class Aspect @@ -29437,7 +29483,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/topic/rfc-finally/considered/rfc-class-size.md} @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top -@anchor{gnat_rm/security_hardening_features doc}@anchor{44d}@anchor{gnat_rm/security_hardening_features id1}@anchor{44e}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} +@anchor{gnat_rm/security_hardening_features doc}@anchor{44f}@anchor{gnat_rm/security_hardening_features id1}@anchor{450}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} @chapter Security Hardening Features @@ -29459,7 +29505,7 @@ change. @end menu @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features -@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{44f} +@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{451} @section Register Scrubbing @@ -29495,7 +29541,7 @@ programming languages, see @cite{Using the GNU Compiler Collection (GCC)}. @c Stack Scrubbing: @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{450} +@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{452} @section Stack Scrubbing @@ -29639,7 +29685,7 @@ Bar_Callable_Ptr. @c Hardened Conditionals: @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{451} +@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{453} @section Hardened Conditionals @@ -29729,7 +29775,7 @@ be used with other programming languages supported by GCC. @c Hardened Booleans: @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features -@anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{452} +@anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{454} @section Hardened Booleans @@ -29790,7 +29836,7 @@ and more details on that attribute, see @cite{Using the GNU Compiler Collection @c Control Flow Redundancy: @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features -@anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{453} +@anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{455} @section Control Flow Redundancy @@ -29958,7 +30004,7 @@ see @cite{Using the GNU Compiler Collection (GCC)}. These options can be used with other programming languages supported by GCC. @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top -@anchor{gnat_rm/obsolescent_features doc}@anchor{454}@anchor{gnat_rm/obsolescent_features id1}@anchor{455}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} +@anchor{gnat_rm/obsolescent_features doc}@anchor{456}@anchor{gnat_rm/obsolescent_features id1}@anchor{457}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} @chapter Obsolescent Features @@ -29977,7 +30023,7 @@ compatibility purposes. @end menu @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id2}@anchor{456}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{457} +@anchor{gnat_rm/obsolescent_features id2}@anchor{458}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{459} @section pragma No_Run_Time @@ -29990,7 +30036,7 @@ preferred usage is to use an appropriately configured run-time that includes just those features that are to be made accessible. @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id3}@anchor{458}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{459} +@anchor{gnat_rm/obsolescent_features id3}@anchor{45a}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{45b} @section pragma Ravenscar @@ -29999,7 +30045,7 @@ The pragma @code{Ravenscar} has exactly the same effect as pragma is part of the new Ada 2005 standard. @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id4}@anchor{45a}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{45b} +@anchor{gnat_rm/obsolescent_features id4}@anchor{45c}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{45d} @section pragma Restricted_Run_Time @@ -30009,7 +30055,7 @@ preferred since the Ada 2005 pragma @code{Profile} is intended for this kind of implementation dependent addition. @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id5}@anchor{45c}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{45d} +@anchor{gnat_rm/obsolescent_features id5}@anchor{45e}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{45f} @section pragma Task_Info @@ -30035,7 +30081,7 @@ in the spec of package System.Task_Info in the runtime library. @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features -@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{45e}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{45f} +@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{460}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{461} @section package System.Task_Info (@code{s-tasinf.ads}) @@ -30045,7 +30091,7 @@ to support the @code{Task_Info} pragma. The predefined Ada package standard replacement for GNAT’s @code{Task_Info} functionality. @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top -@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{460}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{461} +@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{462}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{463} @chapter Compatibility and Porting Guide @@ -30067,7 +30113,7 @@ applications developed in other Ada environments. @end menu @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{462}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{463} +@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{464}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{465} @section Writing Portable Fixed-Point Declarations @@ -30189,7 +30235,7 @@ If you follow this scheme you will be guaranteed that your fixed-point types will be portable. @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{464}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{465} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{466}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{467} @section Compatibility with Ada 83 @@ -30217,7 +30263,7 @@ following subsections treat the most likely issues to be encountered. @end menu @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{466}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{467} +@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{468}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{469} @subsection Legal Ada 83 programs that are illegal in Ada 95 @@ -30317,7 +30363,7 @@ the fix is usually simply to add the @code{(<>)} to the generic declaration. @end itemize @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{468}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{469} +@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{46a}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{46b} @subsection More deterministic semantics @@ -30345,7 +30391,7 @@ which open select branches are executed. @end itemize @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{46a}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{46b} +@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{46c}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{46d} @subsection Changed semantics @@ -30387,7 +30433,7 @@ covers only the restricted range. @end itemize @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{46c}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{46d} +@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{46e}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{46f} @subsection Other language compatibility issues @@ -30420,7 +30466,7 @@ include @code{pragma Interface} and the floating point type attributes @end itemize @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{46e}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{46f} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{470}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{471} @section Compatibility between Ada 95 and Ada 2005 @@ -30492,7 +30538,7 @@ can declare a function returning a value from an anonymous access type. @end itemize @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{470}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{471} +@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{472}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{473} @section Implementation-dependent characteristics @@ -30515,7 +30561,7 @@ transition from certain Ada 83 compilers. @end menu @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{472}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{473} +@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{474}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{475} @subsection Implementation-defined pragmas @@ -30537,7 +30583,7 @@ avoiding compiler rejection of units that contain such pragmas; they are not relevant in a GNAT context and hence are not otherwise implemented. @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{474}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{475} +@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{476}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{477} @subsection Implementation-defined attributes @@ -30551,7 +30597,7 @@ Ada 83, GNAT supplies the attributes @code{Bit}, @code{Machine_Size} and @code{Type_Class}. @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{476}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{477} +@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{478}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{479} @subsection Libraries @@ -30580,7 +30626,7 @@ be preferable to retrofit the application using modular types. @end itemize @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{478}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{479} +@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{47a}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{47b} @subsection Elaboration order @@ -30616,7 +30662,7 @@ pragmas either globally (as an effect of the `-gnatE' switch) or locally @end itemize @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{47a}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{47b} +@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{47c}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{47d} @subsection Target-specific aspects @@ -30629,10 +30675,10 @@ on the robustness of the original design. Moreover, Ada 95 (and thus Ada 2005 and Ada 2012) are sometimes incompatible with typical Ada 83 compiler practices regarding implicit packing, the meaning of the Size attribute, and the size of access values. -GNAT’s approach to these issues is described in @ref{47c,,Representation Clauses}. +GNAT’s approach to these issues is described in @ref{47e,,Representation Clauses}. @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{47d}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{47e} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{47f}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{480} @section Compatibility with Other Ada Systems @@ -30675,7 +30721,7 @@ far beyond this minimal set, as described in the next section. @end itemize @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{47f}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{47c} +@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{481}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{47e} @section Representation Clauses @@ -30768,7 +30814,7 @@ with thin pointers. @end itemize @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{480}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{481} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{482}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{483} @section Compatibility with HP Ada 83 @@ -30798,7 +30844,7 @@ extension of package System. @end itemize @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top -@anchor{share/gnu_free_documentation_license doc}@anchor{482}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{483} +@anchor{share/gnu_free_documentation_license doc}@anchor{484}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{485} @chapter GNU Free Documentation License diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index db06a771ddd..bba4f25aa13 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -29666,8 +29666,8 @@ to permit their use in free software. @printindex ge -@anchor{d1}@w{ } @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } +@anchor{d1}@w{ } @c %**end of body @bye From patchwork Thu Jun 20 08:53:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1950013 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=iLt2UWdc; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZYR0wMzz20X8 for ; Thu, 20 Jun 2024 19:14:03 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 49C42389244B for ; Thu, 20 Jun 2024 09:14:01 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 901AF388A024 for ; Thu, 20 Jun 2024 08:53:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 901AF388A024 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 901AF388A024 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::432 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; cv=none; b=SCII3bv7s2rrfkpCs0aU0ka3493r5kZfL4ovsHOs7iPFK9ek18MXW5yWkodZUvu1VSbBfVetJfcOHIUs6M5smpI8R4zXbDtn82ubE7lEedC8QUNC3CTKL6r/7a47mdMCkx6pApyFFpI+CJxKhu98omkgTK4NzpBV8lkYSmV4nsM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; c=relaxed/simple; bh=I3uabvRV18Hk/nFYsRLvqDMsewaqfRaeTMg9gg2Di0o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=YibHdwgkx5wzANoHAEoPcLAC9fCQsY3r7VV85XqD2lxRVrSCv68JJCDcG3GoOLeOKPoqdHXOmIbaXAlsy7pKqnIrbZbni+s+sgy8PaVkbIKoycV7NkHgm5ednHE7h3bRMoa5ZRO7qDWzqInkA0ks6Dec8T8ITTmlHeKQGDGAMFY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-364c9ec17d1so234668f8f.0 for ; Thu, 20 Jun 2024 01:53:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873626; x=1719478426; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uTtucMtlnyjqiU/Lk6OsC3qseWLQROJH3h09k+umtvc=; b=iLt2UWdcmAIhOih/qni5q7Vmcsrm5em0rRCEHtG0GLWqPKJQ47zv4j03LBNH7dvevw nwxEyykgh4xg2yH0Li3GqzOYXN4ec0Y5nTZRKWx7ST8pa/ao9J03UGUKLyIzFn/jhR7d p+ueTmyn6Ww9a7FkQlAkU7RmbjF0vxI4hf3l4lqGyntJ+8v0nEFdEq/JztGfps7gmeqJ 9zkifMraST8DsR4PzZjbu8yGUgaLcf4zi9w0yVS27dEe4XqF7SWKsnJ5ewHQJll3UcGj G5cV9unUSI9U8V/p4vK1t2wmnhws8ehJr0DlaAV9Kie49pE5xlJt639ph0TQWpwlRR96 l7vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873626; x=1719478426; 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=uTtucMtlnyjqiU/Lk6OsC3qseWLQROJH3h09k+umtvc=; b=cDbkm+2vXM8RDBgF4MXjQsNpLR7Wzz9rPO94CrvnB+NT5e7pecc8VdUHppKEJI/1RB O0xZ+yh0ydQO/W1bD3cwobkomK6KhY3vs4eTu9LHOHx5O1vc4HO0ICqP9AnyEc1FgSqd NLwgIiopKHQ/BJ930rhSwAnent73gBU3xdkgTLqHu5ApQrJrsHnMCqnMQJniURyDIRwJ +ygCb7fxJlwpWNDBAk4GivcHwjh+bMkvx1DiMQu2pDqrh81smAVgF9ZD4KxPtEp3th7t jhTnQT7sp/Fu2VqDQIYMzU52+jyaF32cGLk8Gb+2S2Q80tyroU6qFudDh/nkWe87UQJt VLwQ== X-Gm-Message-State: AOJu0YyfX2SHlzmKydSFdklz1ok2ZKbCkTGCttNNReKjr8SQA7O9xexN 8jZAQSFnwijhb2Ag5l9O8ej57Y6Yrs57E0Fwo7j1m9exZfnBlcn1yxr7zcU99gcDpuJ1au5GHnQ = X-Google-Smtp-Source: AGHT+IFiUcLL3tK7lzOv49umTgNMymWD2Bv5wI7Wq4piabN5Vu4fmYMuJG/i3jZLcIarfA7vOWJfIQ== X-Received: by 2002:a5d:58e6:0:b0:362:6908:e2dc with SMTP id ffacd0b85a97d-36317c7a095mr3696989f8f.33.1718873626331; Thu, 20 Jun 2024 01:53:46 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:45 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 18/30] ada: Update Bit Ordering references in GNAT Reference Manual Date: Thu, 20 Jun 2024 10:53:08 +0200 Message-ID: <20240620085321.2412421-18-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou They are still tailored to Ada 95 while the level of recommended support for Bit Ordering was changed in Ada 2005. gcc/ada/ * doc/gnat_rm/implementation_advice.rst (Representation Clauses): Remove >> marker and add end of sentence after code-block directive. (RM 13.5.3(7-8)): Update to Ada 2005 wording. * doc/gnat_rm/implementation_defined_characteristics.rst (RM 13.5.3(5)): Likewise. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/doc/gnat_rm/implementation_advice.rst | 15 +++++---- ...implementation_defined_characteristics.rst | 4 +-- gcc/ada/gnat_rm.texi | 31 +++++++++---------- gcc/ada/gnat_ugn.texi | 2 +- 4 files changed, 24 insertions(+), 28 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/implementation_advice.rst b/gcc/ada/doc/gnat_rm/implementation_advice.rst index f2f34db6835..435cfa412ce 100644 --- a/gcc/ada/doc/gnat_rm/implementation_advice.rst +++ b/gcc/ada/doc/gnat_rm/implementation_advice.rst @@ -302,14 +302,15 @@ RM 13.1 (21-24): Representation Clauses Followed. In fact, GNAT goes beyond the recommended level of support by allowing nonstatic expressions in some representation clauses even without the need to declare constants initialized with the values of -such expressions. -For example: +such expressions. For example: .. code-block:: ada X : Integer; Y : Float; - for Y'Address use X'Address;>> + for Y'Address use X'Address; + +is accepted directly by GNAT. "An implementation need not support a specification for the ``Size`` @@ -585,12 +586,10 @@ RM 13.5.3(7-8): Bit Ordering "The recommended level of support for the non-default bit ordering is: - If ``Word_Size`` = ``Storage_Unit``, then the implementation - should support the non-default bit ordering in addition to the default - bit ordering." + The implementation should support the nondefault bit ordering in addition + to the default bit ordering." -Followed. Word size does not equal storage size in this implementation. -Thus non-default bit ordering is not supported. +Followed. .. index:: Address, as private type diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst index 0d3f340f1c7..54bcd0c1732 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst @@ -554,9 +554,7 @@ which contains a pointer to the dispatching table. "If ``Word_Size`` = ``Storage_Unit``, the default bit ordering. See 13.5.3(5)." -``Word_Size`` (32) is not the same as ``Storage_Unit`` (8) for this -implementation, so no non-default bit ordering is supported. The default -bit ordering corresponds to the natural endianness of the target architecture. +``Word_Size`` does not equal ``Storage_Unit`` in this implementation. * "The contents of the visible part of package ``System``. See 13.7(2)." diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 0c15ad511fa..553e4174d47 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -14363,21 +14363,24 @@ declared before the entity.” Followed. In fact, GNAT goes beyond the recommended level of support by allowing nonstatic expressions in some representation clauses even without the need to declare constants initialized with the values of -such expressions. -For example: +such expressions. For example: @example - X : Integer; - Y : Float; - for Y'Address use X'Address;>> +X : Integer; +Y : Float; +for Y'Address use X'Address; +@end example + +is accepted directly by GNAT. +@quotation -"An implementation need not support a specification for the `@w{`}Size`@w{`} +“An implementation need not support a specification for the @code{Size} for a given composite subtype, nor the size or storage place for an object (including a component) of a given composite subtype, unless the constraints on the subtype and its composite subcomponents (if any) are -all static constraints." -@end example +all static constraints.” +@end quotation Followed. Size Clauses are not permitted on nonstatic components, as described above. @@ -14747,13 +14750,11 @@ Followed. There are no such components in GNAT. “The recommended level of support for the non-default bit ordering is: -If @code{Word_Size} = @code{Storage_Unit}, then the implementation -should support the non-default bit ordering in addition to the default -bit ordering.” +The implementation should support the nondefault bit ordering in addition +to the default bit ordering.” @end quotation -Followed. Word size does not equal storage size in this implementation. -Thus non-default bit ordering is not supported. +Followed. @geindex Address @geindex as private type @@ -16787,9 +16788,7 @@ which contains a pointer to the dispatching table. ordering. See 13.5.3(5).” @end itemize -@code{Word_Size} (32) is not the same as @code{Storage_Unit} (8) for this -implementation, so no non-default bit ordering is supported. The default -bit ordering corresponds to the natural endianness of the target architecture. +@code{Word_Size} does not equal @code{Storage_Unit} in this implementation. @itemize * diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index bba4f25aa13..db06a771ddd 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -29666,8 +29666,8 @@ to permit their use in free software. @printindex ge -@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @anchor{d1}@w{ } +@anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } @c %**end of body @bye From patchwork Thu Jun 20 08:53:09 2024 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: 1950023 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=R1j89GE+; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZhR55jWz20X8 for ; Thu, 20 Jun 2024 19:20:07 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E78BF3891C31 for ; Thu, 20 Jun 2024 09:20:05 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 52DAE388A02D for ; Thu, 20 Jun 2024 08:53:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 52DAE388A02D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 52DAE388A02D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::32c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; cv=none; b=Ehp90mBWr0xGyI+0ReXga+BppA1vZuS8Zibv1xKEgcSGgV/j8P4lUY8hhklJlkG3kEfLhUEQAnxmxBuio7ByRsylmGlS9Ht6fkirFS+lj5f7bsJp1PhkBRO6x84yJ/wYKJ/0dJhpb5NW8QdoTwWzZQ/IbXciPuwj9KDFka+c+FI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; c=relaxed/simple; bh=jYvlo2UOd1qXAG4I2p6G/wwCgUy1qZOz2U+h4B9FNmU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=AhKonZn4za728yNsOZnWwl3xbraJQ96JTpKO8yYCOPXdruj5RVbwjBqpTLXyUU61gKNgnIoYniQf92HKsCTFGmx+aq0yqzlN4el880/mrs4m2lOvYL6QhvM/h9bnISIf6ylIcYJHC2JvXDHnoaeP9+jJUZt0/bBF6hQzcD+bLvI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-42108856c33so10780715e9.1 for ; Thu, 20 Jun 2024 01:53:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873627; x=1719478427; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2MG6h0mON2B87AaPVY+evf66YtVbKOpsRXrb5ozgbX8=; b=R1j89GE+Ehgpg92jv+7Eg/l+Sko8jJG31TteaqESkiG2HSOQ1oR3E4c62mPVQoRPRC 72af0nOBuOGMN3jjowUSv34usFUMqHYdsTK89djjbOtqYcek4kLrLsFFNlikksEZBes+ NvLbwIQn0ZsKxayFiZiWEptrRcKYYWMpEB3hBJcWezmtiuu6Koid9x6cRmatpm/OC6If NXmdeCn9FXltS01RM1z8EDqCLoGMOL9KiVymr3bC9lyT0DK4bi4qQQIi40esLntJA8hl 554UXxLKhn0xyB4OlXhzL4psEVE6ZUbAx6QvYpdXO7NuxDyWV3zVVbH8F/brlLuPBDeM BNCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873627; x=1719478427; 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=2MG6h0mON2B87AaPVY+evf66YtVbKOpsRXrb5ozgbX8=; b=tJ4KffMW6CmpMiMFjmZryarxarfXR5HlYU5JNrVRzr2Fd8LXPC99FGXNYSWAOSnziO keBCTf9BzJx7g1JhxX3JKazcmScF3ie9okoxbyJxUQ/k72Cw/ob5vtIaHs6GlPbmHfsh 3IHd/Le8bDZzHV1uysJ0NReozF/DW1Omeyyu/iawH2ohWayBwhYLgvIs64VIICqgKA11 jXJ3fb5unfF9t191nZM6pZ0TnGVF+5tIgpW+7M3CdKTUK1eHfKyYzRg0NCPYYBUvCSVa nvhW4eLsTjVja04gAQ7aFxBAldtcZmVrkiDDtq+RBBYPEz7AVdXKRfsP5ktg8bqgxt0L s9UQ== X-Gm-Message-State: AOJu0Yz6s97Iy0a5LPJbnPlk1FH662AG/vvv8MGHQbZD/Eb5LBKtF3Ei 6T84ODTlCLu6iT/GyxrnbhQ792E9oBiPZ0fPOGy8j4FYCg+DJrOAskc8gwEHMbRDP9tqf2W9OY4 = X-Google-Smtp-Source: AGHT+IGwTNAnkN6a4HB7mrGSLwTU3BJvtXYzLgxfEl7es7vsC+xKXcwJ4A7Ov7oyVXRAeq0ua4G1Jw== X-Received: by 2002:a5d:5242:0:b0:360:9500:9bbb with SMTP id ffacd0b85a97d-362ff57d2c7mr4234552f8f.12.1718873627081; Thu, 20 Jun 2024 01:53:47 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:46 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 19/30] ada: Enforce strict alignment for array types with aliased component Date: Thu, 20 Jun 2024 10:53:09 +0200 Message-ID: <20240620085321.2412421-19-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou This was initially implemented as part of AI12-001 but immediately disabled because it breaks Florist on 32-bit platforms. However, it is possible to reenable it in almost all cases without affecting Florist, and the -gnatd_l switch can now be used to disable it again. gcc/ada/ * debug.adb (d_l): Document new usage for the compiler. * freeze.adb (Check_Strict_Alignment): Set the Strict_Alignment flag on array types with aliased component, except if the component size is equal to the storage unit or the -gnatd_l switch is specified. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/debug.adb | 5 ++++- gcc/ada/freeze.adb | 30 ++++++++++++++++++------------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 97f88b7664f..f7fcd399769 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -148,7 +148,7 @@ package body Debug is -- d_i Ignore activations and calls to instances for elaboration -- d_j Read JSON files and populate Repinfo tables (opposite of -gnatRjs) -- d_k In CodePeer mode disable expansion of assertion checks - -- d_l + -- d_l Disable strict alignment of array types with aliased component -- d_m -- d_n -- d_o @@ -989,6 +989,9 @@ package body Debug is -- enabled, expansion of assertion expressions is controlled by -- pragma Assertion_Policy. + -- d_l The compiler does not enforce the strict alignment of array types + -- that are declared with an aliased component. + -- d_p The compiler ignores calls to subprograms which verify the run-time -- semantics of invariants and postconditions in both the static and -- dynamic elaboration models. diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index d0dd1de087d..3c3d038c392 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -2374,18 +2374,24 @@ package body Freeze is elsif Is_Array_Type (E) then Set_Strict_Alignment (E, Strict_Alignment (Component_Type (E))); - -- ??? AI12-001: Any component of a packed type that contains an - -- aliased part must be aligned according to the alignment of its - -- subtype (RM 13.2(7)). This means that the following test: - - -- if Has_Aliased_Components (E) then - -- Set_Strict_Alignment (E); - -- end if; - - -- should be implemented here. Unfortunately it would break Florist, - -- which has the bad habit of overaligning all the types it declares - -- on 32-bit platforms. Other legacy codebases could also be affected - -- because this check has historically been missing in GNAT. + -- RM 13.2(7.1/4): Any component of a packed type that contains an + -- aliased part shall be aligned according to the alignment of its + -- subtype. + + -- Unfortunately this breaks Florist, which has had the bad habit + -- of overaligning all the types it declares on 32-bit platforms, + -- so make an exception if the component size is the storage unit. + + -- Other legacy codebases could also be affected because this was + -- historically not enforced, so -gnatd_l can be used to disable it. + + if Has_Aliased_Components (E) + and then not (Known_Component_Size (E) + and then Component_Size (E) = System_Storage_Unit) + and then not Debug_Flag_Underscore_L + then + Set_Strict_Alignment (E); + end if; elsif Is_Record_Type (E) then Comp := First_Component (E); From patchwork Thu Jun 20 08:53:10 2024 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: 1950014 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=JShVEDXZ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZYm50Lbz20X8 for ; Thu, 20 Jun 2024 19:14:20 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 044E7389244A for ; Thu, 20 Jun 2024 09:14:19 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by sourceware.org (Postfix) with ESMTPS id A9B5F388A40D for ; Thu, 20 Jun 2024 08:53:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A9B5F388A40D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A9B5F388A40D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::135 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; cv=none; b=LR4Dtx2WzkqOhpNpYSvlktRDCDFS5tdHwS7iZwLMHGFD5XcNSIjD4/E7H048AdkmxAQuVbAJB4QkPeGR0FR8wFbdehm2gFhgPbvQfHPZOFZRyyM+rtb2Si5Vjve5afqT54knCDxzHV5BZtf8KD0qrkThj7byRpdW7JC1v+PCv+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; c=relaxed/simple; bh=wq0XDazx0inZwEwGdRQnUjm0GTMkOTdqBuMVpaCaMfs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=qGLPhYSwLB0LUhUrn2ClA0G0wHFbPDQrWNhm6tjY8gXSvHtuwu1LLJ7LrBjfyW1EEvI7n+fBTc9EP561lf7BSWL17O8fk/+g2N99ipAPM03eqwb/e8HAKTVZ6CVJ1q+EFfPKWoO8rW05cPOsKtSYvukmmL/wbq22ep3ZQOc9LWQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-52cc9b887f1so775251e87.3 for ; Thu, 20 Jun 2024 01:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873628; x=1719478428; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/3JpYcsiHaE8rBFMlAjqJ993iHUqwK4JxkXpAPViq8M=; b=JShVEDXZK/6WAoeLGbTV+LMr2M8oGkm0O9uWsS3HLEEJUWP5V8caq77zP8qjQUBtDt 9qRdm2nQT5yfK3twxhxOhRz6+JiUJMLdGsuWeAlutFC7C6DSiY8fnTg9NIVL1o+ENZmV gGtS3JHn84SEZH/LHxJjGd4ou5yY4/A8F2Ar0T+YIqCjY4nSmCR91+0IS+9wagZTkV9b a3Uxz9ZE/9fv8FCJEwYlHehCF8Obwy0wmKSuamc7YJrIq+rGXxMUWznxlRKzE2OudRsD Mo44aueAj6LmG6eqCcJaHcZTDNZdQP+DntfNuOuetjwBw84nc/In+Xv2vyshdYrHmK/k qT4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873628; x=1719478428; 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=/3JpYcsiHaE8rBFMlAjqJ993iHUqwK4JxkXpAPViq8M=; b=POsFvhbEyMm/T+U9a0Qz7B7ryvyaqlC47GLxdo3l+SuDXL0D3RUlMMRrV3hEhfOBWW VMWARveXcKtAFwJWeSF0qAU6y4BSKTe2b9FD/nJ7HwT5JgxwPJEGCGu3JtLbWhgvaR2h iM01Ly7v3HqlohLNEHfiPf6SEGK9nxAMzcZCkrciFT/yK6SGTQkN1CEc0BFOlrN3B93C z9rgEyKcmvdEuoKRxz+SLaZUjAkvsd2qP+FABmZ3QB03/D1YCtoaOwL2M2xvmUBYwKm4 Dfj6i141JTqH7p16ZbebcXOuyvbdVE9j26iBOM2ExU+sPlWYCZlTx0H71NTyB3eSaU1y S80Q== X-Gm-Message-State: AOJu0YwKVFq5E1SDF3ap3F3kmrK0/8XcdgzO9CKrUuspWDVjk+BMRezz bXxZBe93TA68sUnPZgHqXzulRB0Hz+7ArcjHJj+bpOz7C/B0w9h/HwNviq0isnOXPLH/UCONGpU = X-Google-Smtp-Source: AGHT+IEAMXJNcg2SMN1ngGOE6Ooe7XnLeZL2Wk0zYrNefBznPje5aR4WrB9CGFw5/TjTGscCS7mzYQ== X-Received: by 2002:ac2:52b2:0:b0:52b:796e:66a5 with SMTP id 2adb3069b0e04-52ccaaa2607mr2514503e87.66.1718873627935; Thu, 20 Jun 2024 01:53:47 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:47 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 20/30] ada: Fix crash on real literal in declare expression of expression function Date: Thu, 20 Jun 2024 10:53:10 +0200 Message-ID: <20240620085321.2412421-20-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou The problem is that the freeze node of the type to which the real literal is resolved is placed inside the expression function instead of outside. gcc/ada/ * freeze.adb (Freeze_Expression): Also attach pending freeze nodes to the parent in the case of an internal block in a spec expression. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/freeze.adb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 3c3d038c392..1867880b314 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -8872,7 +8872,8 @@ package body Freeze is end if; -- The current scope may be that of a constrained component of - -- an enclosing record declaration, or of a loop of an enclosing + -- an enclosing record declaration, or a block of an enclosing + -- declare expression in Ada 2022, or of a loop of an enclosing -- quantified expression or aggregate with an iterated component -- in Ada 2022, which is above the current scope in the scope -- stack. Indeed in the context of a quantified expression or @@ -8884,7 +8885,7 @@ package body Freeze is if not Is_Compilation_Unit (Current_Scope) and then (Is_Record_Type (Scope (Current_Scope)) - or else (Ekind (Current_Scope) = E_Loop + or else (Ekind (Current_Scope) in E_Block | E_Loop and then Is_Internal (Current_Scope))) then Pos := Pos - 1; From patchwork Thu Jun 20 08:53:11 2024 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: 1950025 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=X0/6jQRU; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zjq6HHzz20KL for ; Thu, 20 Jun 2024 19:21:19 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id F2CDC3888C7C for ; Thu, 20 Jun 2024 09:21:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id DE769388A022 for ; Thu, 20 Jun 2024 08:53:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DE769388A022 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DE769388A022 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::430 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; cv=none; b=scumCdYtzd5NB1N02oZ4SPzJjDT9oxi/0/pqSie4hYupPIdvrSnXqrRFdB04w04nwVeASfcc6tmp98ZPuP2kxlrsYTKEmCYVWHCIbeK3fYkcmBNt5X53ss939WJbVBJQc2pgBkrqUY/bM4j+8dlYzA9ScqFxxFR2LFr6xP13Z2U= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873639; c=relaxed/simple; bh=krAJ1s6/nYtvYFPjdDz36toAKqiAapbLQBppVJ/9FIs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=fObq3MWnm4QY8p/48y0PMajOoVP0WsOA1Dsdy+Q8ORNL/gpBGa3loxfwLQ11BoiCbQ+XlQWrLjYHRdyHZ+I6MGz7Kng0GgAZsWg2i6W+KP7GKwah9VG87Six9W6fCDALWTJJaXzFp7lcoujCCO9NVCFuMiNBBhdeLBqj+fhtUxw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-364ff42999eso333421f8f.3 for ; Thu, 20 Jun 2024 01:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873629; x=1719478429; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EHYu/FUzekLHsMlvzI7sGgIwGN8qdhvjACSE4mWK8kE=; b=X0/6jQRUPYllUk5OMqL/E3ONsbVijv0bgUACzmkLs3Kc0sfQ7pqVXoWq5STxlAYVxf VrUZ14mbz6LwEtRrg1lCMTt+Tb5qFPHfMBvrbXe1Cwi1rxPJgp/5oDD/Q+F7X0Vek92d thTkxF5pcNsUTFjSX4h/r/kMZSEVJ3Z81BHj5QUu9jRN91K0TXBFOvKapjj3a9maWjyW AkDtbJVu3Jw1H7M9MjSxNnXjwEoA71G4DUfiviiyMurgYDW3Z1WqkfGszOKIHRzSApoq R8ydByfdG7y8i0ql/JwYeZcOfVx0pJMdFkGaFkvxvGiGkcFpfTvkgov81PABf6S47XMB R9pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873629; x=1719478429; 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=EHYu/FUzekLHsMlvzI7sGgIwGN8qdhvjACSE4mWK8kE=; b=ShZd6fsmmzovSM8mmRSLcac7Rx1DrfMyoWxFIqOlurt9uApYNRAbTrO4Y6mUSlsEEM 5aYk2P3Ku9ckyeU/sMd/H08a7sy9XurQMTNCQYBVVrRfX6cDN4SUuvm9ppOD1gJnPXix jCxAQ2K0P1teaJ6E397ym2ZrMFQ0nYwa75cn7A0/V1tzMRbfz8fd0gsNYehHMlgPVwYg NzwUCnq3yhfOc/Y943WhYLe367rocYOXyeMTY2Z/748MMHjVDsIx823nLLvd1QuLN9Ry zRNHRsqJwFx6gwhdXdiR1hDtYZwvl2yeulGWUL2i/tfZqOz7sGniy2PCMmxTFQB8Qrlu 0YDA== X-Gm-Message-State: AOJu0YyjUwntZxIAGp4yXfDh4JB1yYm3mc+Yd0jxbxVTB/v5z+uShTdO hG3ssbmRI8P0VH0bWmZkMHIohedpIRe0aTGX/4paX7Q4+5z/DHQR+klmpl3cMrYrZYHi6IdC83E = X-Google-Smtp-Source: AGHT+IFLLsDOF1ld9kMjpHpVAd1dyUn//VNJuQrIivpi+lfQ8MCQiurfjitGBhLCqqRkkPhBe7Geww== X-Received: by 2002:a5d:5402:0:b0:360:6e47:ce8a with SMTP id ffacd0b85a97d-36317c774fcmr3446836f8f.32.1718873628697; Thu, 20 Jun 2024 01:53:48 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:48 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 21/30] ada: Fix bogus error with "=" operator on array of private unchecked union Date: Thu, 20 Jun 2024 10:53:11 +0200 Message-ID: <20240620085321.2412421-21-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou The code is legal and, therefore, must be accepted by the compiler, but it must raise Program_Error at run time due to operands not having inferable discriminants and a warning be given at compile time (RM B.3.3(22-23)). gcc/ada/ * exp_ch4.adb (Expand_Array_Equality.Component_Equality): Copy the Comes_From_Source flag from the original test to the new one, and remove obsolete code dealing with unchecked unions. * sem_util.adb (Has_Inferable_Discriminants): Return False for an incomplete or private nominal subtype. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/exp_ch4.adb | 27 +++++++++------------------ gcc/ada/sem_util.adb | 7 +++++-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 7349dfc306f..983f66231a2 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -1570,26 +1570,17 @@ package body Exp_Ch4 is (Outer_Type => Typ, Nod => Nod, Comp_Type => Component_Type (Typ), Lhs => L, Rhs => R); - -- If some (sub)component is an unchecked_union, the whole operation - -- will raise program error. + -- This is necessary to give the warning about Program_Error being + -- raised when some (sub)component is an unchecked_union. - if Nkind (Test) = N_Raise_Program_Error then + Preserve_Comes_From_Source (Test, Nod); - -- This node is going to be inserted at a location where a - -- statement is expected: clear its Etype so analysis will set - -- it to the expected Standard_Void_Type. - - Set_Etype (Test, Empty); - return Test; - - else - return - Make_Implicit_If_Statement (Nod, - Condition => Make_Op_Not (Loc, Right_Opnd => Test), - Then_Statements => New_List ( - Make_Simple_Return_Statement (Loc, - Expression => New_Occurrence_Of (Standard_False, Loc)))); - end if; + return + Make_Implicit_If_Statement (Nod, + Condition => Make_Op_Not (Loc, Right_Opnd => Test), + Then_Statements => New_List ( + Make_Simple_Return_Statement (Loc, + Expression => New_Occurrence_Of (Standard_False, Loc)))); end Component_Equality; ------------------ diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 8425359e052..4cdac9443e6 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -12119,11 +12119,14 @@ package body Sem_Util is and then Is_Constrained (Etype (Subtype_Mark (N))); -- For all other names, it is sufficient to have a constrained - -- Unchecked_Union nominal subtype. + -- Unchecked_Union nominal subtype, unless it is incomplete or + -- private because it cannot have a known discriminant part in + -- this case (RM B.3.3 (11/2)). else return Is_Unchecked_Union (Etype (N)) - and then Is_Constrained (Etype (N)); + and then Is_Constrained (Etype (N)) + and then not Is_Incomplete_Or_Private_Type (Etype (N)); end if; end Has_Inferable_Discriminants; From patchwork Thu Jun 20 08:53:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1950026 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=QboUsiOD; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Znj0gFVz20KL for ; Thu, 20 Jun 2024 19:24:39 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DD6DD388A033 for ; Thu, 20 Jun 2024 09:24:37 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by sourceware.org (Postfix) with ESMTPS id BE1B43888C70 for ; Thu, 20 Jun 2024 08:53:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BE1B43888C70 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BE1B43888C70 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::22a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873650; cv=none; b=LUe6RkVHrJFWn97WlYfrV4RU5RTdJIJdF6xHGueoEcTIFsg6Er1pUKANxnIaepCUOvk3AVx3inVJAh40cpBoNTPWdDyefFykKBzneEQbJSHkAKpjeCukFRdpWSOFD0gQnW/A+L6prZzX+WypepsNt5AWjTtcqlDuVO35Aj0PyY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873650; c=relaxed/simple; bh=/OxV2J9wLCXwn1/GEqS/j+lj3eei8Mk91tdKWrHNYYg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=dvl3124PYZYicn1Xhfjtp+PlC7qKFy4jqTFjoAqxxUOaZ4OaNGK8LD4RSBOi0+5aUrMQkl3R4S0mn9ON+INQEx0kUkg4wQEjvhGQyJrgnYvLh6WFdGULSnd87lyzEr3Reomr98dXsxuKbu+JypzvuVEdWQiypZ0R8QPnA8zFSpM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2ec0f3b9cdbso5529821fa.0 for ; Thu, 20 Jun 2024 01:53:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873634; x=1719478434; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SifxZoGJNrMLL5xhcH9mghY5Fi7a+2zdSskOI6awJ4I=; b=QboUsiODV9UflEJrJVRRzSKJ+WzzawD/wIoC6FsClisXdStE2FJS3km2sVgB8mXVle UFjgtxXA1ymWcKE7uE2VAtUpQ30Opm9kIIeksJihAMtcBN5ptXO/YuHaQ+d3IL3wfH8j D1OGxmQdrnNzREfYNyhATXvz8oqDTWn5RIbtcoA7y05IM60eP/x5e/cU8lC6ykTTXXm/ AHkAfrKJRLcnvcmmeqS4JecCueHoqeFLP4fizNo5LnbHjaHTN48aNqzkmn9LjfOv9py9 F5y5dXjc3dG9yN9stEQIhFRINbnKIaetCDMNv5V6uhEnETCINNya3y9fNRQAS1pFFr/e H/aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873634; x=1719478434; 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=SifxZoGJNrMLL5xhcH9mghY5Fi7a+2zdSskOI6awJ4I=; b=vCWDYUJwREfw4CUnUTTcZDsoFZIi9rtGcLAIOe42hQx0umzMmapbWX2Z5KkU5RGF0Q axScb726HVc7gyp0HfVjjpCYW3bQDm+hntSbmmfJad9qsichl1ta3xFQnBrqMOF5Yh7P 8UtIWmgPNn8oYTfqzSznmMUV3eOT1qh/dGuAo4X1iZbkKkziEpd61Qr8bQqtI50KJ2xb kF8bxoUjmJaQnWmkkusqbimZy6V45wzq+PkxTphwtsJCRLAY0iHm/48ImbIlWKSUuTmx 11X/KBnR0RB8SMzzJYX4BfQC22MyT1ZMPJJKVwZxLcgruqNqhxQ7D2YaFpPoYYx3+Gmt q1sA== X-Gm-Message-State: AOJu0Yx6pArd4KLqwxI1BjpY22HzBOxSEdTYsbjMGxvYCKFjJR4fXfbD FN+/2WIDehpnPCkt0oGAku1Bbc6nJLwlWlH9m+LHXtKjA6WTKW5jPfgdmZ05uZ2v8L7SK17AyaU = X-Google-Smtp-Source: AGHT+IF2eUEbrVJDFGDQelK43IT7M3+WCSssAGzAdx7gEBS10Qe68NvqYN3sKMgWBB83c2ekadgi7g== X-Received: by 2002:a05:6512:1c8:b0:52c:39eb:40d2 with SMTP id 2adb3069b0e04-52ccaa5e026mr2563864e87.20.1718873630210; Thu, 20 Jun 2024 01:53:50 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:49 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Doug Rupp Subject: [COMMITTED 22/30] ada: New pragma to default all interrupts to system. Date: Thu, 20 Jun 2024 10:53:12 +0200 Message-ID: <20240620085321.2412421-22-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, T_SCC_BODY_TEXT_LINE, WEIRD_QUOTING 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Doug Rupp New pragma Interrupts_System_By_Default defaults all interrupts/signals to system (which will inhibit the installation of default signal handlers). Note this changes the ALI format: it optionally adds an identifier to the 'P' line (similar to pragma Unreserve_All_Interrupts). As per comment in lib-writ spec regarding new modifiers, adding modifiers to the P line is always safe. Also note this does not introduce a bootstrap problem because the compiler and binder do not set the underlying _gl global nor do they use this pragma. gcc/ada/ * ali.ads (Interrupts_Default_To_System): New boolean. (Interrupts_Default_To_System_Specified): New boolean. * ali.adb (Interrupts_Default_To_System_Specified): Initialize. (Interrupts_Default_To_System): Initialize. (Scan_ALI): Processing for "ID". * bindgen.adb: Coallesce comments on interrupt settings to ... (Gen_Adainit): Import Interrupts_Default_To_System flag and set if pragma specified. (Gen_Output_File_Ada): Generate Local_Interrupt_States according to pragma. * init.c: ... here. [vxworks] (__gnat_install_handler): Test for interrupt_state. (__gl_interrupts_default_to_system): New global flag. (__gnat_get_interrupt_State): return interrupt state according to new global flag. * lib-writ.ads: Document "ID". * lib-writ.adb: Write out "ID". * opt.ads (Interrupts_System_By_Default): New boolean, defaulted to False. * par-prag.adb (Pragma_Interrupts_System_By_Default): New. * sem_prag.adb (Pragma_Interrupts_System_By_Default): Handle it. (Pragma_Interrupts_System_By_Default): Default it. * snames.ads-tmpl (Name_Interrupts_System_By_Default): New name. (Pragma_Interrupts_System_By_Default): New * libgnarl/s-intman__posix.adb (Initialize): Ensure the Keep_Unmasked signal is sigset-able. * doc/gnat_rm/implementation_defined_pragmas.rst: Document pragma Interrupts_System_By_Default. * doc/gnat_ugn/the_gnat_compilation_model.rst (Configuration pragmas): Add Interrupts_System_By_Default. (Partition-Wide Settings): Mention pragma Interrupts_System_By_Default. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/ali.adb | 9 + gcc/ada/ali.ads | 6 + gcc/ada/bindgen.adb | 20 +- .../implementation_defined_pragmas.rst | 13 + .../gnat_ugn/the_gnat_compilation_model.rst | 4 + gcc/ada/gnat_rm.texi | 1538 +++++++++-------- gcc/ada/gnat_ugn.texi | 6 +- gcc/ada/init.c | 34 +- gcc/ada/lib-writ.adb | 4 + gcc/ada/lib-writ.ads | 5 + gcc/ada/libgnarl/s-intman__posix.adb | 24 +- gcc/ada/opt.ads | 4 + gcc/ada/par-prag.adb | 1 + gcc/ada/sem_prag.adb | 13 + gcc/ada/snames.ads-tmpl | 2 + 15 files changed, 904 insertions(+), 779 deletions(-) diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb index 7c7f790325b..bde73b9810b 100644 --- a/gcc/ada/ali.adb +++ b/gcc/ada/ali.adb @@ -665,6 +665,7 @@ package body ALI is No_Object_Specified := False; No_Component_Reordering_Specified := False; GNATprove_Mode_Specified := False; + Interrupts_Default_To_System_Specified := False; Normalize_Scalars_Specified := False; Partition_Elaboration_Policy_Specified := ' '; Queuing_Policy_Specified := ' '; @@ -1750,6 +1751,7 @@ package body ALI is First_Specific_Dispatching => Specific_Dispatching.Last + 1, First_Unit => No_Unit_Id, GNATprove_Mode => False, + Interrupts_Default_To_System => False, Invocation_Graph_Encoding => No_Encoding, Last_CUDA_Kernel => CUDA_Kernels.Last, Last_Interrupt_State => Interrupt_States.Last, @@ -2005,6 +2007,13 @@ package body ALI is GNATprove_Mode_Specified := True; ALIs.Table (Id).GNATprove_Mode := True; + -- Processing for ID (Interrupts Default to System) + + elsif C = 'I' then + Checkc ('D'); + Interrupts_Default_To_System_Specified := True; + ALIs.Table (Id).Interrupts_Default_To_System := True; + -- Processing for Lx elsif C = 'L' then diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads index 1f452268681..1dbe24b22a7 100644 --- a/gcc/ada/ali.ads +++ b/gcc/ada/ali.ads @@ -227,6 +227,9 @@ package ALI is -- signalled by GP appearing on the P line. Not set if 'P' appears in -- Ignore_Lines. + Interrupts_Default_To_System : Boolean; + -- Set to True if pragma Interrupts_System_By_Default is seen; + No_Component_Reordering : Boolean; -- Set to True if file was compiled with a configuration pragma file -- containing pragma No_Component_Reordering. Not set if 'P' appears @@ -591,6 +594,9 @@ package ALI is Initialize_Scalars_Used : Boolean := False; -- Set True if an ali file contains the Initialize_Scalars flag + Interrupts_Default_To_System_Specified : Boolean := False; + -- Set to True if an pragma Interrupts_System_By_Default is seen. + Locking_Policy_Specified : Character := ' '; -- Set to blank by Initialize_ALI. Set to the appropriate locking policy -- character if an ali file contains a P line setting the locking policy. diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb index f15f96495df..89b2b88395b 100644 --- a/gcc/ada/bindgen.adb +++ b/gcc/ada/bindgen.adb @@ -273,9 +273,8 @@ package body Bindgen is -- such a pragma is given (the string will be a null string if no pragmas -- were used). If pragma were present the entries apply to the interrupts -- in sequence from the first interrupt, and are set to one of four - -- possible settings: 'n' for not specified, 'u' for user, 'r' for run - -- time, 's' for system, see description of Interrupt_State pragma for - -- further details. + -- possible settings: 'n', 'u', 'r', 's', see description in init.c + -- (__gnat_get_interrupt_state) for further details. -- Num_Interrupt_States is the length of the Interrupt_States string. It -- will be set to zero if no Interrupt_State pragmas are present. @@ -819,6 +818,10 @@ package body Bindgen is WBI (" pragma Import (C, XDR_Stream, ""__gl_xdr_stream"");"); end if; + WBI (" Interrupts_Default_To_System : Integer;"); + WBI (" pragma Import (C, Interrupts_Default_To_System, " & + """__gl_interrupts_default_to_system"");"); + -- Import entry point for initialization of the runtime WBI (""); @@ -1040,6 +1043,11 @@ package body Bindgen is Set_String (";"); Write_Statement_Buffer; + if Interrupts_Default_To_System_Specified then + Set_String (" Interrupts_Default_To_System := 1;"); + Write_Statement_Buffer; + end if; + if Leap_Seconds_Support then WBI (" Leap_Seconds_Support := 1;"); end if; @@ -3505,7 +3513,11 @@ package body Bindgen is begin while IS_Pragma_Settings.Last < Inum loop - IS_Pragma_Settings.Append ('n'); + if Interrupts_Default_To_System_Specified then + IS_Pragma_Settings.Append ('s'); + else + IS_Pragma_Settings.Append ('n'); + end if; end loop; IS_Pragma_Settings.Table (Inum) := Stat; diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index acfa729dd4c..6c08eaee816 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -3185,6 +3185,19 @@ Overriding the default state of signals used by the Ada runtime may interfere with an application's runtime behavior in the cases of the synchronous signals, and in the case of the signal used to implement the ``abort`` statement. +Pragma Interrupts_System_By_Default +=================================== + +Syntax: + + +:: + + pragma Interrupts_System_By_Default; + +Default all interrupts to the System state as defined above in pragma +``Interrupt_State``. This is a configuration pragma. + .. _Pragma-Invariant: Pragma Invariant diff --git a/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst b/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst index fd15459203a..74c54722921 100644 --- a/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst +++ b/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst @@ -1430,6 +1430,7 @@ recognized by GNAT:: Implicit_Packing Initialize_Scalars Interrupt_State + Interrupts_System_By_Default License Locking_Policy No_Component_Reordering @@ -4517,6 +4518,9 @@ then you need to instruct the Ada part not to install its own signal handler. This is done using ``pragma Interrupt_State`` that provides a general mechanism for overriding such uses of interrupts. +Additionally, ``pragma Interrupts_System_By_Default`` can be used to default +all interrupts to System. + The set of interrupts for which the Ada run-time library sets a specific signal handler is the following: diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 553e4174d47..c578502983c 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -187,6 +187,7 @@ Implementation Defined Pragmas * Pragma Interface_Name:: * Pragma Interrupt_Handler:: * Pragma Interrupt_State:: +* Pragma Interrupts_System_By_Default:: * Pragma Invariant:: * Pragma Keep_Names:: * Pragma License:: @@ -1310,6 +1311,7 @@ consideration, the use of these pragmas should be minimized. * Pragma Interface_Name:: * Pragma Interrupt_Handler:: * Pragma Interrupt_State:: +* Pragma Interrupts_System_By_Default:: * Pragma Invariant:: * Pragma Keep_Names:: * Pragma License:: @@ -4605,7 +4607,7 @@ pragma Interrupt_Handler (procedure_LOCAL_NAME); This program unit pragma is supported for parameterless protected procedures as described in Annex C of the Ada Reference Manual. -@node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas +@node Pragma Interrupt_State,Pragma Interrupts_System_By_Default,Pragma Interrupt_Handler,Implementation Defined Pragmas @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{8e} @section Pragma Interrupt_State @@ -4691,8 +4693,22 @@ Overriding the default state of signals used by the Ada runtime may interfere with an application’s runtime behavior in the cases of the synchronous signals, and in the case of the signal used to implement the @code{abort} statement. -@node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{8f}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{90} +@node Pragma Interrupts_System_By_Default,Pragma Invariant,Pragma Interrupt_State,Implementation Defined Pragmas +@anchor{gnat_rm/implementation_defined_pragmas pragma-interrupts-system-by-default}@anchor{8f} +@section Pragma Interrupts_System_By_Default + + +Syntax: + +@example +pragma Interrupts_System_By_Default; +@end example + +Default all interrupts to the System state as defined above in pragma +@code{Interrupt_State}. This is a configuration pragma. + +@node Pragma Invariant,Pragma Keep_Names,Pragma Interrupts_System_By_Default,Implementation Defined Pragmas +@anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{90}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{91} @section Pragma Invariant @@ -4731,7 +4747,7 @@ For further details on the use of this pragma, see the Ada 2012 documentation of the Type_Invariant aspect. @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{91} +@anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{92} @section Pragma Keep_Names @@ -4751,7 +4767,7 @@ use a @code{Discard_Names} pragma in the @code{gnat.adc} file, but you want to retain the names for specific enumeration types. @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{92} +@anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{93} @section Pragma License @@ -4846,7 +4862,7 @@ GPL, but no warning for @code{GNAT.Sockets} which is part of the GNAT run time, and is therefore licensed under the modified GPL. @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{93} +@anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{94} @section Pragma Link_With @@ -4870,7 +4886,7 @@ separate arguments to the linker. In addition pragma Link_With allows multiple arguments, with the same effect as successive pragmas. @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{94} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{95} @section Pragma Linker_Alias @@ -4911,7 +4927,7 @@ end p; @end example @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{95} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{96} @section Pragma Linker_Constructor @@ -4941,7 +4957,7 @@ listed above. Where possible, the use of Stand Alone Libraries is preferable to the use of this pragma. @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{96} +@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{97} @section Pragma Linker_Destructor @@ -4964,7 +4980,7 @@ See @code{pragma Linker_Constructor} for the set of restrictions that apply because of these specific contexts. @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{97}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{98} +@anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{98}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{99} @section Pragma Linker_Section @@ -5038,7 +5054,7 @@ end IO_Card; @end example @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{99}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{9a} +@anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9a}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{9b} @section Pragma Lock_Free @@ -5101,7 +5117,7 @@ Ada RM D.3) are not performed when a protected operation of the protected unit is executed. @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{9b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{9c} @section Pragma Loop_Invariant @@ -5134,7 +5150,7 @@ attribute can only be used within the expression of a @code{Loop_Invariant} pragma. For full details, see documentation of attribute @code{Loop_Entry}. @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{9c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{9d} @section Pragma Loop_Optimize @@ -5196,7 +5212,7 @@ compiler in order to enable the relevant optimizations, that is to say vectorization. @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{9d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{9e} @section Pragma Loop_Variant @@ -5243,7 +5259,7 @@ The @code{Loop_Entry} attribute may be used within the expressions of the @code{Loop_Variant} pragma to refer to values on entry to the loop. @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{9e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{9f} @section Pragma Machine_Attribute @@ -5269,7 +5285,7 @@ which may make this pragma unusable for some attributes. For further information see @cite{GNU Compiler Collection (GCC) Internals}. @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{9f} +@anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{a0} @section Pragma Main @@ -5289,7 +5305,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has no effect in GNAT, other than being syntax checked. @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{a0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{a1} @section Pragma Main_Storage @@ -5308,7 +5324,7 @@ This pragma is provided for compatibility with OpenVMS VAX Systems. It has no effect in GNAT, other than being syntax checked. @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a1}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a2} +@anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a2}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a3} @section Pragma Max_Queue_Length @@ -5326,7 +5342,7 @@ entry. A value of -1 represents no additional restriction on queue length. @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a3} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a4} @section Pragma No_Body @@ -5349,7 +5365,7 @@ dummy body with a No_Body pragma ensures that there is no interference from earlier versions of the package body. @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a4}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a5} +@anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a6} @section Pragma No_Caching @@ -5363,7 +5379,7 @@ For the semantics of this pragma, see the entry for aspect @code{No_Caching} in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a7} @section Pragma No_Component_Reordering @@ -5382,7 +5398,7 @@ declared in units to which the pragma applies and there is a requirement that this pragma be used consistently within a partition. @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a7}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a8} +@anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a8}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a9} @section Pragma No_Elaboration_Code_All @@ -5401,7 +5417,7 @@ current unit, it must also have the @cite{No_Elaboration_Code_All} aspect set. It may be applied to package or subprogram specs or their generic versions. @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{aa} @section Pragma No_Heap_Finalization @@ -5433,7 +5449,7 @@ lose its @code{No_Heap_Finalization} pragma when the corresponding instance does appear at the library level. @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{aa}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{ab} +@anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ab}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{ac} @section Pragma No_Inline @@ -5451,7 +5467,7 @@ in particular it is not subject to the use of option `-gnatn' or pragma @code{Inline_Always} for the same @code{NAME}. @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{ac} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{ad} @section Pragma No_Return @@ -5478,7 +5494,7 @@ available in all earlier versions of Ada as an implementation-defined pragma. @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{ad} +@anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{ae} @section Pragma No_Strict_Aliasing @@ -5500,7 +5516,7 @@ in the @cite{GNAT User’s Guide}. This pragma currently has no effects on access to unconstrained array types. @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{ae}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{af} +@anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{af}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{b0} @section Pragma No_Tagged_Streams @@ -5539,7 +5555,7 @@ with empty strings. This is useful to avoid exposing entity names at binary level but has a negative impact on the debuggability of tagged types. @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{b0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{b1} @section Pragma Normalize_Scalars @@ -5621,7 +5637,7 @@ will always generate an invalid value if one exists. @end table @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b1}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{b2} +@anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b2}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{b3} @section Pragma Obsolescent @@ -5717,7 +5733,7 @@ So if you specify @code{Entity =>} for the @code{Entity} argument, and a @code{M argument is present, it must be preceded by @code{Message =>}. @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b3} +@anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b4} @section Pragma Optimize_Alignment @@ -5803,7 +5819,7 @@ latter are compiled by default in pragma Optimize_Alignment (Off) mode if no pragma appears at the start of the file. @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b4} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b5} @section Pragma Ordered @@ -5895,7 +5911,7 @@ For additional information please refer to the description of the `-gnatw.u' switch in the GNAT User’s Guide. @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{b6} @section Pragma Overflow_Mode @@ -5934,7 +5950,7 @@ The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables) overflow checking, but does not affect the overflow mode. @node Pragma Overriding_Renamings,Pragma Part_Of,Pragma Overflow_Mode,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b7} @section Pragma Overriding_Renamings @@ -5969,7 +5985,7 @@ RM 8.3 (15) stipulates that an overridden operation is not visible within the declaration of the overriding operation. @node Pragma Part_Of,Pragma Partition_Elaboration_Policy,Pragma Overriding_Renamings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{b7}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b8} +@anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{b8}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b9} @section Pragma Part_Of @@ -5985,7 +6001,7 @@ For the semantics of this pragma, see the entry for aspect @code{Part_Of} in the SPARK 2014 Reference Manual, section 7.2.6. @node Pragma Partition_Elaboration_Policy,Pragma Passive,Pragma Part_Of,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{ba} @section Pragma Partition_Elaboration_Policy @@ -6002,7 +6018,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Passive,Pragma Persistent_BSS,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{ba} +@anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{bb} @section Pragma Passive @@ -6026,7 +6042,7 @@ For more information on the subject of passive tasks, see the section ‘Passive Task Optimization’ in the GNAT Users Guide. @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{bb}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{bc} +@anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{bc}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{bd} @section Pragma Persistent_BSS @@ -6057,7 +6073,7 @@ If this pragma is used on a target where this feature is not supported, then the pragma will be ignored. See also @code{pragma Linker_Section}. @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{bd} +@anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{be} @section Pragma Post @@ -6082,7 +6098,7 @@ appear at the start of the declarations in a subprogram body (preceded only by other pragmas). @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{be} +@anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{bf} @section Pragma Postcondition @@ -6247,7 +6263,7 @@ Ada 2012, and has been retained in its original form for compatibility purposes. @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{bf} +@anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{c0} @section Pragma Post_Class @@ -6282,7 +6298,7 @@ policy that controls this pragma is @code{Post'Class}, not @code{Post_Class}. @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c1} @section Pragma Pre @@ -6307,7 +6323,7 @@ appear at the start of the declarations in a subprogram body (preceded only by other pragmas). @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c2} @section Pragma Precondition @@ -6366,7 +6382,7 @@ Ada 2012, and has been retained in its original form for compatibility purposes. @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{c2}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c3} +@anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{c3}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c4} @section Pragma Predicate @@ -6420,7 +6436,7 @@ defined for subtype B). When following this approach, the use of predicates should be avoided. @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c4} +@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c5} @section Pragma Predicate_Failure @@ -6437,7 +6453,7 @@ the language-defined @code{Predicate_Failure} aspect, and shares its restrictions and semantics. @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{c6} @section Pragma Preelaborable_Initialization @@ -6452,7 +6468,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c7} @section Pragma Prefix_Exception_Messages @@ -6483,7 +6499,7 @@ prefixing in this case, you can always call @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually. @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c7} +@anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c8} @section Pragma Pre_Class @@ -6518,7 +6534,7 @@ policy that controls this pragma is @code{Pre'Class}, not @code{Pre_Class}. @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c9} @section Pragma Priority_Specific_Dispatching @@ -6542,7 +6558,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{ca} @section Pragma Profile @@ -6821,7 +6837,7 @@ conforming Ada constructs. The profile enables the following three pragmas: @end itemize @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{ca} +@anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{cb} @section Pragma Profile_Warnings @@ -6839,7 +6855,7 @@ violations of the profile generate warning messages instead of error messages. @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{cb} +@anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{cc} @section Pragma Propagate_Exceptions @@ -6858,7 +6874,7 @@ purposes. It used to be used in connection with optimization of a now-obsolete mechanism for implementation of exceptions. @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{cc} +@anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{cd} @section Pragma Provide_Shift_Operators @@ -6878,7 +6894,7 @@ including the function declarations for these five operators, together with the pragma Import (Intrinsic, …) statements. @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{cd} +@anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{ce} @section Pragma Psect_Object @@ -6898,7 +6914,7 @@ EXTERNAL_SYMBOL ::= This pragma is identical in effect to pragma @code{Common_Object}. @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{cf} +@anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{cf}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{d0} @section Pragma Pure_Function @@ -6960,7 +6976,7 @@ unit is not a Pure unit in the categorization sense. So for example, a function thus marked is free to @code{with} non-pure units. @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d1} @section Pragma Rational @@ -6978,7 +6994,7 @@ pragma Profile (Rational); @end example @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d2} @section Pragma Ravenscar @@ -6998,7 +7014,7 @@ pragma Profile (Ravenscar); which is the preferred method of setting the @code{Ravenscar} profile. @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{d3} +@anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d3}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{d4} @section Pragma Refined_Depends @@ -7031,7 +7047,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Depends the SPARK 2014 Reference Manual, section 6.1.5. @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d5} +@anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{d6} @section Pragma Refined_Global @@ -7056,7 +7072,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Global} the SPARK 2014 Reference Manual, section 6.1.4. @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d6}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d7} +@anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d7}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d8} @section Pragma Refined_Post @@ -7070,7 +7086,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_Post} i the SPARK 2014 Reference Manual, section 7.2.7. @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{d8}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d9} +@anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{d9}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{da} @section Pragma Refined_State @@ -7096,7 +7112,7 @@ For the semantics of this pragma, see the entry for aspect @code{Refined_State} the SPARK 2014 Reference Manual, section 7.2.2. @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{da} +@anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{db} @section Pragma Relative_Deadline @@ -7111,7 +7127,7 @@ versions of Ada as an implementation-defined pragma. See Ada 2012 Reference Manual for details. @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{db}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{dc} +@anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{dd} @section Pragma Remote_Access_Type @@ -7137,7 +7153,7 @@ pertaining to remote access to class-wide types. At instantiation, the actual type must be a remote access to class-wide type. @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{dd} +@anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{de} @section Pragma Rename_Pragma @@ -7176,7 +7192,7 @@ Pragma Inline_Only will not necessarily mean the same thing as the other Ada compiler; it’s up to you to make sure the semantics are close enough. @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{de} +@anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{df} @section Pragma Restricted_Run_Time @@ -7197,7 +7213,7 @@ which is the preferred method of setting the restricted run time profile. @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{df} +@anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{e0} @section Pragma Restriction_Warnings @@ -7235,7 +7251,7 @@ generating a warning, but any other use of implementation defined pragmas will cause a warning to be generated. @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{e0} +@anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{e1} @section Pragma Reviewable @@ -7339,7 +7355,7 @@ comprehensive messages identifying possible problems based on this information. @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e2} +@anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e2}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e3} @section Pragma Secondary_Stack_Size @@ -7375,7 +7391,7 @@ Note the pragma cannot appear when the restriction @code{No_Secondary_Stack} is in effect. @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{e3} +@anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{e4} @section Pragma Share_Generic @@ -7393,7 +7409,7 @@ than to check that the given names are all names of generic units or generic instances. @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e5} +@anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e5}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{e6} @section Pragma Shared @@ -7401,7 +7417,7 @@ This pragma is provided for compatibility with Ada 83. The syntax and semantics are identical to pragma Atomic. @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e7} @section Pragma Short_Circuit_And_Or @@ -7420,7 +7436,7 @@ within the file being compiled, it applies only to the file being compiled. There is no requirement that all units in a partition use this option. @node Pragma Short_Descriptors,Pragma Side_Effects,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e7} +@anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e8} @section Pragma Short_Descriptors @@ -7434,7 +7450,7 @@ This pragma is provided for compatibility with other Ada implementations. It is recognized but ignored by all current versions of GNAT. @node Pragma Side_Effects,Pragma Simple_Storage_Pool_Type,Pragma Short_Descriptors,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e8}@anchor{gnat_rm/implementation_defined_pragmas pragma-side-effects}@anchor{e9} +@anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas pragma-side-effects}@anchor{ea} @section Pragma Side_Effects @@ -7448,7 +7464,7 @@ For the semantics of this pragma, see the entry for aspect @code{Side_Effects} in the SPARK Reference Manual, section 6.1.11. @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Side_Effects,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{ea}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{eb} +@anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{eb}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{ec} @section Pragma Simple_Storage_Pool_Type @@ -7502,7 +7518,7 @@ storage-management discipline). An object of a simple storage pool type can be associated with an access type by specifying the attribute -@ref{ec,,Simple_Storage_Pool}. For example: +@ref{ed,,Simple_Storage_Pool}. For example: @example My_Pool : My_Simple_Storage_Pool_Type; @@ -7512,11 +7528,11 @@ type Acc is access My_Data_Type; for Acc'Simple_Storage_Pool use My_Pool; @end example -See attribute @ref{ec,,Simple_Storage_Pool} +See attribute @ref{ed,,Simple_Storage_Pool} for further details. @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{ed}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{ee} +@anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{ee}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{ef} @section Pragma Source_File_Name @@ -7608,20 +7624,20 @@ aware of these pragmas, and so other tools that use the project file would not be aware of the intended naming conventions. If you are using project files, file naming is controlled by Source_File_Name_Project pragmas, which are usually supplied automatically by the project manager. A pragma -Source_File_Name cannot appear after a @ref{ef,,Pragma Source_File_Name_Project}. +Source_File_Name cannot appear after a @ref{f0,,Pragma Source_File_Name_Project}. For more details on the use of the @code{Source_File_Name} pragma, see the sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes} in the @cite{GNAT User’s Guide}. @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f0}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{ef} +@anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f1}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{f0} @section Pragma Source_File_Name_Project This pragma has the same syntax and semantics as pragma Source_File_Name. It is only allowed as a stand-alone configuration pragma. -It cannot appear after a @ref{ee,,Pragma Source_File_Name}, and +It cannot appear after a @ref{ef,,Pragma Source_File_Name}, and most importantly, once pragma Source_File_Name_Project appears, no further Source_File_Name pragmas are allowed. @@ -7633,7 +7649,7 @@ Source_File_Name or Source_File_Name_Project pragmas (which would not be known to the project manager). @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{f1} +@anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{f2} @section Pragma Source_Reference @@ -7657,7 +7673,7 @@ string expression other than a string literal. This is because its value is needed for error messages issued by all phases of the compiler. @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f2}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{f3} +@anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f3}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{f4} @section Pragma SPARK_Mode @@ -7739,7 +7755,7 @@ SPARK_Mode (@code{Off}), then that pragma will need to be repeated in the package body. @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{f4} +@anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{f5} @section Pragma Static_Elaboration_Desired @@ -7763,7 +7779,7 @@ construction of larger aggregates with static components that include an others choice.) @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{f5} +@anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{f6} @section Pragma Stream_Convert @@ -7840,7 +7856,7 @@ the pragma is silently ignored, and the default implementation of the stream attributes is used instead. @node Pragma Style_Checks,Pragma Subprogram_Variant,Pragma Stream_Convert,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f6} +@anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{f7} @section Pragma Style_Checks @@ -7913,7 +7929,7 @@ Rf2 : Integer := ARG; -- OK, no error @end example @node Pragma Subprogram_Variant,Pragma Subtitle,Pragma Style_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-subprogram-variant}@anchor{f7} +@anchor{gnat_rm/implementation_defined_pragmas pragma-subprogram-variant}@anchor{f8} @section Pragma Subprogram_Variant @@ -7945,7 +7961,7 @@ the implementation-defined @code{Subprogram_Variant} aspect, and shares its restrictions and semantics. @node Pragma Subtitle,Pragma Suppress,Pragma Subprogram_Variant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f8} +@anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{f9} @section Pragma Subtitle @@ -7959,7 +7975,7 @@ This pragma is recognized for compatibility with other Ada compilers but is ignored by GNAT. @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f9} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{fa} @section Pragma Suppress @@ -8032,7 +8048,7 @@ Of course, run-time checks are omitted whenever the compiler can prove that they will not fail, whether or not checks are suppressed. @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{fa} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{fb} @section Pragma Suppress_All @@ -8051,7 +8067,7 @@ The use of the standard Ada pragma @code{Suppress (All_Checks)} as a normal configuration pragma is the preferred usage in GNAT. @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fb}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{fc} +@anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fc}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{fd} @section Pragma Suppress_Debug_Info @@ -8066,7 +8082,7 @@ for the specified entity. It is intended primarily for use in debugging the debugger, and navigating around debugger problems. @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{fd} +@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{fe} @section Pragma Suppress_Exception_Locations @@ -8089,7 +8105,7 @@ a partition, so it is fine to have some units within a partition compiled with this pragma and others compiled in normal mode without it. @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{fe}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{ff} +@anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{100} @section Pragma Suppress_Initialization @@ -8134,7 +8150,7 @@ is suppressed, just as though its subtype had been given in a pragma Suppress_Initialization, as described above. @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{100} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{101} @section Pragma Task_Name @@ -8190,7 +8206,7 @@ end; @end example @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{101} +@anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{102} @section Pragma Task_Storage @@ -8210,7 +8226,7 @@ created, depending on the target. This pragma can appear anywhere a type. @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{102}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{103} +@anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{103}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{104} @section Pragma Test_Case @@ -8266,7 +8282,7 @@ postcondition. Mode @code{Robustness} indicates that the precondition and postcondition of the subprogram should be ignored for this test case. @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{104}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{105} +@anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{106} @section Pragma Thread_Local_Storage @@ -8304,7 +8320,7 @@ If this pragma is used on a system where @code{TLS} is not supported, then an error message will be generated and the program will be rejected. @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{106} +@anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{107} @section Pragma Time_Slice @@ -8320,7 +8336,7 @@ It is ignored if it is used in a system that does not allow this control, or if it appears in other than the main program unit. @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{107} +@anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{108} @section Pragma Title @@ -8345,7 +8361,7 @@ notation is used, and named and positional notation can be mixed following the normal rules for procedure calls in Ada. @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{108} +@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{109} @section Pragma Type_Invariant @@ -8366,7 +8382,7 @@ controlled by the assertion identifier @code{Type_Invariant} rather than @code{Invariant}. @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{109}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{10a} +@anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{10b} @section Pragma Type_Invariant_Class @@ -8393,7 +8409,7 @@ policy that controls this pragma is @code{Type_Invariant'Class}, not @code{Type_Invariant_Class}. @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{10b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{10c} @section Pragma Unchecked_Union @@ -8413,7 +8429,7 @@ version in all language modes (Ada 83, Ada 95, and Ada 2005). For full details, consult the Ada 2012 Reference Manual, section B.3.3. @node Pragma Unevaluated_Use_Of_Old,Pragma User_Aspect_Definition,Pragma Unchecked_Union,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{10c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{10d} @section Pragma Unevaluated_Use_Of_Old @@ -8468,7 +8484,7 @@ uses up to the end of the corresponding statement sequence or sequence of package declarations. @node Pragma User_Aspect_Definition,Pragma Unimplemented_Unit,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{10d} +@anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{10e} @section Pragma User_Aspect_Definition @@ -8500,7 +8516,7 @@ pragma. If multiple definitions are visible for some aspect at some point, then the definitions must agree. A predefined aspect cannot be redefined. @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma User_Aspect_Definition,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{10e} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{10f} @section Pragma Unimplemented_Unit @@ -8520,7 +8536,7 @@ The abort only happens if code is being generated. Thus you can use specs of unimplemented packages in syntax or semantic checking mode. @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{110} +@anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{111} @section Pragma Universal_Aliasing @@ -8538,7 +8554,7 @@ they need to be suppressed, see the section on @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}. @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{112} +@anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{113} @section Pragma Unmodified @@ -8572,7 +8588,7 @@ Thus it is never necessary to use @code{pragma Unmodified} for such variables, though it is harmless to do so. @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{113}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{114} +@anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{114}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{115} @section Pragma Unreferenced @@ -8618,7 +8634,7 @@ Note that if a warning is desired for all calls to a given subprogram, regardless of whether they occur in the same unit as the subprogram declaration, then this pragma should not be used (calls from another unit would not be flagged); pragma Obsolescent can be used instead -for this purpose, see @ref{b2,,Pragma Obsolescent}. +for this purpose, see @ref{b3,,Pragma Obsolescent}. The second form of pragma @code{Unreferenced} is used within a context clause. In this case the arguments must be unit names of units previously @@ -8634,7 +8650,7 @@ Thus it is never necessary to use @code{pragma Unreferenced} for such variables, though it is harmless to do so. @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{115}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{116} +@anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{117} @section Pragma Unreferenced_Objects @@ -8659,7 +8675,7 @@ compiler will automatically suppress unwanted warnings about these variables not being referenced. @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{117} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{118} @section Pragma Unreserve_All_Interrupts @@ -8695,7 +8711,7 @@ handled, see pragma @code{Interrupt_State}, which subsumes the functionality of the @code{Unreserve_All_Interrupts} pragma. @node Pragma Unsuppress,Pragma Unused,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{118} +@anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{119} @section Pragma Unsuppress @@ -8731,7 +8747,7 @@ number of implementation-defined check names. See the description of pragma @code{Suppress} for full details. @node Pragma Unused,Pragma Use_VADS_Size,Pragma Unsuppress,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{119}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{11a} +@anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{11b} @section Pragma Unused @@ -8765,7 +8781,7 @@ Thus it is never necessary to use @code{pragma Unused} for such variables, though it is harmless to do so. @node Pragma Use_VADS_Size,Pragma Validity_Checks,Pragma Unused,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{11b} +@anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{11c} @section Pragma Use_VADS_Size @@ -8789,7 +8805,7 @@ as implemented in the VADS compiler. See description of the VADS_Size attribute for further details. @node Pragma Validity_Checks,Pragma Volatile,Pragma Use_VADS_Size,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{11c} +@anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{11d} @section Pragma Validity_Checks @@ -8845,7 +8861,7 @@ A := C; -- C will be validity checked @end example @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11d}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11e} +@anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11e}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{11f} @section Pragma Volatile @@ -8863,7 +8879,7 @@ implementation of pragma Volatile is upwards compatible with the implementation in DEC Ada 83. @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{11f}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{120} +@anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{120}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{121} @section Pragma Volatile_Full_Access @@ -8889,7 +8905,7 @@ is not to the whole object; the compiler is allowed (and generally will) access only part of the object in this case. @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{121}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{122} +@anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{122}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{123} @section Pragma Volatile_Function @@ -8903,7 +8919,7 @@ For the semantics of this pragma, see the entry for aspect @code{Volatile_Functi in the SPARK 2014 Reference Manual, section 7.1.2. @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{123} +@anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{124} @section Pragma Warning_As_Error @@ -8943,7 +8959,7 @@ you can use multiple pragma Warning_As_Error. The above use of patterns to match the message applies only to warning messages generated by the front end. This pragma can also be applied to -warnings provided by the back end and mentioned in @ref{124,,Pragma Warnings}. +warnings provided by the back end and mentioned in @ref{125,,Pragma Warnings}. By using a single full `-Wxxx' switch in the pragma, such warnings can also be treated as errors. @@ -8993,7 +9009,7 @@ the tag is changed from “warning:” to “error:” and the string “[warning-as-error]” is appended to the end of the message. @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{125}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{124} +@anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{126}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{125} @section Pragma Warnings @@ -9149,7 +9165,7 @@ selectively for each tool, and as a consequence to detect useless pragma Warnings with switch @code{-gnatw.w}. @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{126} +@anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{127} @section Pragma Weak_External @@ -9200,7 +9216,7 @@ end External_Module; @end example @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas -@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{127} +@anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{128} @section Pragma Wide_Character_Encoding @@ -9231,7 +9247,7 @@ encoding within that file, and does not affect withed units, specs, or subunits. @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top -@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{128}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{129}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{12a} +@anchor{gnat_rm/implementation_defined_aspects doc}@anchor{129}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{12a}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{12b} @chapter Implementation Defined Aspects @@ -9358,7 +9374,7 @@ or attribute definition clause. @end menu @node Aspect Abstract_State,Aspect Always_Terminates,,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{12b} +@anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{12c} @section Aspect Abstract_State @@ -9367,7 +9383,7 @@ or attribute definition clause. This aspect is equivalent to @ref{1e,,pragma Abstract_State}. @node Aspect Always_Terminates,Aspect Annotate,Aspect Abstract_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{12c} +@anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{12d} @section Aspect Always_Terminates @@ -9376,7 +9392,7 @@ This aspect is equivalent to @ref{1e,,pragma Abstract_State}. This boolean aspect is equivalent to @ref{29,,pragma Always_Terminates}. @node Aspect Annotate,Aspect Async_Readers,Aspect Always_Terminates,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{12d} +@anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{12e} @section Aspect Annotate @@ -9403,7 +9419,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} @end table @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12e} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{12f} @section Aspect Async_Readers @@ -9412,7 +9428,7 @@ Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);} This boolean aspect is equivalent to @ref{32,,pragma Async_Readers}. @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{12f} +@anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{130} @section Aspect Async_Writers @@ -9421,7 +9437,7 @@ This boolean aspect is equivalent to @ref{32,,pragma Async_Readers}. This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}. @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{130} +@anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{131} @section Aspect Constant_After_Elaboration @@ -9430,7 +9446,7 @@ This boolean aspect is equivalent to @ref{34,,pragma Async_Writers}. This aspect is equivalent to @ref{44,,pragma Constant_After_Elaboration}. @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{131} +@anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{132} @section Aspect Contract_Cases @@ -9441,7 +9457,7 @@ of clauses being enclosed in parentheses so that syntactically it is an aggregate. @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{132} +@anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{133} @section Aspect Depends @@ -9450,7 +9466,7 @@ aggregate. This aspect is equivalent to @ref{56,,pragma Depends}. @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{133} +@anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{134} @section Aspect Default_Initial_Condition @@ -9459,7 +9475,7 @@ This aspect is equivalent to @ref{56,,pragma Depends}. This aspect is equivalent to @ref{52,,pragma Default_Initial_Condition}. @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{134} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{135} @section Aspect Dimension @@ -9495,7 +9511,7 @@ Note that when the dimensioned type is an integer type, then any dimension value must be an integer literal. @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{135} +@anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{136} @section Aspect Dimension_System @@ -9555,7 +9571,7 @@ See section ‘Performing Dimensionality Analysis in GNAT’ in the GNAT Users Guide for detailed examples of use of the dimension system. @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{136} +@anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{137} @section Aspect Disable_Controlled @@ -9568,7 +9584,7 @@ where for example you might want a record to be controlled or not depending on whether some run-time check is enabled or suppressed. @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{137} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{138} @section Aspect Effective_Reads @@ -9577,7 +9593,7 @@ whether some run-time check is enabled or suppressed. This aspect is equivalent to @ref{5b,,pragma Effective_Reads}. @node Aspect Effective_Writes,Aspect Exceptional_Cases,Aspect Effective_Reads,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{138} +@anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{139} @section Aspect Effective_Writes @@ -9586,7 +9602,7 @@ This aspect is equivalent to @ref{5b,,pragma Effective_Reads}. This aspect is equivalent to @ref{5d,,pragma Effective_Writes}. @node Aspect Exceptional_Cases,Aspect Extensions_Visible,Aspect Effective_Writes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{139} +@anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{13a} @section Aspect Exceptional_Cases @@ -9601,7 +9617,7 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.1.9. @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Exceptional_Cases,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{13a} +@anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{13b} @section Aspect Extensions_Visible @@ -9610,7 +9626,7 @@ Manual, section 6.1.9. This aspect is equivalent to @ref{6c,,pragma Extensions_Visible}. @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{13b} +@anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{13c} @section Aspect Favor_Top_Level @@ -9619,7 +9635,7 @@ This aspect is equivalent to @ref{6c,,pragma Extensions_Visible}. This boolean aspect is equivalent to @ref{71,,pragma Favor_Top_Level}. @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{13c} +@anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{13d} @section Aspect Ghost @@ -9628,7 +9644,7 @@ This boolean aspect is equivalent to @ref{71,,pragma Favor_Top_Level}. This aspect is equivalent to @ref{75,,pragma Ghost}. @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{13d} +@anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{13e} @section Aspect Ghost_Predicate @@ -9641,7 +9657,7 @@ For the detailed semantics of this aspect, see the entry for subtype predicates in the SPARK Reference Manual, section 3.2.4. @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{13e} +@anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{13f} @section Aspect Global @@ -9650,7 +9666,7 @@ in the SPARK Reference Manual, section 3.2.4. This aspect is equivalent to @ref{77,,pragma Global}. @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{13f} +@anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{140} @section Aspect Initial_Condition @@ -9659,7 +9675,7 @@ This aspect is equivalent to @ref{77,,pragma Global}. This aspect is equivalent to @ref{84,,pragma Initial_Condition}. @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{140} +@anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{141} @section Aspect Initializes @@ -9668,7 +9684,7 @@ This aspect is equivalent to @ref{84,,pragma Initial_Condition}. This aspect is equivalent to @ref{87,,pragma Initializes}. @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{141} +@anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{142} @section Aspect Inline_Always @@ -9677,29 +9693,29 @@ This aspect is equivalent to @ref{87,,pragma Initializes}. This boolean aspect is equivalent to @ref{89,,pragma Inline_Always}. @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{142} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{143} @section Aspect Invariant @geindex Invariant -This aspect is equivalent to @ref{90,,pragma Invariant}. It is a +This aspect is equivalent to @ref{91,,pragma Invariant}. It is a synonym for the language defined aspect @code{Type_Invariant} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{143} +@anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{144} @section Aspect Invariant’Class @geindex Invariant'Class -This aspect is equivalent to @ref{10a,,pragma Type_Invariant_Class}. It is a +This aspect is equivalent to @ref{10b,,pragma Type_Invariant_Class}. It is a synonym for the language defined aspect @code{Type_Invariant'Class} except that it is separately controllable using pragma @code{Assertion_Policy}. @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{144} +@anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{145} @section Aspect Iterable @@ -9783,16 +9799,16 @@ function Get_Element (Cont : Container; Position : Cursor) return Element_Type; This aspect is used in the GNAT-defined formal container packages. @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{145} +@anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{146} @section Aspect Linker_Section @geindex Linker_Section -This aspect is equivalent to @ref{98,,pragma Linker_Section}. +This aspect is equivalent to @ref{99,,pragma Linker_Section}. @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{146} +@anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{147} @section Aspect Local_Restrictions @@ -9846,64 +9862,64 @@ case of a declaration that occurs within nested packages that each have a Local_Restrictions specification). @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{147} +@anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{148} @section Aspect Lock_Free @geindex Lock_Free -This boolean aspect is equivalent to @ref{9a,,pragma Lock_Free}. +This boolean aspect is equivalent to @ref{9b,,pragma Lock_Free}. @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{148} +@anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{149} @section Aspect Max_Queue_Length @geindex Max_Queue_Length -This aspect is equivalent to @ref{a2,,pragma Max_Queue_Length}. +This aspect is equivalent to @ref{a3,,pragma Max_Queue_Length}. @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{149} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{14a} @section Aspect No_Caching @geindex No_Caching -This boolean aspect is equivalent to @ref{a5,,pragma No_Caching}. +This boolean aspect is equivalent to @ref{a6,,pragma No_Caching}. @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{14a} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{14b} @section Aspect No_Elaboration_Code_All @geindex No_Elaboration_Code_All -This aspect is equivalent to @ref{a8,,pragma No_Elaboration_Code_All} +This aspect is equivalent to @ref{a9,,pragma No_Elaboration_Code_All} for a program unit. @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{14b} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{14c} @section Aspect No_Inline @geindex No_Inline -This boolean aspect is equivalent to @ref{ab,,pragma No_Inline}. +This boolean aspect is equivalent to @ref{ac,,pragma No_Inline}. @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Inline,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{14c} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{14d} @section Aspect No_Tagged_Streams @geindex No_Tagged_Streams -This aspect is equivalent to @ref{af,,pragma No_Tagged_Streams} with an +This aspect is equivalent to @ref{b0,,pragma No_Tagged_Streams} with an argument specifying a root tagged type (thus this aspect can only be applied to such a type). @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{14d} +@anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{14e} @section Aspect No_Task_Parts @@ -9919,51 +9935,51 @@ away certain tasking-related code that would otherwise be needed for T’Class, because descendants of T might contain tasks. @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{14e} +@anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{14f} @section Aspect Object_Size @geindex Object_Size -This aspect is equivalent to @ref{14f,,attribute Object_Size}. +This aspect is equivalent to @ref{150,,attribute Object_Size}. @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{150} +@anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{151} @section Aspect Obsolescent @geindex Obsolescent -This aspect is equivalent to @ref{b2,,pragma Obsolescent}. Note that the +This aspect is equivalent to @ref{b3,,pragma Obsolescent}. Note that the evaluation of this aspect happens at the point of occurrence, it is not delayed until the freeze point. @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{151} +@anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{152} @section Aspect Part_Of @geindex Part_Of -This aspect is equivalent to @ref{b8,,pragma Part_Of}. +This aspect is equivalent to @ref{b9,,pragma Part_Of}. @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{152} +@anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{153} @section Aspect Persistent_BSS @geindex Persistent_BSS -This boolean aspect is equivalent to @ref{bc,,pragma Persistent_BSS}. +This boolean aspect is equivalent to @ref{bd,,pragma Persistent_BSS}. @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{153} +@anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{154} @section Aspect Predicate @geindex Predicate -This aspect is equivalent to @ref{c3,,pragma Predicate}. It is thus +This aspect is equivalent to @ref{c4,,pragma Predicate}. It is thus similar to the language defined aspects @code{Dynamic_Predicate} and @code{Static_Predicate} except that whether the resulting predicate is static or dynamic is controlled by the form of the @@ -9971,52 +9987,52 @@ expression. It is also separately controllable using pragma @code{Assertion_Policy}. @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{154} +@anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{155} @section Aspect Pure_Function @geindex Pure_Function -This boolean aspect is equivalent to @ref{cf,,pragma Pure_Function}. +This boolean aspect is equivalent to @ref{d0,,pragma Pure_Function}. @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{155} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{156} @section Aspect Refined_Depends @geindex Refined_Depends -This aspect is equivalent to @ref{d3,,pragma Refined_Depends}. +This aspect is equivalent to @ref{d4,,pragma Refined_Depends}. @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{156} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{157} @section Aspect Refined_Global @geindex Refined_Global -This aspect is equivalent to @ref{d5,,pragma Refined_Global}. +This aspect is equivalent to @ref{d6,,pragma Refined_Global}. @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{157} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{158} @section Aspect Refined_Post @geindex Refined_Post -This aspect is equivalent to @ref{d7,,pragma Refined_Post}. +This aspect is equivalent to @ref{d8,,pragma Refined_Post}. @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{158} +@anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{159} @section Aspect Refined_State @geindex Refined_State -This aspect is equivalent to @ref{d9,,pragma Refined_State}. +This aspect is equivalent to @ref{da,,pragma Refined_State}. @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{159} +@anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{15a} @section Aspect Relaxed_Initialization @@ -10026,82 +10042,82 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.10. @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{15a} +@anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{15b} @section Aspect Remote_Access_Type @geindex Remote_Access_Type -This aspect is equivalent to @ref{dc,,pragma Remote_Access_Type}. +This aspect is equivalent to @ref{dd,,pragma Remote_Access_Type}. @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15b} +@anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{15c} @section Aspect Scalar_Storage_Order @geindex Scalar_Storage_Order -This aspect is equivalent to a @ref{15c,,attribute Scalar_Storage_Order}. +This aspect is equivalent to a @ref{15d,,attribute Scalar_Storage_Order}. @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15d} +@anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{15e} @section Aspect Secondary_Stack_Size @geindex Secondary_Stack_Size -This aspect is equivalent to @ref{e2,,pragma Secondary_Stack_Size}. +This aspect is equivalent to @ref{e3,,pragma Secondary_Stack_Size}. @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{15e} +@anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{15f} @section Aspect Shared @geindex Shared -This boolean aspect is equivalent to @ref{e5,,pragma Shared} +This boolean aspect is equivalent to @ref{e6,,pragma Shared} and is thus a synonym for aspect @code{Atomic}. @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{15f} +@anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{160} @section Aspect Side_Effects @geindex Side_Effects -This aspect is equivalent to @ref{e9,,pragma Side_Effects}. +This aspect is equivalent to @ref{ea,,pragma Side_Effects}. @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{160} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{161} @section Aspect Simple_Storage_Pool @geindex Simple_Storage_Pool -This aspect is equivalent to @ref{ec,,attribute Simple_Storage_Pool}. +This aspect is equivalent to @ref{ed,,attribute Simple_Storage_Pool}. @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{161} +@anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{162} @section Aspect Simple_Storage_Pool_Type @geindex Simple_Storage_Pool_Type -This boolean aspect is equivalent to @ref{eb,,pragma Simple_Storage_Pool_Type}. +This boolean aspect is equivalent to @ref{ec,,pragma Simple_Storage_Pool_Type}. @node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{162} +@anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{163} @section Aspect SPARK_Mode @geindex SPARK_Mode -This aspect is equivalent to @ref{f3,,pragma SPARK_Mode} and +This aspect is equivalent to @ref{f4,,pragma SPARK_Mode} and may be specified for either or both of the specification and body of a subprogram or package. @node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{163} +@anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{164} @section Aspect Subprogram_Variant @@ -10111,83 +10127,83 @@ For the syntax and semantics of this aspect, see the SPARK 2014 Reference Manual, section 6.1.8. @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{164} +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{165} @section Aspect Suppress_Debug_Info @geindex Suppress_Debug_Info -This boolean aspect is equivalent to @ref{fc,,pragma Suppress_Debug_Info}. +This boolean aspect is equivalent to @ref{fd,,pragma Suppress_Debug_Info}. @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{165} +@anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{166} @section Aspect Suppress_Initialization @geindex Suppress_Initialization -This boolean aspect is equivalent to @ref{ff,,pragma Suppress_Initialization}. +This boolean aspect is equivalent to @ref{100,,pragma Suppress_Initialization}. @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{166} +@anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{167} @section Aspect Test_Case @geindex Test_Case -This aspect is equivalent to @ref{103,,pragma Test_Case}. +This aspect is equivalent to @ref{104,,pragma Test_Case}. @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{167} +@anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{168} @section Aspect Thread_Local_Storage @geindex Thread_Local_Storage -This boolean aspect is equivalent to @ref{105,,pragma Thread_Local_Storage}. +This boolean aspect is equivalent to @ref{106,,pragma Thread_Local_Storage}. @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{168} +@anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{169} @section Aspect Universal_Aliasing @geindex Universal_Aliasing -This boolean aspect is equivalent to @ref{110,,pragma Universal_Aliasing}. +This boolean aspect is equivalent to @ref{111,,pragma Universal_Aliasing}. @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{169} +@anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{16a} @section Aspect Unmodified @geindex Unmodified -This boolean aspect is equivalent to @ref{112,,pragma Unmodified}. +This boolean aspect is equivalent to @ref{113,,pragma Unmodified}. @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{16a} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{16b} @section Aspect Unreferenced @geindex Unreferenced -This boolean aspect is equivalent to @ref{114,,pragma Unreferenced}. +This boolean aspect is equivalent to @ref{115,,pragma Unreferenced}. When using the @code{-gnat2022} switch, this aspect is also supported on formal parameters, which is in particular the only form possible for expression functions. @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{16b} +@anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{16c} @section Aspect Unreferenced_Objects @geindex Unreferenced_Objects -This boolean aspect is equivalent to @ref{116,,pragma Unreferenced_Objects}. +This boolean aspect is equivalent to @ref{117,,pragma Unreferenced_Objects}. @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{16c} +@anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{16d} @section Aspect User_Aspect @@ -10200,45 +10216,45 @@ replicating the set of aspect specifications associated with the named pragma-defined aspect. @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{16d} +@anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{16e} @section Aspect Value_Size @geindex Value_Size -This aspect is equivalent to @ref{16e,,attribute Value_Size}. +This aspect is equivalent to @ref{16f,,attribute Value_Size}. @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{16f} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{170} @section Aspect Volatile_Full_Access @geindex Volatile_Full_Access -This boolean aspect is equivalent to @ref{120,,pragma Volatile_Full_Access}. +This boolean aspect is equivalent to @ref{121,,pragma Volatile_Full_Access}. @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{170} +@anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{171} @section Aspect Volatile_Function @geindex Volatile_Function -This boolean aspect is equivalent to @ref{122,,pragma Volatile_Function}. +This boolean aspect is equivalent to @ref{123,,pragma Volatile_Function}. @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects -@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{171} +@anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{172} @section Aspect Warnings @geindex Warnings -This aspect is equivalent to the two argument form of @ref{124,,pragma Warnings}, +This aspect is equivalent to the two argument form of @ref{125,,pragma Warnings}, where the first argument is @code{ON} or @code{OFF} and the second argument is the entity. @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top -@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{172}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{173}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} +@anchor{gnat_rm/implementation_defined_attributes doc}@anchor{173}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{174}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8} @chapter Implementation Defined Attributes @@ -10344,7 +10360,7 @@ consideration, you should minimize the use of these attributes. @end menu @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{174} +@anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{175} @section Attribute Abort_Signal @@ -10358,7 +10374,7 @@ completely outside the normal semantics of Ada, for a user program to intercept the abort exception). @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{175} +@anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{176} @section Attribute Address_Size @@ -10374,7 +10390,7 @@ reference to System.Address’Size is nonstatic because Address is a private type. @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{176} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{177} @section Attribute Asm_Input @@ -10388,10 +10404,10 @@ to be a static expression, and is the constraint for the parameter, value to be used as the input argument. The possible values for the constant are the same as those used in the RTL, and are dependent on the configuration file used to built the GCC back end. -@ref{177,,Machine Code Insertions} +@ref{178,,Machine Code Insertions} @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{178} +@anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{179} @section Attribute Asm_Output @@ -10407,10 +10423,10 @@ result. The possible values for constraint are the same as those used in the RTL, and are dependent on the configuration file used to build the GCC back end. If there are no output operands, then this argument may either be omitted, or explicitly given as @code{No_Output_Operands}. -@ref{177,,Machine Code Insertions} +@ref{178,,Machine Code Insertions} @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{179} +@anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{17a} @section Attribute Atomic_Always_Lock_Free @@ -10421,7 +10437,7 @@ result indicates whether atomic operations are supported by the target for the given type. @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{17a} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{17b} @section Attribute Bit @@ -10452,7 +10468,7 @@ This attribute is designed to be compatible with the DEC Ada 83 definition and implementation of the @code{Bit} attribute. @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{17b} +@anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{17c} @section Attribute Bit_Position @@ -10467,7 +10483,7 @@ type `universal_integer'. The value depends only on the field the containing record @code{R}. @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{17c} +@anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{17d} @section Attribute Code_Address @@ -10510,7 +10526,7 @@ the same value as is returned by the corresponding @code{'Address} attribute. @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{17d} +@anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{17e} @section Attribute Compiler_Version @@ -10521,7 +10537,7 @@ prefix) yields a static string identifying the version of the compiler being used to compile the unit containing the attribute reference. @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{17e} +@anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{17f} @section Attribute Constrained @@ -10536,7 +10552,7 @@ record type without discriminants is always @code{True}. This usage is compatible with older Ada compilers, including notably DEC Ada. @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{17f} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{180} @section Attribute Default_Bit_Order @@ -10553,7 +10569,7 @@ as a @code{Pos} value (0 for @code{High_Order_First}, 1 for @code{Default_Bit_Order} in package @code{System}. @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{180} +@anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{181} @section Attribute Default_Scalar_Storage_Order @@ -10570,7 +10586,7 @@ equal to @code{Default_Bit_Order} if unspecified) as a @code{System.Bit_Order} value. This is a static attribute. @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{181} +@anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{182} @section Attribute Deref @@ -10583,7 +10599,7 @@ a named access-to-@cite{typ} type, except that it yields a variable, so it can b used on the left side of an assignment. @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{182} +@anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{183} @section Attribute Descriptor_Size @@ -10612,7 +10628,7 @@ since @code{Positive} has an alignment of 4, the size of the descriptor is which yields a size of 32 bits, i.e. including 16 bits of padding. @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{183} +@anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{184} @section Attribute Elaborated @@ -10627,7 +10643,7 @@ units has been completed. An exception is for units which need no elaboration, the value is always False for such units. @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{184} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{185} @section Attribute Elab_Body @@ -10643,7 +10659,7 @@ e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{185} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{186} @section Attribute Elab_Spec @@ -10659,7 +10675,7 @@ Ada code, e.g., if it is necessary to do selective re-elaboration to fix some error. @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{186} +@anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{187} @section Attribute Elab_Subp_Body @@ -10673,7 +10689,7 @@ elaboration procedure by the binder in CodePeer mode only and is unrecognized otherwise. @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{187} +@anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{188} @section Attribute Emax @@ -10686,7 +10702,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{188} +@anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{189} @section Attribute Enabled @@ -10710,7 +10726,7 @@ a @code{pragma Suppress} or @code{pragma Unsuppress} before instantiating the package or subprogram, controlling whether the check will be present. @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{189} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{18a} @section Attribute Enum_Rep @@ -10750,7 +10766,7 @@ integer calculation is done at run time, then the call to @code{Enum_Rep} may raise @code{Constraint_Error}. @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{18a} +@anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{18b} @section Attribute Enum_Val @@ -10776,7 +10792,7 @@ absence of an enumeration representation clause. This is a static attribute (i.e., the result is static if the argument is static). @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{18b} +@anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{18c} @section Attribute Epsilon @@ -10789,7 +10805,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{18c} +@anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{18d} @section Attribute Fast_Math @@ -10800,7 +10816,7 @@ prefix) yields a static Boolean value that is True if pragma @code{Fast_Math} is active, and False otherwise. @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{18d} +@anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{18e} @section Attribute Finalization_Size @@ -10818,7 +10834,7 @@ class-wide type whose tag denotes a type with no controlled parts. Note that only heap-allocated objects contain finalization data. @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{18e} +@anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{18f} @section Attribute Fixed_Value @@ -10845,7 +10861,7 @@ This attribute is primarily intended for use in implementation of the input-output functions for fixed-point values. @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{18f} +@anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{190} @section Attribute From_Any @@ -10855,7 +10871,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{190} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{191} @section Attribute Has_Access_Values @@ -10873,7 +10889,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{191} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{192} @section Attribute Has_Discriminants @@ -10889,7 +10905,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has discriminants. @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{192} +@anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{193} @section Attribute Has_Tagged_Values @@ -10906,7 +10922,7 @@ definitions. If the attribute is applied to a generic private type, it indicates whether or not the corresponding actual type has access values. @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{193} +@anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{194} @section Attribute Img @@ -10936,7 +10952,7 @@ that returns the appropriate string when called. This means that in an instantiation as a function parameter. @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{194} +@anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{195} @section Attribute Initialized @@ -10946,7 +10962,7 @@ For the syntax and semantics of this attribute, see the SPARK 2014 Reference Manual, section 6.10. @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{195} +@anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{196} @section Attribute Integer_Value @@ -10974,7 +10990,7 @@ This attribute is primarily intended for use in implementation of the standard input-output functions for fixed-point values. @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{196} +@anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{197} @section Attribute Invalid_Value @@ -10988,7 +11004,7 @@ including the ability to modify the value with the binder -Sxx flag and relevant environment variables at run time. @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{197} +@anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{198} @section Attribute Large @@ -11001,7 +11017,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{198} +@anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{199} @section Attribute Library_Level @@ -11027,7 +11043,7 @@ end Gen; @end example @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{199} +@anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{19a} @section Attribute Loop_Entry @@ -11060,7 +11076,7 @@ entry. This copy is not performed if the loop is not entered, or if the corresponding pragmas are ignored or disabled. @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{19a} +@anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{19b} @section Attribute Machine_Size @@ -11070,7 +11086,7 @@ This attribute is identical to the @code{Object_Size} attribute. It is provided for compatibility with the DEC Ada 83 attribute of this name. @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{19b} +@anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{19c} @section Attribute Mantissa @@ -11083,7 +11099,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{19c}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{19d} +@anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{19d}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{19e} @section Attribute Maximum_Alignment @@ -11099,7 +11115,7 @@ for an object, guaranteeing that it is properly aligned in all cases. @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{19e} +@anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{19f} @section Attribute Max_Integer_Size @@ -11110,7 +11126,7 @@ prefix) provides the size of the largest supported integer type for the target. The result is a static constant. @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{19f} +@anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{1a0} @section Attribute Mechanism_Code @@ -11141,7 +11157,7 @@ by reference @end table @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1a0} +@anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1a1} @section Attribute Null_Parameter @@ -11166,7 +11182,7 @@ There is no way of indicating this without the @code{Null_Parameter} attribute. @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{14f}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1a1} +@anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{150}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1a2} @section Attribute Object_Size @@ -11236,7 +11252,7 @@ Similar additional checks are performed in other contexts requiring statically matching subtypes. @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1a2} +@anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1a3} @section Attribute Old @@ -11251,7 +11267,7 @@ definition are allowed under control of implementation defined pragma @code{Unevaluated_Use_Of_Old}. @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1a3} +@anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1a4} @section Attribute Passed_By_Reference @@ -11267,7 +11283,7 @@ passed by copy in calls. For scalar types, the result is always @code{False} and is static. For non-scalar types, the result is nonstatic. @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1a4} +@anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1a5} @section Attribute Pool_Address @@ -11289,7 +11305,7 @@ For an object created by @code{new}, @code{Ptr.all'Pool_Address} is what is passed to @code{Allocate} and returned from @code{Deallocate}. @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1a5} +@anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1a6} @section Attribute Range_Length @@ -11302,7 +11318,7 @@ applied to the index subtype of a one dimensional array always gives the same result as @code{Length} applied to the array itself. @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1a6} +@anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1a7} @section Attribute Restriction_Set @@ -11372,7 +11388,7 @@ Restrictions pragma, they are not analyzed semantically, so they do not have a type. @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1a7} +@anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1a8} @section Attribute Result @@ -11385,7 +11401,7 @@ For a further discussion of the use of this attribute and examples of its use, see the description of pragma Postcondition. @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1a8} +@anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1a9} @section Attribute Round @@ -11396,7 +11412,7 @@ also permits the use of the @code{'Round} attribute for ordinary fixed point types. @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1a9} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1aa} @section Attribute Safe_Emax @@ -11409,7 +11425,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1aa} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1ab} @section Attribute Safe_Large @@ -11422,7 +11438,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1ab} +@anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1ac} @section Attribute Safe_Small @@ -11435,7 +11451,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute. @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15c}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1ac} +@anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{15d}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1ad} @section Attribute Scalar_Storage_Order @@ -11598,7 +11614,7 @@ Note that debuggers may be unable to display the correct value of scalar components of a type for which the opposite storage order is specified. @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{ec}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1ad} +@anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{ed}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1ae} @section Attribute Simple_Storage_Pool @@ -11661,7 +11677,7 @@ as defined in section 13.11.2 of the Ada Reference Manual, except that the term `simple storage pool' is substituted for `storage pool'. @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1ae} +@anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1af} @section Attribute Small @@ -11677,7 +11693,7 @@ the Ada 83 reference manual for an exact description of the semantics of this attribute when applied to floating-point types. @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1af} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1b0} @section Attribute Small_Denominator @@ -11690,7 +11706,7 @@ denominator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1b0} +@anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1b1} @section Attribute Small_Numerator @@ -11703,7 +11719,7 @@ numerator in the representation of @code{typ'Small} as a rational number with coprime factors (i.e. as an irreducible fraction). @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1b1} +@anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1b2} @section Attribute Storage_Unit @@ -11713,7 +11729,7 @@ with coprime factors (i.e. as an irreducible fraction). prefix) provides the same value as @code{System.Storage_Unit}. @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1b2} +@anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1b3} @section Attribute Stub_Type @@ -11737,7 +11753,7 @@ unit @code{System.Partition_Interface}. Use of this attribute will create an implicit dependency on this unit. @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b3} +@anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1b4} @section Attribute System_Allocator_Alignment @@ -11754,7 +11770,7 @@ with alignment too large or to enable a realignment circuitry if the alignment request is larger than this value. @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b4} +@anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1b5} @section Attribute Target_Name @@ -11767,7 +11783,7 @@ standard gcc target name without the terminating slash (for example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”). @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b5} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1b6} @section Attribute To_Address @@ -11790,7 +11806,7 @@ modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on a 32 bits machine). @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b6} +@anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1b7} @section Attribute To_Any @@ -11800,7 +11816,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b7} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1b8} @section Attribute Type_Class @@ -11830,7 +11846,7 @@ applies to all concurrent types. This attribute is designed to be compatible with the DEC Ada 83 attribute of the same name. @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b8} +@anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1b9} @section Attribute Type_Key @@ -11842,7 +11858,7 @@ about the type or subtype. This provides improved compatibility with other implementations that support this attribute. @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1b9} +@anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1ba} @section Attribute TypeCode @@ -11852,7 +11868,7 @@ This internal attribute is used for the generation of remote subprogram stubs in the context of the Distributed Systems Annex. @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1ba} +@anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1bb} @section Attribute Unconstrained_Array @@ -11866,7 +11882,7 @@ still static, and yields the result of applying this test to the generic actual. @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1bb} +@anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1bc} @section Attribute Universal_Literal_String @@ -11894,7 +11910,7 @@ end; @end example @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1bc} +@anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1bd} @section Attribute Unrestricted_Access @@ -12081,7 +12097,7 @@ In general this is a risky approach. It may appear to “work” but such uses o of GNAT to another, so are best avoided if possible. @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1bd} +@anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1be} @section Attribute Update @@ -12162,7 +12178,7 @@ A := A'Update ((1, 2) => 20, (3, 4) => 30); which changes element (1,2) to 20 and (3,4) to 30. @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1be} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1bf} @section Attribute Valid_Value @@ -12174,7 +12190,7 @@ a String, and returns Boolean. @code{T'Valid_Value (S)} returns True if and only if @code{T'Value (S)} would not raise Constraint_Error. @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1bf} +@anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1c0} @section Attribute Valid_Scalars @@ -12208,7 +12224,7 @@ write a function with a single use of the attribute, and then call that function from multiple places. @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1c0} +@anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1c1} @section Attribute VADS_Size @@ -12228,7 +12244,7 @@ gives the result that would be obtained by applying the attribute to the corresponding type. @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16e}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1c1} +@anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{16f}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1c2} @section Attribute Value_Size @@ -12242,7 +12258,7 @@ a value of the given subtype. It is the same as @code{type'Size}, but, unlike @code{Size}, may be set for non-first subtypes. @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c2} +@anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1c3} @section Attribute Wchar_T_Size @@ -12254,7 +12270,7 @@ primarily for constructing the definition of this type in package @code{Interfaces.C}. The result is a static constant. @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes -@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c3} +@anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1c4} @section Attribute Word_Size @@ -12265,7 +12281,7 @@ prefix) provides the value @code{System.Word_Size}. The result is a static constant. @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top -@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1c5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1c6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9} @chapter Standard and Implementation Defined Restrictions @@ -12294,7 +12310,7 @@ language defined or GNAT-specific, are listed in the following. @end menu @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c6}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1c7}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1c8} @section Partition-Wide Restrictions @@ -12387,7 +12403,7 @@ then all compilation units in the partition must obey the restriction). @end menu @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1c9} @subsection Immediate_Reclamation @@ -12399,7 +12415,7 @@ deallocation, any storage reserved at run time for an object is immediately reclaimed when the object no longer exists. @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1c9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1ca} @subsection Max_Asynchronous_Select_Nesting @@ -12411,7 +12427,7 @@ detected at compile time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1ca} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1cb} @subsection Max_Entry_Queue_Length @@ -12432,7 +12448,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1cb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1cc} @subsection Max_Protected_Entries @@ -12443,7 +12459,7 @@ bounds of every entry family of a protected unit shall be static, or shall be defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1cc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1cd} @subsection Max_Select_Alternatives @@ -12452,7 +12468,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. [RM D.7] Specifies the maximum number of alternatives in a selective accept. @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1cd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1ce} @subsection Max_Storage_At_Blocking @@ -12463,7 +12479,7 @@ Storage_Size that can be retained by a blocked task. A violation of this restriction causes Storage_Error to be raised. @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1ce} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1cf} @subsection Max_Task_Entries @@ -12476,7 +12492,7 @@ defined by a discriminant of a subtype whose corresponding bound is static. @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1cf} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1d0} @subsection Max_Tasks @@ -12489,7 +12505,7 @@ time. Violations of this restriction with values other than zero cause Storage_Error to be raised. @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1d0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1d1} @subsection No_Abort_Statements @@ -12499,7 +12515,7 @@ Storage_Error to be raised. no calls to Task_Identification.Abort_Task. @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1d1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1d2} @subsection No_Access_Parameter_Allocators @@ -12510,7 +12526,7 @@ occurrences of an allocator as the actual parameter to an access parameter. @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1d3} @subsection No_Access_Subprograms @@ -12520,7 +12536,7 @@ parameter. declarations of access-to-subprogram types. @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1d4} @subsection No_Allocators @@ -12530,7 +12546,7 @@ declarations of access-to-subprogram types. occurrences of an allocator. @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1d5} @subsection No_Anonymous_Allocators @@ -12540,7 +12556,7 @@ occurrences of an allocator. occurrences of an allocator of anonymous access type. @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1d6} @subsection No_Asynchronous_Control @@ -12550,7 +12566,7 @@ occurrences of an allocator of anonymous access type. dependences on the predefined package Asynchronous_Task_Control. @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1d7} @subsection No_Calendar @@ -12560,7 +12576,7 @@ dependences on the predefined package Asynchronous_Task_Control. dependences on package Calendar. @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1d8} @subsection No_Coextensions @@ -12570,7 +12586,7 @@ dependences on package Calendar. coextensions. See 3.10.2. @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1d9} @subsection No_Default_Initialization @@ -12587,7 +12603,7 @@ is to prohibit all cases of variables declared without a specific initializer (including the case of OUT scalar parameters). @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1d9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1da} @subsection No_Delay @@ -12597,7 +12613,7 @@ initializer (including the case of OUT scalar parameters). delay statements and no semantic dependences on package Calendar. @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1da} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1db} @subsection No_Dependence @@ -12640,7 +12656,7 @@ to support specific constructs of the language. Here are some examples: @end itemize @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1db} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1dc} @subsection No_Direct_Boolean_Operators @@ -12653,7 +12669,7 @@ protocol requires the use of short-circuit (and then, or else) forms for all composite boolean operations. @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1dc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1dd} @subsection No_Dispatch @@ -12663,7 +12679,7 @@ composite boolean operations. occurrences of @code{T'Class}, for any (tagged) subtype @code{T}. @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1dd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1de} @subsection No_Dispatching_Calls @@ -12724,7 +12740,7 @@ end Example; @end example @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1de} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1df} @subsection No_Dynamic_Attachment @@ -12743,7 +12759,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1df} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1e0} @subsection No_Dynamic_Priorities @@ -12752,7 +12768,7 @@ warnings on obsolescent features are activated). [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities. @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1e0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1e1} @subsection No_Entry_Calls_In_Elaboration_Code @@ -12764,7 +12780,7 @@ restriction, the compiler can assume that no code past an accept statement in a task can be executed at elaboration time. @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1e1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1e2} @subsection No_Enumeration_Maps @@ -12775,7 +12791,7 @@ enumeration maps are used (that is Image and Value attributes applied to enumeration types). @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1e3} @subsection No_Exception_Handlers @@ -12800,7 +12816,7 @@ statement generated by the compiler). The Line parameter when nonzero represents the line number in the source program where the raise occurs. @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1e4} @subsection No_Exception_Propagation @@ -12817,7 +12833,7 @@ the package GNAT.Current_Exception is not permitted, and reraise statements (raise with no operand) are not permitted. @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1e5} @subsection No_Exception_Registration @@ -12831,7 +12847,7 @@ code is simplified by omitting the otherwise-required global registration of exceptions when they are declared. @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1e6} @subsection No_Exceptions @@ -12842,7 +12858,7 @@ raise statements and no exception handlers and also suppresses the generation of language-defined run-time checks. @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1e7} @subsection No_Finalization @@ -12883,7 +12899,7 @@ object or a nested component, either declared on the stack or on the heap. The deallocation of a controlled object no longer finalizes its contents. @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1e8} @subsection No_Fixed_Point @@ -12893,7 +12909,7 @@ deallocation of a controlled object no longer finalizes its contents. occurrences of fixed point types and operations. @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1e9} @subsection No_Floating_Point @@ -12903,7 +12919,7 @@ occurrences of fixed point types and operations. occurrences of floating point types and operations. @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1e9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1ea} @subsection No_Implicit_Conditionals @@ -12919,7 +12935,7 @@ normal manner. Constructs generating implicit conditionals include comparisons of composite objects and the Max/Min attributes. @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1ea} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1eb} @subsection No_Implicit_Dynamic_Code @@ -12949,7 +12965,7 @@ foreign-language convention; primitive operations of nested tagged types. @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1eb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1ec} @subsection No_Implicit_Heap_Allocations @@ -12958,7 +12974,7 @@ types. [RM D.7] No constructs are allowed to cause implicit heap allocation. @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ec} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1ed} @subsection No_Implicit_Protected_Object_Allocations @@ -12968,7 +12984,7 @@ types. protected object. @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1ed} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1ee} @subsection No_Implicit_Task_Allocations @@ -12977,7 +12993,7 @@ protected object. [GNAT] No constructs are allowed to cause implicit heap allocation of a task. @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ee} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1ef} @subsection No_Initialize_Scalars @@ -12989,7 +13005,7 @@ code, and in particular eliminates dummy null initialization routines that are otherwise generated for some record and array types. @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1ef} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1f0} @subsection No_IO @@ -13000,7 +13016,7 @@ dependences on any of the library units Sequential_IO, Direct_IO, Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO. @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1f0} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1f1} @subsection No_Local_Allocators @@ -13011,7 +13027,7 @@ occurrences of an allocator in subprograms, generic subprograms, tasks, and entry bodies. @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1f1} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1f2} @subsection No_Local_Protected_Objects @@ -13021,7 +13037,7 @@ and entry bodies. only declared at the library level. @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f2} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1f3} @subsection No_Local_Tagged_Types @@ -13031,7 +13047,7 @@ only declared at the library level. declared at the library level. @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f3} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1f4} @subsection No_Local_Timing_Events @@ -13041,7 +13057,7 @@ declared at the library level. declared at the library level. @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f4} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1f5} @subsection No_Long_Long_Integers @@ -13053,7 +13069,7 @@ implicit base type is Long_Long_Integer, and modular types whose size exceeds Long_Integer’Size. @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f5} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1f6} @subsection No_Multiple_Elaboration @@ -13069,7 +13085,7 @@ possible, including non-Ada main programs and Stand Alone libraries, are not permitted and will be diagnosed by the binder. @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f6} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1f7} @subsection No_Nested_Finalization @@ -13078,7 +13094,7 @@ permitted and will be diagnosed by the binder. [RM D.7] All objects requiring finalization are declared at the library level. @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f7} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1f8} @subsection No_Protected_Type_Allocators @@ -13088,7 +13104,7 @@ permitted and will be diagnosed by the binder. expressions that attempt to allocate protected objects. @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f8} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1f9} @subsection No_Protected_Types @@ -13098,7 +13114,7 @@ expressions that attempt to allocate protected objects. declarations of protected types or protected objects. @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1f9} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1fa} @subsection No_Recursion @@ -13108,7 +13124,7 @@ declarations of protected types or protected objects. part of its execution. @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1fa} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1fb} @subsection No_Reentrancy @@ -13118,7 +13134,7 @@ part of its execution. two tasks at the same time. @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1fb} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1fc} @subsection No_Relative_Delay @@ -13129,7 +13145,7 @@ relative statements and prevents expressions such as @code{delay 1.23;} from appearing in source code. @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fc} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1fd} @subsection No_Requeue_Statements @@ -13147,7 +13163,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on oNobsolescent features are activated). @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fd} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1fe} @subsection No_Secondary_Stack @@ -13160,7 +13176,7 @@ stack is used to implement functions returning unconstrained objects secondary stacks for tasks (excluding the environment task) at run time. @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1fe} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ff} @subsection No_Select_Statements @@ -13170,7 +13186,7 @@ secondary stacks for tasks (excluding the environment task) at run time. kind are permitted, that is the keyword @code{select} may not appear. @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ff} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{200} @subsection No_Specific_Termination_Handlers @@ -13180,7 +13196,7 @@ kind are permitted, that is the keyword @code{select} may not appear. or to Ada.Task_Termination.Specific_Handler. @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{200} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{201} @subsection No_Specification_of_Aspect @@ -13191,7 +13207,7 @@ specification, attribute definition clause, or pragma is given for a given aspect. @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{201} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{202} @subsection No_Standard_Allocators_After_Elaboration @@ -13203,7 +13219,7 @@ library items of the partition has completed. Otherwise, Storage_Error is raised. @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{202} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{203} @subsection No_Standard_Storage_Pools @@ -13215,7 +13231,7 @@ have an explicit Storage_Pool attribute defined specifying a user-defined storage pool. @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{203} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{204} @subsection No_Stream_Optimizations @@ -13228,7 +13244,7 @@ due to their superior performance. When this restriction is in effect, the compiler performs all IO operations on a per-character basis. @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{204} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{205} @subsection No_Streams @@ -13255,7 +13271,7 @@ configuration pragmas to avoid exposing entity names at binary level for the entire partition. @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{205} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{206} @subsection No_Tagged_Type_Registration @@ -13270,7 +13286,7 @@ are declared. This restriction may be necessary in order to also apply the No_Elaboration_Code restriction. @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{206} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{207} @subsection No_Task_Allocators @@ -13280,7 +13296,7 @@ the No_Elaboration_Code restriction. or types containing task subcomponents. @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{207} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{208} @subsection No_Task_At_Interrupt_Priority @@ -13292,7 +13308,7 @@ a consequence, the tasks are always created with a priority below that an interrupt priority. @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{208} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{209} @subsection No_Task_Attributes_Package @@ -13309,7 +13325,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{209} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{20a} @subsection No_Task_Hierarchy @@ -13319,7 +13335,7 @@ warnings on obsolescent features are activated). directly on the environment task of the partition. @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{20a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{20b} @subsection No_Task_Termination @@ -13328,7 +13344,7 @@ directly on the environment task of the partition. [RM D.7] Tasks that terminate are erroneous. @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{20b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{20c} @subsection No_Tasking @@ -13341,7 +13357,7 @@ and cause an error message to be output either by the compiler or binder. @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{20d} @subsection No_Terminate_Alternatives @@ -13350,7 +13366,7 @@ binder. [RM D.7] There are no selective accepts with terminate alternatives. @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{20e} @subsection No_Unchecked_Access @@ -13360,7 +13376,7 @@ binder. occurrences of the Unchecked_Access attribute. @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{20f} @subsection No_Unchecked_Conversion @@ -13370,7 +13386,7 @@ occurrences of the Unchecked_Access attribute. dependences on the predefined generic function Unchecked_Conversion. @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{20f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{210} @subsection No_Unchecked_Deallocation @@ -13380,7 +13396,7 @@ dependences on the predefined generic function Unchecked_Conversion. dependences on the predefined generic procedure Unchecked_Deallocation. @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{210} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{211} @subsection No_Use_Of_Attribute @@ -13390,7 +13406,7 @@ dependences on the predefined generic procedure Unchecked_Deallocation. earlier versions of Ada. @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{211} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{212} @subsection No_Use_Of_Entity @@ -13410,7 +13426,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line @end example @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{212} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{213} @subsection No_Use_Of_Pragma @@ -13420,7 +13436,7 @@ No_Use_Of_Entity => Ada.Text_IO.Put_Line earlier versions of Ada. @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{213} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{214} @subsection Pure_Barriers @@ -13471,7 +13487,7 @@ but still ensures absence of side effects, exceptions, and recursion during the evaluation of the barriers. @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{214} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{215} @subsection Simple_Barriers @@ -13490,7 +13506,7 @@ compatibility purposes (and a warning will be generated for its use if warnings on obsolescent features are activated). @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{215} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{216} @subsection Static_Priorities @@ -13501,7 +13517,7 @@ are static, and that there are no dependences on the package @code{Ada.Dynamic_Priorities}. @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{216} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{217} @subsection Static_Storage_Size @@ -13511,7 +13527,7 @@ are static, and that there are no dependences on the package in a Storage_Size pragma or attribute definition clause is static. @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{217}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{218} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{218}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{219} @section Program Unit Level Restrictions @@ -13542,7 +13558,7 @@ other compilation units in the partition. @end menu @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{219} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{21a} @subsection No_Elaboration_Code @@ -13598,7 +13614,7 @@ associated with the unit. This counter is typically used to check for access before elaboration and to control multiple elaboration attempts. @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{21a} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{21b} @subsection No_Dynamic_Accessibility_Checks @@ -13647,7 +13663,7 @@ In all other cases, the level of T is as defined by the existing rules of Ada. @end itemize @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{21b} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{21c} @subsection No_Dynamic_Sized_Objects @@ -13665,7 +13681,7 @@ access discriminants. It is often a good idea to combine this restriction with No_Secondary_Stack. @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21c} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{21d} @subsection No_Entry_Queue @@ -13678,7 +13694,7 @@ checked at compile time. A program execution is erroneous if an attempt is made to queue a second task on such an entry. @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21d} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{21e} @subsection No_Implementation_Aspect_Specifications @@ -13689,7 +13705,7 @@ GNAT-defined aspects are present. With this restriction, the only aspects that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21e} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{21f} @subsection No_Implementation_Attributes @@ -13701,7 +13717,7 @@ attributes that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{21f} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{220} @subsection No_Implementation_Identifiers @@ -13712,7 +13728,7 @@ implementation-defined identifiers (marked with pragma Implementation_Defined) occur within language-defined packages. @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{220} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{221} @subsection No_Implementation_Pragmas @@ -13723,7 +13739,7 @@ GNAT-defined pragmas are present. With this restriction, the only pragmas that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{221} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{222} @subsection No_Implementation_Restrictions @@ -13735,7 +13751,7 @@ are present. With this restriction, the only other restriction identifiers that can be used are those defined in the Ada Reference Manual. @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{222} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{223} @subsection No_Implementation_Units @@ -13746,7 +13762,7 @@ mention in the context clause of any implementation-defined descendants of packages Ada, Interfaces, or System. @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{223} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{224} @subsection No_Implicit_Aliasing @@ -13761,7 +13777,7 @@ to be aliased, and in such cases, it can always be replaced by the standard attribute Unchecked_Access which is preferable. @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{224} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{225} @subsection No_Implicit_Loops @@ -13778,7 +13794,7 @@ arrays larger than about 5000 scalar components. Note that if this restriction is set in the spec of a package, it will not apply to its body. @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{225} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{226} @subsection No_Obsolescent_Features @@ -13788,7 +13804,7 @@ is set in the spec of a package, it will not apply to its body. features are used, as defined in Annex J of the Ada Reference Manual. @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{226} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{227} @subsection No_Wide_Characters @@ -13802,7 +13818,7 @@ appear in the program (that is literals representing characters not in type @code{Character}). @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{227} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{228} @subsection Static_Dispatch_Tables @@ -13812,7 +13828,7 @@ type @code{Character}). associated with dispatch tables can be placed in read-only memory. @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions -@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{228} +@anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{229} @subsection SPARK_05 @@ -13835,7 +13851,7 @@ gnatprove -P project.gpr --mode=check_all @end example @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top -@anchor{gnat_rm/implementation_advice doc}@anchor{229}@anchor{gnat_rm/implementation_advice id1}@anchor{22a}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} +@anchor{gnat_rm/implementation_advice doc}@anchor{22a}@anchor{gnat_rm/implementation_advice id1}@anchor{22b}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a} @chapter Implementation Advice @@ -13933,7 +13949,7 @@ case the text describes what GNAT does and why. @end menu @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{22b} +@anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{22c} @section RM 1.1.3(20): Error Detection @@ -13950,7 +13966,7 @@ or diagnosed at compile time. @geindex Child Units @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22c} +@anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{22d} @section RM 1.1.3(31): Child Units @@ -13966,7 +13982,7 @@ Followed. @geindex Bounded errors @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22d} +@anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{22e} @section RM 1.1.5(12): Bounded Errors @@ -13983,7 +13999,7 @@ runtime. @geindex Pragmas @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice -@anchor{gnat_rm/implementation_advice id2}@anchor{22e}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{22f} +@anchor{gnat_rm/implementation_advice id2}@anchor{22f}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{230} @section RM 2.8(16): Pragmas @@ -14096,7 +14112,7 @@ that this advice not be followed. For details see @ref{7,,Implementation Defined Pragmas}. @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{230} +@anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{231} @section RM 2.8(17-19): Pragmas @@ -14117,14 +14133,14 @@ replacing @code{library_items}.” @end itemize @end quotation -See @ref{22f,,RM 2.8(16); Pragmas}. +See @ref{230,,RM 2.8(16); Pragmas}. @geindex Character Sets @geindex Alternative Character Sets @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{231} +@anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{232} @section RM 3.5.2(5): Alternative Character Sets @@ -14152,7 +14168,7 @@ there is no such restriction. @geindex Integer types @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{232} +@anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{233} @section RM 3.5.4(28): Integer Types @@ -14171,7 +14187,7 @@ are supported for convenient interface to C, and so that all hardware types of the machine are easily available. @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{233} +@anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{234} @section RM 3.5.4(29): Integer Types @@ -14187,7 +14203,7 @@ Followed. @geindex Enumeration values @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{234} +@anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{235} @section RM 3.5.5(8): Enumeration Values @@ -14207,7 +14223,7 @@ Followed. @geindex Float types @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{235} +@anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{236} @section RM 3.5.7(17): Float Types @@ -14237,7 +14253,7 @@ is a software rather than a hardware format. @geindex multidimensional @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{236} +@anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{237} @section RM 3.6.2(11): Multidimensional Arrays @@ -14255,7 +14271,7 @@ Followed. @geindex Duration'Small @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{237} +@anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{238} @section RM 9.6(30-31): Duration’Small @@ -14276,7 +14292,7 @@ it need not be the same time base as used for @code{Calendar.Clock}.” Followed. @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{238} +@anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{239} @section RM 10.2.1(12): Consistent Representation @@ -14298,7 +14314,7 @@ advice without severely impacting efficiency of execution. @geindex Exception information @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{239} +@anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{23a} @section RM 11.4.1(19): Exception Information @@ -14329,7 +14345,7 @@ Pragma @code{Discard_Names}. @geindex suppression of @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{23a} +@anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{23b} @section RM 11.5(28): Suppression of Checks @@ -14344,7 +14360,7 @@ Followed. @geindex Representation clauses @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{23b} +@anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{23c} @section RM 13.1 (21-24): Representation Clauses @@ -14396,7 +14412,7 @@ Followed. @geindex Packed types @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23c} +@anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{23d} @section RM 13.2(6-8): Packed Types @@ -14427,7 +14443,7 @@ subcomponent of the packed type. @geindex Address clauses @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23d} +@anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{23e} @section RM 13.3(14-19): Address Clauses @@ -14480,7 +14496,7 @@ Followed. @geindex Alignment clauses @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23e} +@anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{23f} @section RM 13.3(29-35): Alignment Clauses @@ -14537,7 +14553,7 @@ Followed. @geindex Size clauses @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{23f} +@anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{240} @section RM 13.3(42-43): Size Clauses @@ -14555,7 +14571,7 @@ object’s @code{Alignment} (if the @code{Alignment} is nonzero).” Followed. @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{240} +@anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{241} @section RM 13.3(50-56): Size Clauses @@ -14606,7 +14622,7 @@ Followed. @geindex Component_Size clauses @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{241} +@anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{242} @section RM 13.3(71-73): Component Size Clauses @@ -14640,7 +14656,7 @@ Followed. @geindex enumeration @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{242} +@anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{243} @section RM 13.4(9-10): Enumeration Representation Clauses @@ -14662,7 +14678,7 @@ Followed. @geindex records @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{243} +@anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{244} @section RM 13.5.1(17-22): Record Representation Clauses @@ -14722,7 +14738,7 @@ and all mentioned features are implemented. @geindex Storage place attributes @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{244} +@anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{245} @section RM 13.5.2(5): Storage Place Attributes @@ -14742,7 +14758,7 @@ Followed. There are no such components in GNAT. @geindex Bit ordering @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{245} +@anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{246} @section RM 13.5.3(7-8): Bit Ordering @@ -14760,7 +14776,7 @@ Followed. @geindex as private type @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{246} +@anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{247} @section RM 13.7(37): Address as Private @@ -14778,7 +14794,7 @@ Followed. @geindex operations of @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{247} +@anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{248} @section RM 13.7.1(16): Address Operations @@ -14796,7 +14812,7 @@ operation raises @code{Program_Error}, since all operations make sense. @geindex Unchecked conversion @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{248} +@anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{249} @section RM 13.9(14-17): Unchecked Conversion @@ -14840,7 +14856,7 @@ Followed. @geindex implicit @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{249} +@anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{24a} @section RM 13.11(23-25): Implicit Heap Usage @@ -14891,7 +14907,7 @@ Followed. @geindex Unchecked deallocation @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{24a} +@anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{24b} @section RM 13.11.2(17): Unchecked Deallocation @@ -14906,7 +14922,7 @@ Followed. @geindex Stream oriented attributes @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{24b} +@anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{24c} @section RM 13.13.2(1.6): Stream Oriented Attributes @@ -14937,7 +14953,7 @@ scalar types. This XDR alternative can be enabled via the binder switch -xdr. @geindex Stream oriented attributes @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24c} +@anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{24d} @section RM A.1(52): Names of Predefined Numeric Types @@ -14955,7 +14971,7 @@ Followed. @geindex Ada.Characters.Handling @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24d} +@anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{24e} @section RM A.3.2(49): @code{Ada.Characters.Handling} @@ -14972,7 +14988,7 @@ Followed. GNAT provides no such localized definitions. @geindex Bounded-length strings @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24e} +@anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{24f} @section RM A.4.4(106): Bounded-Length String Handling @@ -14987,7 +15003,7 @@ Followed. No implicit pointers or dynamic allocation are used. @geindex Random number generation @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{24f} +@anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{250} @section RM A.5.2(46-47): Random Number Generation @@ -15016,7 +15032,7 @@ condition here to hold true. @geindex Get_Immediate @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{250} +@anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{251} @section RM A.10.7(23): @code{Get_Immediate} @@ -15040,7 +15056,7 @@ this functionality. @geindex Containers @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{251} +@anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{252} @section RM A.18: @code{Containers} @@ -15061,7 +15077,7 @@ follow the implementation advice. @geindex Export @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{252} +@anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{253} @section RM B.1(39-41): Pragma @code{Export} @@ -15109,7 +15125,7 @@ Followed. @geindex Interfaces @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{253} +@anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{254} @section RM B.2(12-13): Package @code{Interfaces} @@ -15139,7 +15155,7 @@ Followed. GNAT provides all the packages described in this section. @geindex interfacing with @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{254} +@anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{255} @section RM B.3(63-71): Interfacing with C @@ -15227,7 +15243,7 @@ Followed. @geindex interfacing with @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{255} +@anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{256} @section RM B.4(95-98): Interfacing with COBOL @@ -15268,7 +15284,7 @@ Followed. @geindex interfacing with @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{256} +@anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{257} @section RM B.5(22-26): Interfacing with Fortran @@ -15319,7 +15335,7 @@ Followed. @geindex Machine operations @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{257} +@anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{258} @section RM C.1(3-5): Access to Machine Operations @@ -15354,7 +15370,7 @@ object that is specified as exported.” Followed. @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{258} +@anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{259} @section RM C.1(10-16): Access to Machine Operations @@ -15415,7 +15431,7 @@ Followed on any target supporting such operations. @geindex Interrupt support @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{259} +@anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{25a} @section RM C.3(28): Interrupt Support @@ -15433,7 +15449,7 @@ of interrupt blocking. @geindex Protected procedure handlers @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{25a} +@anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{25b} @section RM C.3.1(20-21): Protected Procedure Handlers @@ -15459,7 +15475,7 @@ Followed. Compile time warnings are given when possible. @geindex Interrupts @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{25b} +@anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{25c} @section RM C.3.2(25): Package @code{Interrupts} @@ -15477,7 +15493,7 @@ Followed. @geindex Pre-elaboration requirements @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25c} +@anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{25d} @section RM C.4(14): Pre-elaboration Requirements @@ -15493,7 +15509,7 @@ Followed. Executable code is generated in some cases, e.g., loops to initialize large arrays. @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25d} +@anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{25e} @section RM C.5(8): Pragma @code{Discard_Names} @@ -15511,7 +15527,7 @@ Followed. @geindex Task_Attributes @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25e} +@anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{25f} @section RM C.7.2(30): The Package Task_Attributes @@ -15532,7 +15548,7 @@ Not followed. This implementation is not targeted to such a domain. @geindex Locking Policies @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{25f} +@anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{260} @section RM D.3(17): Locking Policies @@ -15549,7 +15565,7 @@ whose names (@code{Inheritance_Locking} and @geindex Entry queuing policies @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{260} +@anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{261} @section RM D.4(16): Entry Queuing Policies @@ -15564,7 +15580,7 @@ Followed. No such implementation-defined queuing policies exist. @geindex Preemptive abort @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{261} +@anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{262} @section RM D.6(9-10): Preemptive Abort @@ -15590,7 +15606,7 @@ Followed. @geindex Tasking restrictions @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{262} +@anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{263} @section RM D.7(21): Tasking Restrictions @@ -15609,7 +15625,7 @@ pragma @code{Profile (Restricted)} for more details. @geindex monotonic @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{263} +@anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{264} @section RM D.8(47-49): Monotonic Time @@ -15644,7 +15660,7 @@ Followed. @geindex PCS @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{264} +@anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{265} @section RM E.5(28-29): Partition Communication Subsystem @@ -15672,7 +15688,7 @@ GNAT. @geindex COBOL support @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{265} +@anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{266} @section RM F(7): COBOL Support @@ -15692,7 +15708,7 @@ Followed. @geindex Decimal radix support @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{266} +@anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{267} @section RM F.1(2): Decimal Radix Support @@ -15708,7 +15724,7 @@ representations. @geindex Numerics @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{267} +@anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{268} @section RM G: Numerics @@ -15728,7 +15744,7 @@ Followed. @geindex Complex types @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{268} +@anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{269} @section RM G.1.1(56-58): Complex Types @@ -15790,7 +15806,7 @@ Followed. @geindex Complex elementary functions @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{269} +@anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{26a} @section RM G.1.2(49): Complex Elementary Functions @@ -15812,7 +15828,7 @@ Followed. @geindex Accuracy requirements @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{26a} +@anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{26b} @section RM G.2.4(19): Accuracy Requirements @@ -15836,7 +15852,7 @@ Followed. @geindex complex arithmetic @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{26b} +@anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{26c} @section RM G.2.6(15): Complex Arithmetic Accuracy @@ -15854,7 +15870,7 @@ Followed. @geindex Sequential elaboration policy @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice -@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26c} +@anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{26d} @section RM H.6(15/2): Pragma Partition_Elaboration_Policy @@ -15869,7 +15885,7 @@ immediately terminated.” Not followed. @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top -@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26d}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26e}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} +@anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{26e}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{26f}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b} @chapter Implementation Defined Characteristics @@ -16718,7 +16734,7 @@ See separate section on data representations. such aspects and the legality rules for such aspects. See 13.1.1(38).” @end itemize -See @ref{12a,,Implementation Defined Aspects}. +See @ref{12b,,Implementation Defined Aspects}. @itemize * @@ -17162,7 +17178,7 @@ When the @code{Pattern} parameter is not the null string, it is interpreted according to the syntax of regular expressions as defined in the @code{GNAT.Regexp} package. -See @ref{26f,,GNAT.Regexp (g-regexp.ads)}. +See @ref{270,,GNAT.Regexp (g-regexp.ads)}. @itemize * @@ -18260,7 +18276,7 @@ Information on those subjects is not yet available. Execution is erroneous in that case. @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top -@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} +@anchor{gnat_rm/intrinsic_subprograms doc}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c} @chapter Intrinsic Subprograms @@ -18298,7 +18314,7 @@ Ada standard does not require Ada compilers to implement this feature. @end menu @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{273} +@anchor{gnat_rm/intrinsic_subprograms id2}@anchor{273}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{274} @section Intrinsic Operators @@ -18329,7 +18345,7 @@ It is also possible to specify such operators for private types, if the full views are appropriate arithmetic types. @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{275} +@anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{275}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{276} @section Compilation_ISO_Date @@ -18343,7 +18359,7 @@ application program should simply call the function the current compilation (in local time format YYYY-MM-DD). @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{276}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{277} +@anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{277}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{278} @section Compilation_Date @@ -18353,7 +18369,7 @@ Same as Compilation_ISO_Date, except the string is in the form MMM DD YYYY. @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{278}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{279} +@anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{279}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{27a} @section Compilation_Time @@ -18367,7 +18383,7 @@ application program should simply call the function the current compilation (in local time format HH:MM:SS). @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{27a}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{27b} +@anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{27b}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{27c} @section Enclosing_Entity @@ -18381,7 +18397,7 @@ application program should simply call the function the current subprogram, package, task, entry, or protected subprogram. @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27d} +@anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{27d}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{27e} @section Exception_Information @@ -18395,7 +18411,7 @@ so an application program should simply call the function the exception information associated with the current exception. @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{27f} +@anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{27f}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{280} @section Exception_Message @@ -18409,7 +18425,7 @@ so an application program should simply call the function the message associated with the current exception. @node Exception_Name,File,Exception_Message,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{281} +@anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{281}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{282} @section Exception_Name @@ -18423,7 +18439,7 @@ so an application program should simply call the function the name of the current exception. @node File,Line,Exception_Name,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms file}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{283} +@anchor{gnat_rm/intrinsic_subprograms file}@anchor{283}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{284} @section File @@ -18437,7 +18453,7 @@ application program should simply call the function file. @node Line,Shifts and Rotates,File,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{285} +@anchor{gnat_rm/intrinsic_subprograms id11}@anchor{285}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{286} @section Line @@ -18451,7 +18467,7 @@ application program should simply call the function source line. @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{287} +@anchor{gnat_rm/intrinsic_subprograms id12}@anchor{287}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{288} @section Shifts and Rotates @@ -18494,7 +18510,7 @@ corresponding operator for modular type. In particular, shifting a negative number may change its sign bit to positive. @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms -@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{288}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{289} +@anchor{gnat_rm/intrinsic_subprograms id13}@anchor{289}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{28a} @section Source_Location @@ -18508,7 +18524,7 @@ application program should simply call the function source file location. @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top -@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} +@anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d} @chapter Representation Clauses and Pragmas @@ -18554,7 +18570,7 @@ and this section describes the additional capabilities provided. @end menu @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28d} +@anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{28d}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{28e} @section Alignment Clauses @@ -18576,7 +18592,7 @@ For elementary types, the alignment is the minimum of the actual size of objects of the type divided by @code{Storage_Unit}, and the maximum alignment supported by the target. (This maximum alignment is given by the GNAT-specific attribute -@code{Standard'Maximum_Alignment}; see @ref{19c,,Attribute Maximum_Alignment}.) +@code{Standard'Maximum_Alignment}; see @ref{19d,,Attribute Maximum_Alignment}.) @geindex Maximum_Alignment attribute @@ -18685,7 +18701,7 @@ assumption is non-portable, and other compilers may choose different alignments for the subtype @code{RS}. @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{28f} +@anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{28f}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{290} @section Size Clauses @@ -18762,7 +18778,7 @@ if it is known that a Size value can be accommodated in an object of type Integer. @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{291} +@anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{291}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{292} @section Storage_Size Clauses @@ -18835,7 +18851,7 @@ Of course in practice, there will not be any explicit allocators in the case of such an access declaration. @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{293} +@anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{293}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{294} @section Size of Variant Record Objects @@ -18945,7 +18961,7 @@ the maximum size, regardless of the current variant value, the variant value. @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{295} +@anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{296} @section Biased Representation @@ -18983,7 +18999,7 @@ biased representation can be used for all discrete types except for enumeration types for which a representation clause is given. @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{297} +@anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{298} @section Value_Size and Object_Size Clauses @@ -19299,7 +19315,7 @@ definition clause forces biased representation. This warning can be turned off using @code{-gnatw.B}. @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{299} +@anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{29a} @section Component_Size Clauses @@ -19347,7 +19363,7 @@ and a pragma Pack for the same array type. if such duplicate clauses are given, the pragma Pack will be ignored. @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{29b} +@anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{29c} @section Bit_Order Clauses @@ -19453,7 +19469,7 @@ if desired. The following section contains additional details regarding the issue of byte ordering. @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29d} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{29d}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{29e} @section Effect of Bit_Order on Byte Ordering @@ -19710,7 +19726,7 @@ to set the boolean constant @code{Master_Byte_First} in an appropriate manner. @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{29f} +@anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{29f}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2a0} @section Pragma Pack for Arrays @@ -19830,7 +19846,7 @@ Here 31-bit packing is achieved as required, and no warning is generated, since in this case the programmer intention is clear. @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2a1} +@anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2a1}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2a2} @section Pragma Pack for Records @@ -19914,7 +19930,7 @@ array that is longer than 64 bits, so it is itself non-packable on boundary, and takes an integral number of bytes, i.e., 72 bits. @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a3} +@anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2a3}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2a4} @section Record Representation Clauses @@ -19993,7 +20009,7 @@ end record; @end example @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a5} +@anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2a5}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2a6} @section Handling of Records with Holes @@ -20069,7 +20085,7 @@ for Hrec'Size use 64; @end example @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a7} +@anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2a7}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2a8} @section Enumeration Clauses @@ -20112,7 +20128,7 @@ the overhead of converting representation values to the corresponding positional values, (i.e., the value delivered by the @code{Pos} attribute). @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2a9} +@anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2a9}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2aa} @section Address Clauses @@ -20452,7 +20468,7 @@ then the program compiles without the warning and when run will generate the output @code{X was not clobbered}. @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2ab} +@anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2ab}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2ac} @section Use of Address Clauses for Memory-Mapped I/O @@ -20510,7 +20526,7 @@ provides the pragma @code{Volatile_Full_Access} which can be used in lieu of pragma @code{Atomic} and will give the additional guarantee. @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ad} +@anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2ad}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2ae} @section Effect of Convention on Representation @@ -20588,7 +20604,7 @@ when one of these values is read, any nonzero value is treated as True. @end itemize @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2af} +@anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2af}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2b0} @section Conventions and Anonymous Access Types @@ -20664,7 +20680,7 @@ package ConvComp is @end example @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas -@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2b0}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2b1} +@anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2b1}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2b2} @section Determining the Representations chosen by GNAT @@ -20816,7 +20832,7 @@ generated by the compiler into the original source to fix and guarantee the actual representation to be used. @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top -@anchor{gnat_rm/standard_library_routines doc}@anchor{2b2}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b3}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} +@anchor{gnat_rm/standard_library_routines doc}@anchor{2b3}@anchor{gnat_rm/standard_library_routines id1}@anchor{2b4}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e} @chapter Standard Library Routines @@ -21640,7 +21656,7 @@ For packages in Interfaces and System, all the RM defined packages are available in GNAT, see the Ada 2012 RM for full details. @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top -@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} +@anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f} @chapter The Implementation of Standard I/O @@ -21692,7 +21708,7 @@ these additional facilities are also described in this chapter. @end menu @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2b8} @section Standard I/O Packages @@ -21763,7 +21779,7 @@ flush the common I/O streams and in particular Standard_Output before elaborating the Ada code. @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2b9} +@anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2ba} @section FORM Strings @@ -21789,7 +21805,7 @@ unrecognized keyword appears in a form string, it is silently ignored and not considered invalid. @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2bb} +@anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2bc} @section Direct_IO @@ -21808,7 +21824,7 @@ There is no limit on the size of Direct_IO files, they are expanded as necessary to accommodate whatever records are written to the file. @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2bd} +@anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2be} @section Sequential_IO @@ -21855,7 +21871,7 @@ using Stream_IO, and this is the preferred mechanism. In particular, the above program fragment rewritten to use Stream_IO will work correctly. @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2bf} +@anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2c0} @section Text_IO @@ -21938,7 +21954,7 @@ the file. @end menu @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2c1} +@anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2c2} @subsection Stream Pointer Positioning @@ -21974,7 +21990,7 @@ between two Ada files, then the difference may be observable in some situations. @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c3} +@anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2c4} @subsection Reading and Writing Non-Regular Files @@ -22025,7 +22041,7 @@ to read data past that end of file indication, until another end of file indication is entered. @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c5} +@anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2c6} @subsection Get_Immediate @@ -22043,7 +22059,7 @@ possible), it is undefined whether the FF character will be treated as a page mark. @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2c8} @subsection Treating Text_IO Files as Streams @@ -22059,7 +22075,7 @@ skipped and the effect is similar to that described above for @code{Get_Immediate}. @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2c9} +@anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2ca} @subsection Text_IO Extensions @@ -22087,7 +22103,7 @@ the string is to be read. @end itemize @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2cb} +@anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2cc} @subsection Text_IO Facilities for Unbounded Strings @@ -22135,7 +22151,7 @@ files @code{a-szuzti.ads} and @code{a-szuzti.adb} provides similar extended @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings. @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2cd} +@anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2ce} @section Wide_Text_IO @@ -22382,12 +22398,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2cf} +@anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2d0} @subsection Stream Pointer Positioning @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2bf,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2c0,,Text_IO}). There is one additional case: If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22406,7 +22422,7 @@ to a normal program using @code{Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2d1} +@anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2d2} @subsection Reading and Writing Non-Regular Files @@ -22417,7 +22433,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d3} +@anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2d4} @section Wide_Wide_Text_IO @@ -22586,12 +22602,12 @@ input also causes Constraint_Error to be raised. @end menu @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2d5}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2d6} @subsection Stream Pointer Positioning @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling -of stream pointer positioning (@ref{2bf,,Text_IO}). There is one additional +of stream pointer positioning (@ref{2c0,,Text_IO}). There is one additional case: If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the @@ -22610,7 +22626,7 @@ to a normal program using @code{Wide_Wide_Text_IO}. However, this discrepancy can be observed if the wide text file shares a stream with another file. @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO -@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2d7}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2d8} @subsection Reading and Writing Non-Regular Files @@ -22621,7 +22637,7 @@ treated as data characters), and @code{End_Of_Page} always returns it is possible to read beyond an end of file. @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2d9} +@anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2d9}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2da} @section Stream_IO @@ -22643,7 +22659,7 @@ manner described for stream attributes. @end itemize @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2db} +@anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2db}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2dc} @section Text Translation @@ -22677,7 +22693,7 @@ mode. (corresponds to_O_U16TEXT). @end itemize @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2dd} +@anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2dd}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2de} @section Shared Files @@ -22740,7 +22756,7 @@ heterogeneous input-output. Although this approach will work in GNAT if for this purpose (using the stream attributes) @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2df} +@anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2df}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2e0} @section Filenames encoding @@ -22780,7 +22796,7 @@ platform. On the other Operating Systems the run-time is supporting UTF-8 natively. @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2e1} +@anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2e1}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2e2} @section File content encoding @@ -22813,7 +22829,7 @@ Unicode 8-bit encoding This encoding is only supported on the Windows platform. @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e3} +@anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2e3}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2e4} @section Open Modes @@ -22916,7 +22932,7 @@ subsequently requires switching from reading to writing or vice-versa, then the file is reopened in @code{r+} mode to permit the required operation. @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e5} +@anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2e5}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2e6} @section Operations on C Streams @@ -23076,7 +23092,7 @@ end Interfaces.C_Streams; @end example @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O -@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e6}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e7} +@anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2e7}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2e8} @section Interfacing to C Streams @@ -23169,7 +23185,7 @@ imported from a C program, allowing an Ada file to operate on an existing C file. @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top -@anchor{gnat_rm/the_gnat_library doc}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id1}@anchor{2e9}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} +@anchor{gnat_rm/the_gnat_library doc}@anchor{2e9}@anchor{gnat_rm/the_gnat_library id1}@anchor{2ea}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10} @chapter The GNAT Library @@ -23354,7 +23370,7 @@ of GNAT, and will generate a warning message. @end menu @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id2}@anchor{2eb} +@anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2eb}@anchor{gnat_rm/the_gnat_library id2}@anchor{2ec} @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads}) @@ -23371,7 +23387,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id3}@anchor{2ed} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2ed}@anchor{gnat_rm/the_gnat_library id3}@anchor{2ee} @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads}) @@ -23388,7 +23404,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id4}@anchor{2ef} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2ef}@anchor{gnat_rm/the_gnat_library id4}@anchor{2f0} @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads}) @@ -23405,7 +23421,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id5}@anchor{2f1} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2f1}@anchor{gnat_rm/the_gnat_library id5}@anchor{2f2} @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads}) @@ -23422,7 +23438,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f3} +@anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id6}@anchor{2f4} @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads}) @@ -23439,7 +23455,7 @@ is specifically authorized by the Ada Reference Manual (RM A.3.3(27)). @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f5} +@anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id7}@anchor{2f6} @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads}) @@ -23451,7 +23467,7 @@ This child of @code{Ada.Containers} defines a modified version of Indefinite_Holders that avoids heap allocation. @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f7} +@anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f7}@anchor{gnat_rm/the_gnat_library id8}@anchor{2f8} @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads}) @@ -23464,7 +23480,7 @@ provides a mechanism for obtaining environment values on systems where this concept makes sense. @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id9}@anchor{2f9} +@anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f9}@anchor{gnat_rm/the_gnat_library id9}@anchor{2fa} @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads}) @@ -23482,7 +23498,7 @@ to further calls to the subprograms in @code{Ada.Command_Line}. These calls will not see the removed argument. @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id10}@anchor{2fb} +@anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fb}@anchor{gnat_rm/the_gnat_library id10}@anchor{2fc} @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads}) @@ -23502,7 +23518,7 @@ Using a response file allow passing a set of arguments to an executable longer than the maximum allowed by the system on the command line. @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fd} +@anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fd}@anchor{gnat_rm/the_gnat_library id11}@anchor{2fe} @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads}) @@ -23517,7 +23533,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id12}@anchor{2ff} +@anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2ff}@anchor{gnat_rm/the_gnat_library id12}@anchor{300} @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads}) @@ -23531,7 +23547,7 @@ exception occurrence (@code{Null_Occurrence}) without raising an exception. @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id13}@anchor{301} +@anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id13}@anchor{302} @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads}) @@ -23545,7 +23561,7 @@ exceptions (hence the name last chance), and perform clean ups before terminating the program. Note that this subprogram never returns. @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id14}@anchor{303} +@anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id14}@anchor{304} @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads}) @@ -23558,7 +23574,7 @@ give a traceback array of addresses based on an exception occurrence. @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id15}@anchor{305} +@anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{305}@anchor{gnat_rm/the_gnat_library id15}@anchor{306} @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads}) @@ -23573,7 +23589,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id16}@anchor{307} +@anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id16}@anchor{308} @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads}) @@ -23588,7 +23604,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id17}@anchor{309} +@anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{309}@anchor{gnat_rm/the_gnat_library id17}@anchor{30a} @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads}) @@ -23605,7 +23621,7 @@ strings, avoiding the necessity for an intermediate operation with ordinary strings. @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id18}@anchor{30b} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30b}@anchor{gnat_rm/the_gnat_library id18}@anchor{30c} @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads}) @@ -23622,7 +23638,7 @@ wide strings, avoiding the necessity for an intermediate operation with ordinary wide strings. @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id19}@anchor{30d} +@anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id19}@anchor{30e} @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads}) @@ -23639,7 +23655,7 @@ wide wide strings, avoiding the necessity for an intermediate operation with ordinary wide wide strings. @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id20}@anchor{30f} +@anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id20}@anchor{310} @section @code{Ada.Task_Initialization} (@code{a-tasini.ads}) @@ -23651,7 +23667,7 @@ parameterless procedures. Note that such a handler is only invoked for those tasks activated after the handler is set. @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id21}@anchor{311} +@anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{311}@anchor{gnat_rm/the_gnat_library id21}@anchor{312} @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads}) @@ -23666,7 +23682,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id22}@anchor{313} +@anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id22}@anchor{314} @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads}) @@ -23681,7 +23697,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id23}@anchor{315} +@anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id23}@anchor{316} @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads}) @@ -23694,7 +23710,7 @@ This package provides subprograms that allow categorization of Wide_Character values according to Unicode categories. @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id24}@anchor{317} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{317}@anchor{gnat_rm/the_gnat_library id24}@anchor{318} @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads}) @@ -23709,7 +23725,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id25}@anchor{319} +@anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{319}@anchor{gnat_rm/the_gnat_library id25}@anchor{31a} @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads}) @@ -23724,7 +23740,7 @@ execution (for example a standard input file may be redefined to be interactive). @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id26}@anchor{31b} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31b}@anchor{gnat_rm/the_gnat_library id26}@anchor{31c} @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads}) @@ -23737,7 +23753,7 @@ This package provides subprograms that allow categorization of Wide_Wide_Character values according to Unicode categories. @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id27}@anchor{31d} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id27}@anchor{31e} @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads}) @@ -23752,7 +23768,7 @@ extracted from a file opened on the Ada side, and an Ada file can be constructed from a stream opened on the C side. @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id28}@anchor{31f} +@anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id28}@anchor{320} @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads}) @@ -23767,7 +23783,7 @@ change during execution (for example a standard input file may be redefined to be interactive). @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id29}@anchor{321} +@anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id29}@anchor{322} @section @code{GNAT.Altivec} (@code{g-altive.ads}) @@ -23780,7 +23796,7 @@ definitions of constants and types common to all the versions of the binding. @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id30}@anchor{323} +@anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id30}@anchor{324} @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads}) @@ -23791,7 +23807,7 @@ binding. This package provides the Vector/View conversion routines. @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id31}@anchor{325} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id31}@anchor{326} @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads}) @@ -23805,7 +23821,7 @@ library. The hard binding is provided as a separate package. This unit is common to both bindings. @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id32}@anchor{327} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id32}@anchor{328} @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads}) @@ -23817,7 +23833,7 @@ This package exposes the various vector types part of the Ada binding to AltiVec facilities. @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id33}@anchor{329} +@anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{329}@anchor{gnat_rm/the_gnat_library id33}@anchor{32a} @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads}) @@ -23832,7 +23848,7 @@ vector elements and provides a simple way to initialize vector objects. @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id34}@anchor{32b} +@anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id34}@anchor{32c} @section @code{GNAT.Array_Split} (@code{g-arrspl.ads}) @@ -23845,7 +23861,7 @@ an array wherever the separators appear, and provide direct access to the resulting slices. @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id35}@anchor{32d} +@anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32d}@anchor{gnat_rm/the_gnat_library id35}@anchor{32e} @section @code{GNAT.AWK} (@code{g-awk.ads}) @@ -23860,7 +23876,7 @@ or more files containing formatted data. The file is viewed as a database where each record is a line and a field is a data element in this line. @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id36}@anchor{32f} +@anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{32f}@anchor{gnat_rm/the_gnat_library id36}@anchor{330} @section @code{GNAT.Binary_Search} (@code{g-binsea.ads}) @@ -23872,7 +23888,7 @@ Allow binary search of a sorted array (or of an array-like container; the generic does not reference the array directly). @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id37}@anchor{331} +@anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id37}@anchor{332} @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads}) @@ -23885,7 +23901,7 @@ These associations can be specified using the @code{-V} binder command line switch. @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id38}@anchor{333} +@anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id38}@anchor{334} @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads}) @@ -23896,7 +23912,7 @@ line switch. Provides routines giving hints to the branch predictor of the code generator. @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id39}@anchor{335} +@anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{335}@anchor{gnat_rm/the_gnat_library id39}@anchor{336} @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads}) @@ -23911,7 +23927,7 @@ useful directly or as parts of the implementations of other abstractions, such as mailboxes. @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id40}@anchor{337} +@anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id40}@anchor{338} @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads}) @@ -23924,7 +23940,7 @@ such as mailboxes. Provides a thread-safe asynchronous intertask mailbox communication facility. @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id41}@anchor{339} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id41}@anchor{33a} @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads}) @@ -23939,7 +23955,7 @@ data items. Exchange and comparison procedures are provided by passing access-to-procedure values. @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id42}@anchor{33b} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id42}@anchor{33c} @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads}) @@ -23955,7 +23971,7 @@ access-to-procedure values. This is an older version, retained for compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable. @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id43}@anchor{33d} +@anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33d}@anchor{gnat_rm/the_gnat_library id43}@anchor{33e} @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads}) @@ -23971,7 +23987,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id44}@anchor{33f} +@anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33f}@anchor{gnat_rm/the_gnat_library id44}@anchor{340} @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads}) @@ -23987,7 +24003,7 @@ the encoding of the string. The routine includes detection of special XML sequences for various UCS input formats. @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id45}@anchor{341} +@anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{341}@anchor{gnat_rm/the_gnat_library id45}@anchor{342} @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads}) @@ -24001,7 +24017,7 @@ General routines for swapping the bytes in 2-, 4-, and 8-byte quantities. Machine-specific implementations are available in some cases. @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id46}@anchor{343} +@anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{343}@anchor{gnat_rm/the_gnat_library id46}@anchor{344} @section @code{GNAT.Calendar} (@code{g-calend.ads}) @@ -24015,7 +24031,7 @@ Also provides conversion of @code{Ada.Calendar.Time} values to and from the C @code{timeval} format. @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id47}@anchor{345} +@anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{345}@anchor{gnat_rm/the_gnat_library id47}@anchor{346} @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads}) @@ -24026,7 +24042,7 @@ C @code{timeval} format. @geindex GNAT.Calendar.Time_IO (g-catiio.ads) @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id48}@anchor{347} +@anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id48}@anchor{348} @section @code{GNAT.CRC32} (@code{g-crc32.ads}) @@ -24043,7 +24059,7 @@ of this algorithm see Aug. 1988. Sarwate, D.V. @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id49}@anchor{349} +@anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id49}@anchor{34a} @section @code{GNAT.Case_Util} (@code{g-casuti.ads}) @@ -24058,7 +24074,7 @@ without the overhead of the full casing tables in @code{Ada.Characters.Handling}. @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id50}@anchor{34b} +@anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{34b}@anchor{gnat_rm/the_gnat_library id50}@anchor{34c} @section @code{GNAT.CGI} (@code{g-cgi.ads}) @@ -24073,7 +24089,7 @@ builds a table whose index is the key and provides some services to deal with this table. @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id51}@anchor{34d} +@anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id51}@anchor{34e} @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads}) @@ -24088,7 +24104,7 @@ Common Gateway Interface (CGI). It exports services to deal with Web cookies (piece of information kept in the Web client software). @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id52}@anchor{34f} +@anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id52}@anchor{350} @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads}) @@ -24100,7 +24116,7 @@ This is a package to help debugging CGI (Common Gateway Interface) programs written in Ada. @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id53}@anchor{351} +@anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{351}@anchor{gnat_rm/the_gnat_library id53}@anchor{352} @section @code{GNAT.Command_Line} (@code{g-comlin.ads}) @@ -24113,7 +24129,7 @@ including the ability to scan for named switches with optional parameters and expand file names using wildcard notations. @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id54}@anchor{353} +@anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id54}@anchor{354} @section @code{GNAT.Compiler_Version} (@code{g-comver.ads}) @@ -24131,7 +24147,7 @@ of the compiler if a consistent tool set is used to compile all units of a partition). @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id55}@anchor{355} +@anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id55}@anchor{356} @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads}) @@ -24142,7 +24158,7 @@ of a partition). Provides a simple interface to handle Ctrl-C keyboard events. @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id56}@anchor{357} +@anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{357}@anchor{gnat_rm/the_gnat_library id56}@anchor{358} @section @code{GNAT.Current_Exception} (@code{g-curexc.ads}) @@ -24159,7 +24175,7 @@ This is particularly useful in simulating typical facilities for obtaining information about exceptions provided by Ada 83 compilers. @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id57}@anchor{359} +@anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id57}@anchor{35a} @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads}) @@ -24176,7 +24192,7 @@ problems. See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}. @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id58}@anchor{35b} +@anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{35b}@anchor{gnat_rm/the_gnat_library id58}@anchor{35c} @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads}) @@ -24189,7 +24205,7 @@ to and from string images of address values. Supports both C and Ada formats for hexadecimal literals. @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id59}@anchor{35d} +@anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35d}@anchor{gnat_rm/the_gnat_library id59}@anchor{35e} @section @code{GNAT.Decode_String} (@code{g-decstr.ads}) @@ -24213,7 +24229,7 @@ Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id60}@anchor{35f} +@anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35f}@anchor{gnat_rm/the_gnat_library id60}@anchor{360} @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads}) @@ -24234,7 +24250,7 @@ preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding. @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id61}@anchor{361} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id61}@anchor{362} @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads}) @@ -24247,7 +24263,7 @@ the current directory, making new directories, and scanning the files in a directory. @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id62}@anchor{363} +@anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{363}@anchor{gnat_rm/the_gnat_library id62}@anchor{364} @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads}) @@ -24259,7 +24275,7 @@ A child unit of GNAT.Directory_Operations providing additional operations for iterating through directories. @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id63}@anchor{365} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id63}@anchor{366} @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads}) @@ -24277,7 +24293,7 @@ dynamic instances of the hash table, while an instantiation of @code{GNAT.HTable} creates a single instance of the hash table. @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id64}@anchor{367} +@anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id64}@anchor{368} @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads}) @@ -24297,7 +24313,7 @@ dynamic instances of the table, while an instantiation of @code{GNAT.Table} creates a single instance of the table type. @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id65}@anchor{369} +@anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id65}@anchor{36a} @section @code{GNAT.Encode_String} (@code{g-encstr.ads}) @@ -24319,7 +24335,7 @@ encoding method. Useful in conjunction with Unicode character coding. Note there is a preinstantiation for UTF-8. See next entry. @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id66}@anchor{36b} +@anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{36b}@anchor{gnat_rm/the_gnat_library id66}@anchor{36c} @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads}) @@ -24340,7 +24356,7 @@ Note there is a preinstantiation for UTF-8. See next entry. A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding. @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id67}@anchor{36d} +@anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36d}@anchor{gnat_rm/the_gnat_library id67}@anchor{36e} @section @code{GNAT.Exception_Actions} (@code{g-excact.ads}) @@ -24353,7 +24369,7 @@ for specific exceptions, or when any exception is raised. This can be used for instance to force a core dump to ease debugging. @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id68}@anchor{36f} +@anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36f}@anchor{gnat_rm/the_gnat_library id68}@anchor{370} @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads}) @@ -24367,7 +24383,7 @@ Provides an interface allowing to control automatic output upon exception occurrences. @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id69}@anchor{371} +@anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{371}@anchor{gnat_rm/the_gnat_library id69}@anchor{372} @section @code{GNAT.Exceptions} (@code{g-except.ads}) @@ -24388,7 +24404,7 @@ predefined exceptions, and for example allows raising @code{Constraint_Error} with a message from a pure subprogram. @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id70}@anchor{373} +@anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{373}@anchor{gnat_rm/the_gnat_library id70}@anchor{374} @section @code{GNAT.Expect} (@code{g-expect.ads}) @@ -24404,7 +24420,7 @@ It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id71}@anchor{375} +@anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id71}@anchor{376} @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads}) @@ -24416,7 +24432,7 @@ ports. It is not implemented for cross ports, and in particular is not implemented for VxWorks or LynxOS. @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id72}@anchor{377} +@anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{377}@anchor{gnat_rm/the_gnat_library id72}@anchor{378} @section @code{GNAT.Float_Control} (@code{g-flocon.ads}) @@ -24430,7 +24446,7 @@ library calls may cause this mode to be modified, and the Reset procedure in this package can be used to reestablish the required mode. @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id73}@anchor{379} +@anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{379}@anchor{gnat_rm/the_gnat_library id73}@anchor{37a} @section @code{GNAT.Formatted_String} (@code{g-forstr.ads}) @@ -24445,7 +24461,7 @@ derived from Integer, Float or enumerations as values for the formatted string. @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id74}@anchor{37b} +@anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{37b}@anchor{gnat_rm/the_gnat_library id74}@anchor{37c} @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads}) @@ -24463,7 +24479,7 @@ have a vector implementation that can be automatically used by the compiler when auto-vectorization is enabled. @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id75}@anchor{37d} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{37d}@anchor{gnat_rm/the_gnat_library id75}@anchor{37e} @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads}) @@ -24477,7 +24493,7 @@ access-to-procedure values. The algorithm used is a modified heap sort that performs approximately N*log(N) comparisons in the worst case. @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id76}@anchor{37f} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37f}@anchor{gnat_rm/the_gnat_library id76}@anchor{380} @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads}) @@ -24493,7 +24509,7 @@ This differs from @code{GNAT.Heap_Sort} in having a less convenient interface, but may be slightly more efficient. @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id77}@anchor{381} +@anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{381}@anchor{gnat_rm/the_gnat_library id77}@anchor{382} @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads}) @@ -24507,7 +24523,7 @@ if the procedures can be inlined, at the expense of duplicating code for multiple instantiations. @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id78}@anchor{383} +@anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{383}@anchor{gnat_rm/the_gnat_library id78}@anchor{384} @section @code{GNAT.HTable} (@code{g-htable.ads}) @@ -24520,7 +24536,7 @@ data. Provides two approaches, one a simple static approach, and the other allowing arbitrary dynamic hash tables. @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id79}@anchor{385} +@anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{385}@anchor{gnat_rm/the_gnat_library id79}@anchor{386} @section @code{GNAT.IO} (@code{g-io.ads}) @@ -24536,7 +24552,7 @@ Standard_Input, and writing characters, strings and integers to either Standard_Output or Standard_Error. @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id80}@anchor{387} +@anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{387}@anchor{gnat_rm/the_gnat_library id80}@anchor{388} @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads}) @@ -24550,7 +24566,7 @@ Provides some auxiliary functions for use with Text_IO, including a test for whether a file exists, and functions for reading a line of text. @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id81}@anchor{389} +@anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{389}@anchor{gnat_rm/the_gnat_library id81}@anchor{38a} @section @code{GNAT.Lock_Files} (@code{g-locfil.ads}) @@ -24564,7 +24580,7 @@ Provides a general interface for using files as locks. Can be used for providing program level synchronization. @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id82}@anchor{38b} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{38b}@anchor{gnat_rm/the_gnat_library id82}@anchor{38c} @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads}) @@ -24576,7 +24592,7 @@ The original implementation of @code{Ada.Numerics.Discrete_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id83}@anchor{38d} +@anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{38d}@anchor{gnat_rm/the_gnat_library id83}@anchor{38e} @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads}) @@ -24588,7 +24604,7 @@ The original implementation of @code{Ada.Numerics.Float_Random}. Uses a modified version of the Blum-Blum-Shub generator. @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id84}@anchor{38f} +@anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38f}@anchor{gnat_rm/the_gnat_library id84}@anchor{390} @section @code{GNAT.MD5} (@code{g-md5.ads}) @@ -24601,7 +24617,7 @@ the HMAC-MD5 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id85}@anchor{391} +@anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{391}@anchor{gnat_rm/the_gnat_library id85}@anchor{392} @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads}) @@ -24614,7 +24630,7 @@ standard output or standard error files. Uses GNAT.IO for actual output. @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id86}@anchor{393} +@anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{393}@anchor{gnat_rm/the_gnat_library id86}@anchor{394} @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads}) @@ -24628,7 +24644,7 @@ various logging purposes, including duplicating functionality of some Ada 83 implementation dependent extensions. @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id87}@anchor{395} +@anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{395}@anchor{gnat_rm/the_gnat_library id87}@anchor{396} @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads}) @@ -24644,7 +24660,7 @@ including a portable spawn procedure, and access to environment variables and error return codes. @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id88}@anchor{397} +@anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{397}@anchor{gnat_rm/the_gnat_library id88}@anchor{398} @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads}) @@ -24662,7 +24678,7 @@ hashcode are in the same order. These hashing functions are very convenient for use with realtime applications. @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id89}@anchor{399} +@anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id89}@anchor{39a} @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads}) @@ -24674,7 +24690,7 @@ Provides random number capabilities which extend those available in the standard Ada library and are more convenient to use. @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{26f}@anchor{gnat_rm/the_gnat_library id90}@anchor{39a} +@anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{270}@anchor{gnat_rm/the_gnat_library id90}@anchor{39b} @section @code{GNAT.Regexp} (@code{g-regexp.ads}) @@ -24690,7 +24706,7 @@ simplest of the three pattern matching packages provided, and is particularly suitable for ‘file globbing’ applications. @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id91}@anchor{39c} +@anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id91}@anchor{39d} @section @code{GNAT.Registry} (@code{g-regist.ads}) @@ -24704,7 +24720,7 @@ registry API, but at a lower level of abstraction, refer to the Win32.Winreg package provided with the Win32Ada binding @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id92}@anchor{39e} +@anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id92}@anchor{39f} @section @code{GNAT.Regpat} (@code{g-regpat.ads}) @@ -24719,7 +24735,7 @@ from the original V7 style regular expression library written in C by Henry Spencer (and binary compatible with this C library). @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id93}@anchor{3a0} +@anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id93}@anchor{3a1} @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads}) @@ -24733,7 +24749,7 @@ full content to be processed is not loaded into memory all at once. This makes this interface usable for large files or socket streams. @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a2} +@anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id94}@anchor{3a3} @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads}) @@ -24745,7 +24761,7 @@ Provides the capability to query the high water mark of the current task’s secondary stack. @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a4} +@anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id95}@anchor{3a5} @section @code{GNAT.Semaphores} (@code{g-semaph.ads}) @@ -24756,7 +24772,7 @@ secondary stack. Provides classic counting and binary semaphores using protected types. @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a6} +@anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id96}@anchor{3a7} @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads}) @@ -24768,7 +24784,7 @@ Provides a simple interface to send and receive data over a serial port. This is only supported on GNU/Linux and Windows. @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a8} +@anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id97}@anchor{3a9} @section @code{GNAT.SHA1} (@code{g-sha1.ads}) @@ -24781,7 +24797,7 @@ and RFC 3174, and the HMAC-SHA1 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id98}@anchor{3aa} +@anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id98}@anchor{3ab} @section @code{GNAT.SHA224} (@code{g-sha224.ads}) @@ -24794,7 +24810,7 @@ and the HMAC-SHA224 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id99}@anchor{3ac} +@anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id99}@anchor{3ad} @section @code{GNAT.SHA256} (@code{g-sha256.ads}) @@ -24807,7 +24823,7 @@ and the HMAC-SHA256 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id100}@anchor{3ae} +@anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id100}@anchor{3af} @section @code{GNAT.SHA384} (@code{g-sha384.ads}) @@ -24820,7 +24836,7 @@ and the HMAC-SHA384 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id101}@anchor{3b0} +@anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id101}@anchor{3b1} @section @code{GNAT.SHA512} (@code{g-sha512.ads}) @@ -24833,7 +24849,7 @@ and the HMAC-SHA512 message authentication function as described in RFC 2104 and FIPS PUB 198. @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b2} +@anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id102}@anchor{3b3} @section @code{GNAT.Signals} (@code{g-signal.ads}) @@ -24845,7 +24861,7 @@ Provides the ability to manipulate the blocked status of signals on supported targets. @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b4} +@anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id103}@anchor{3b5} @section @code{GNAT.Sockets} (@code{g-socket.ads}) @@ -24860,7 +24876,7 @@ on all native GNAT ports and on VxWorks cross ports. It is not implemented for the LynxOS cross port. @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b6} +@anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id104}@anchor{3b7} @section @code{GNAT.Source_Info} (@code{g-souinf.ads}) @@ -24874,7 +24890,7 @@ subprograms yielding the date and time of the current compilation (like the C macros @code{__DATE__} and @code{__TIME__}) @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b8} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b8}@anchor{gnat_rm/the_gnat_library id105}@anchor{3b9} @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads}) @@ -24886,7 +24902,7 @@ Provides a function for determining whether one string is a plausible near misspelling of another string. @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id106}@anchor{3ba} +@anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id106}@anchor{3bb} @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads}) @@ -24899,7 +24915,7 @@ determining whether one string is a plausible near misspelling of another string. @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id107}@anchor{3bc} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3bc}@anchor{gnat_rm/the_gnat_library id107}@anchor{3bd} @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads}) @@ -24915,7 +24931,7 @@ the SNOBOL4 dynamic pattern construction and matching capabilities, using the efficient algorithm developed by Robert Dewar for the SPITBOL system. @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id108}@anchor{3be} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3be}@anchor{gnat_rm/the_gnat_library id108}@anchor{3bf} @section @code{GNAT.Spitbol} (@code{g-spitbo.ads}) @@ -24930,7 +24946,7 @@ useful for constructing arbitrary mappings from strings in the style of the SNOBOL4 TABLE function. @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id109}@anchor{3c0} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id109}@anchor{3c1} @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads}) @@ -24945,7 +24961,7 @@ for type @code{Standard.Boolean}, giving an implementation of sets of string values. @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c2} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id110}@anchor{3c3} @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads}) @@ -24962,7 +24978,7 @@ for type @code{Standard.Integer}, giving an implementation of maps from string to integer values. @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c4} +@anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id111}@anchor{3c5} @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads}) @@ -24979,7 +24995,7 @@ a variable length string type, giving an implementation of general maps from strings to strings. @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c6} +@anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id112}@anchor{3c7} @section @code{GNAT.SSE} (@code{g-sse.ads}) @@ -24991,7 +25007,7 @@ targets. It exposes vector component types together with a general introduction to the binding contents and use. @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c8} +@anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c8}@anchor{gnat_rm/the_gnat_library id113}@anchor{3c9} @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads}) @@ -25000,7 +25016,7 @@ introduction to the binding contents and use. SSE vector types for use with SSE related intrinsics. @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id114}@anchor{3ca} +@anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id114}@anchor{3cb} @section @code{GNAT.String_Hash} (@code{g-strhas.ads}) @@ -25012,7 +25028,7 @@ Provides a generic hash function working on arrays of scalars. Both the scalar type and the hash result type are parameters. @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id115}@anchor{3cc} +@anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id115}@anchor{3cd} @section @code{GNAT.Strings} (@code{g-string.ads}) @@ -25022,7 +25038,7 @@ Common String access types and related subprograms. Basically it defines a string access and an array of string access types. @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id116}@anchor{3ce} +@anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id116}@anchor{3cf} @section @code{GNAT.String_Split} (@code{g-strspl.ads}) @@ -25036,7 +25052,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id117}@anchor{3d0} +@anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id117}@anchor{3d1} @section @code{GNAT.Table} (@code{g-table.ads}) @@ -25056,7 +25072,7 @@ while an instantiation of @code{GNAT.Dynamic_Tables} creates a type that can be used to define dynamic instances of the table. @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d2} +@anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id118}@anchor{3d3} @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads}) @@ -25073,7 +25089,7 @@ single global task lock. Appropriate for use in situations where contention between tasks is very rarely expected. @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d4} +@anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3d4}@anchor{gnat_rm/the_gnat_library id119}@anchor{3d5} @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads}) @@ -25088,7 +25104,7 @@ represents the current date and time in ISO 8601 format. This is a very simple routine with minimal code and there are no dependencies on any other unit. @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d6} +@anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d6}@anchor{gnat_rm/the_gnat_library id120}@anchor{3d7} @section @code{GNAT.Threads} (@code{g-thread.ads}) @@ -25105,7 +25121,7 @@ further details if your program has threads that are created by a non-Ada environment which then accesses Ada code. @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d8} +@anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id121}@anchor{3d9} @section @code{GNAT.Traceback} (@code{g-traceb.ads}) @@ -25117,7 +25133,7 @@ Provides a facility for obtaining non-symbolic traceback information, useful in various debugging situations. @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id122}@anchor{3da} +@anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3da}@anchor{gnat_rm/the_gnat_library id122}@anchor{3db} @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads}) @@ -25126,7 +25142,7 @@ in various debugging situations. @geindex Trace back facilities @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id123}@anchor{3dc} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id123}@anchor{3dd} @section @code{GNAT.UTF_32} (@code{g-utf_32.ads}) @@ -25145,7 +25161,7 @@ lower case to upper case fold routine corresponding to the Ada 2005 rules for identifier equivalence. @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id124}@anchor{3de} +@anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3de}@anchor{gnat_rm/the_gnat_library id124}@anchor{3df} @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads}) @@ -25158,7 +25174,7 @@ near misspelling of another wide wide string, where the strings are represented using the UTF_32_String type defined in System.Wch_Cnv. @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id125}@anchor{3e0} +@anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3e0}@anchor{gnat_rm/the_gnat_library id125}@anchor{3e1} @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads}) @@ -25170,7 +25186,7 @@ Provides a function for determining whether one wide string is a plausible near misspelling of another wide string. @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e2} +@anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id126}@anchor{3e3} @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads}) @@ -25184,7 +25200,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e4} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3e4}@anchor{gnat_rm/the_gnat_library id127}@anchor{3e5} @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads}) @@ -25196,7 +25212,7 @@ Provides a function for determining whether one wide wide string is a plausible near misspelling of another wide wide string. @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e5}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e6} +@anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e6}@anchor{gnat_rm/the_gnat_library id128}@anchor{3e7} @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads}) @@ -25210,7 +25226,7 @@ to the resulting slices. This package is instantiated from @code{GNAT.Array_Split}. @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id129}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e8} +@anchor{gnat_rm/the_gnat_library id129}@anchor{3e8}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e9} @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads}) @@ -25221,7 +25237,7 @@ for use with either manually or automatically generated bindings to C libraries. @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id130}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3ea} +@anchor{gnat_rm/the_gnat_library id130}@anchor{3ea}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3eb} @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads}) @@ -25234,7 +25250,7 @@ This package is a binding for the most commonly used operations on C streams. @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id131}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3ec} +@anchor{gnat_rm/the_gnat_library id131}@anchor{3ec}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3ed} @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads}) @@ -25249,7 +25265,7 @@ from a packed decimal format compatible with that used on IBM mainframes. @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id132}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ee} +@anchor{gnat_rm/the_gnat_library id132}@anchor{3ee}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ef} @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads}) @@ -25263,7 +25279,7 @@ mainframes. This package provides a limited binding to the VxWorks API. @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id133}@anchor{3ef}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3f0} +@anchor{gnat_rm/the_gnat_library id133}@anchor{3f0}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3f1} @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads}) @@ -25286,7 +25302,7 @@ function codes. A particular use of this package is to enable the use of Get_Immediate under VxWorks. @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id134}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f2} +@anchor{gnat_rm/the_gnat_library id134}@anchor{3f2}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f3} @section @code{System.Address_Image} (@code{s-addima.ads}) @@ -25302,7 +25318,7 @@ function that gives an (implementation dependent) string which identifies an address. @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id135}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f4} +@anchor{gnat_rm/the_gnat_library id135}@anchor{3f4}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f5} @section @code{System.Assertions} (@code{s-assert.ads}) @@ -25318,7 +25334,7 @@ by an run-time assertion failure, as well as the routine that is used internally to raise this assertion. @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id136}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f6} +@anchor{gnat_rm/the_gnat_library id136}@anchor{3f6}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f7} @section @code{System.Atomic_Counters} (@code{s-atocou.ads}) @@ -25332,7 +25348,7 @@ on most targets, including all Alpha, AARCH64, ARM, ia64, PowerPC, SPARC V9, x86, and x86_64 platforms. @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id137}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f8} +@anchor{gnat_rm/the_gnat_library id137}@anchor{3f8}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f9} @section @code{System.Memory} (@code{s-memory.ads}) @@ -25350,7 +25366,7 @@ calls to this unit may be made for low level allocation uses (for example see the body of @code{GNAT.Tables}). @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id138}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3fa} +@anchor{gnat_rm/the_gnat_library id138}@anchor{3fa}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3fb} @section @code{System.Multiprocessors} (@code{s-multip.ads}) @@ -25363,7 +25379,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id139}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fc} +@anchor{gnat_rm/the_gnat_library id139}@anchor{3fc}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fd} @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads}) @@ -25376,7 +25392,7 @@ in GNAT we also make it available in Ada 95 and Ada 2005 (where it is technically an implementation-defined addition). @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id140}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fe} +@anchor{gnat_rm/the_gnat_library id140}@anchor{3fe}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3ff} @section @code{System.Partition_Interface} (@code{s-parint.ads}) @@ -25389,7 +25405,7 @@ is used primarily in a distribution context when using Annex E with @code{GLADE}. @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id141}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{400} +@anchor{gnat_rm/the_gnat_library id141}@anchor{400}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{401} @section @code{System.Pool_Global} (@code{s-pooglo.ads}) @@ -25406,7 +25422,7 @@ declared. It uses malloc/free to allocate/free and does not attempt to do any automatic reclamation. @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id142}@anchor{401}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{402} +@anchor{gnat_rm/the_gnat_library id142}@anchor{402}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{403} @section @code{System.Pool_Local} (@code{s-pooloc.ads}) @@ -25423,7 +25439,7 @@ a list of allocated blocks, so that all storage allocated for the pool can be freed automatically when the pool is finalized. @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id143}@anchor{403}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{404} +@anchor{gnat_rm/the_gnat_library id143}@anchor{404}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{405} @section @code{System.Restrictions} (@code{s-restri.ads}) @@ -25439,7 +25455,7 @@ compiler determined information on which restrictions are violated by one or more packages in the partition. @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id144}@anchor{405}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{406} +@anchor{gnat_rm/the_gnat_library id144}@anchor{406}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{407} @section @code{System.Rident} (@code{s-rident.ads}) @@ -25455,7 +25471,7 @@ since the necessary instantiation is included in package System.Restrictions. @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id145}@anchor{407}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{408} +@anchor{gnat_rm/the_gnat_library id145}@anchor{408}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{409} @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads}) @@ -25471,7 +25487,7 @@ stream attributes are applied to string types, but the subprograms in this package can be used directly by application programs. @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id146}@anchor{409}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{40a} +@anchor{gnat_rm/the_gnat_library id146}@anchor{40a}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{40b} @section @code{System.Unsigned_Types} (@code{s-unstyp.ads}) @@ -25484,7 +25500,7 @@ also contains some related definitions for other specialized types used by the compiler in connection with packed array types. @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id147}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40c} +@anchor{gnat_rm/the_gnat_library id147}@anchor{40c}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40d} @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads}) @@ -25505,7 +25521,7 @@ encoding method. It uses definitions in package @code{System.Wch_Con}. @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library -@anchor{gnat_rm/the_gnat_library id148}@anchor{40d}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40e} +@anchor{gnat_rm/the_gnat_library id148}@anchor{40e}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40f} @section @code{System.Wch_Con} (@code{s-wchcon.ads}) @@ -25517,7 +25533,7 @@ in ordinary strings. These definitions are used by the package @code{System.Wch_Cnv}. @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top -@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} +@anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{410}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{411}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11} @chapter Interfacing to Other Languages @@ -25535,7 +25551,7 @@ provided. @end menu @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{411}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{412} +@anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{413} @section Interfacing to C @@ -25675,7 +25691,7 @@ of the length corresponding to the @code{type'Size} value in Ada. @end itemize @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{413} +@anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{414} @section Interfacing to C++ @@ -25732,7 +25748,7 @@ The @code{External_Name} is the name of the C++ RTTI symbol. You can then cover a specific C++ exception in an exception handler. @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{415} +@anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{415}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{416} @section Interfacing to COBOL @@ -25740,7 +25756,7 @@ Interfacing to COBOL is achieved as described in section B.4 of the Ada Reference Manual. @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{417} +@anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{417}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{418} @section Interfacing to Fortran @@ -25750,7 +25766,7 @@ multi-dimensional array causes the array to be stored in column-major order as required for convenient interface to Fortran. @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages -@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{418}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{419} +@anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{419}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{41a} @section Interfacing to non-GNAT Ada code @@ -25774,7 +25790,7 @@ values or simple record types without variants, or simple array types with fixed bounds. @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top -@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{41a}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{41b}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} +@anchor{gnat_rm/specialized_needs_annexes doc}@anchor{41b}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{41c}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12} @chapter Specialized Needs Annexes @@ -25815,7 +25831,7 @@ in Ada 2005) is fully implemented. @end table @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top -@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} +@anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13} @chapter Implementation of Specific Ada Features @@ -25834,7 +25850,7 @@ facilities. @end menu @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41e}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{177} +@anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{178} @section Machine Code Insertions @@ -26002,7 +26018,7 @@ according to normal visibility rules. In particular if there is no qualification is required. @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{420} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{420}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{421} @section GNAT Implementation of Tasking @@ -26018,7 +26034,7 @@ to compliance with the Real-Time Systems Annex. @end menu @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{422} +@anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{422}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{423} @subsection Mapping Ada Tasks onto the Underlying Kernel Threads @@ -26087,7 +26103,7 @@ support this functionality when the parent contains more than one task. @geindex Forking a new process @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{423}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{424} +@anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{425} @subsection Ensuring Compliance with the Real-Time Annex @@ -26138,7 +26154,7 @@ placed at the end. @c Support_for_Locking_Policies @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking -@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{425} +@anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{426} @subsection Support for Locking Policies @@ -26172,7 +26188,7 @@ then ceiling locking is used. Otherwise, the @code{Ceiling_Locking} policy is ignored. @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{427} +@anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{427}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{428} @section GNAT Implementation of Shared Passive Packages @@ -26270,7 +26286,7 @@ This is used to provide the required locking semantics for proper protected object synchronization. @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{429} +@anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{42a} @section Code Generation for Array Aggregates @@ -26301,7 +26317,7 @@ component values and static subtypes also lead to simpler code. @end menu @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{42b} +@anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{42c} @subsection Static constant aggregates with static bounds @@ -26348,7 +26364,7 @@ Zero2: constant two_dim := (others => (others => 0)); @end example @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42d} +@anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42e} @subsection Constant aggregates with unconstrained nominal types @@ -26363,7 +26379,7 @@ Cr_Unc : constant One_Unc := (12,24,36); @end example @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42f} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{430} @subsection Aggregates with static bounds @@ -26391,7 +26407,7 @@ end loop; @end example @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{431} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{431}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{432} @subsection Aggregates with nonstatic bounds @@ -26402,7 +26418,7 @@ have to be applied to sub-arrays individually, if they do not have statically compatible subtypes. @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates -@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{433} +@anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{433}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{434} @subsection Aggregates in assignment statements @@ -26444,7 +26460,7 @@ a temporary (created either by the front-end or the code generator) and then that temporary will be copied onto the target. @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{435} +@anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{435}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{436} @section The Size of Discriminated Records with Default Discriminants @@ -26524,7 +26540,7 @@ say) must be consistent, so it is imperative that the object, once created, remain invariant. @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{437} +@anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{437}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{438} @section Image Values For Nonscalar Types @@ -26544,7 +26560,7 @@ control of image text is required for some type T, then T’Put_Image should be explicitly specified. @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features -@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{439} +@anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{439}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{43a} @section Strict Conformance to the Ada Reference Manual @@ -26571,7 +26587,7 @@ behavior (although at the cost of a significant performance penalty), so infinite and NaN values are properly generated. @node Implementation of Ada 2012 Features,GNAT language extensions,Implementation of Specific Ada Features,Top -@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{43a}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{43b}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} +@anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{43b}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{43c}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14} @chapter Implementation of Ada 2012 Features @@ -28737,7 +28753,7 @@ RM References: 4.03.01 (17) @end itemize @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2012 Features,Top -@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43c}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43d}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43e} +@anchor{gnat_rm/gnat_language_extensions doc}@anchor{43d}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{43e}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{43f} @chapter GNAT language extensions @@ -28768,7 +28784,7 @@ prototyping phase. @end menu @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{43f} +@anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{440} @section How to activate the extended GNAT Ada superset @@ -28807,7 +28823,7 @@ for serious projects, and is only means as a playground/technology preview. @end cartouche @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{440}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} +@anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{441}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{69} @section Curated Extensions @@ -28824,7 +28840,7 @@ for serious projects, and is only means as a playground/technology preview. @end menu @node Local Declarations Without Block,Conditional when constructs,,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{441} +@anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{442} @subsection Local Declarations Without Block @@ -28847,7 +28863,7 @@ end if; @end example @node Conditional when constructs,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{442} +@anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{443} @subsection Conditional when constructs @@ -28919,7 +28935,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-conditional-when-constructs.rst} @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Conditional when constructs,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{443} +@anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{444} @subsection Fixed lower bounds for array types and subtypes @@ -28973,7 +28989,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-fixed-lower-bound.rst} @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{444} +@anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{445} @subsection Prefixed-view notation for calls to primitive subprograms of untagged types @@ -29026,7 +29042,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-prefixed-untagged.rst} @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{445} +@anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{446} @subsection Expression defaults for generic formal functions @@ -29055,7 +29071,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-expression-functions-as-default-for-generic-formal-function-parameters.rst} @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{446} +@anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{447} @subsection String interpolation @@ -29221,7 +29237,7 @@ Here is a link to the original RFC : @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-string-interpolation.rst} @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{447} +@anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{448} @subsection Constrained attribute for generic objects @@ -29229,7 +29245,7 @@ The @code{Constrained} attribute is permitted for objects of generic types. The result indicates whether the corresponding actual is constrained. @node Static aspect on intrinsic functions,,Constrained attribute for generic objects,Curated Extensions -@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{448} +@anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{449} @subsection @code{Static} aspect on intrinsic functions @@ -29238,7 +29254,7 @@ and the compiler will evaluate some of these intrinsics statically, in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions -@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{449} +@anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6a}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{44a} @section Experimental Language Extensions @@ -29252,7 +29268,7 @@ particular the @code{Shift_Left} and @code{Shift_Right} intrinsics. @end menu @node Storage Model,Attribute Super,,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{44a} +@anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{44b} @subsection Storage Model @@ -29267,7 +29283,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-storage-model.rst} @node Attribute Super,Simpler accessibility model,Storage Model,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{44b} +@anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{44c} @subsection Attribute Super @@ -29297,7 +29313,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/QuentinOchem/ada-spark-rfcs/blob/oop/considered/rfc-oop-super.rst} @node Simpler accessibility model,Case pattern matching,Attribute Super,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{44c} +@anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{44d} @subsection Simpler accessibility model @@ -29310,7 +29326,7 @@ Here is a link to the full RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-simpler-accessibility.md} @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler accessibility model,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{44d} +@anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{44e} @subsection Case pattern matching @@ -29442,7 +29458,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/master/prototyped/rfc-pattern-matching.rst} @node Mutably Tagged Types with Size’Class Aspect,,Case pattern matching,Experimental Language Extensions -@anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{44e} +@anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{44f} @subsection Mutably Tagged Types with Size’Class Aspect @@ -29482,7 +29498,7 @@ Link to the original RFC: @indicateurl{https://github.com/AdaCore/ada-spark-rfcs/blob/topic/rfc-finally/considered/rfc-class-size.md} @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top -@anchor{gnat_rm/security_hardening_features doc}@anchor{44f}@anchor{gnat_rm/security_hardening_features id1}@anchor{450}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} +@anchor{gnat_rm/security_hardening_features doc}@anchor{450}@anchor{gnat_rm/security_hardening_features id1}@anchor{451}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15} @chapter Security Hardening Features @@ -29504,7 +29520,7 @@ change. @end menu @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features -@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{451} +@anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{452} @section Register Scrubbing @@ -29540,7 +29556,7 @@ programming languages, see @cite{Using the GNU Compiler Collection (GCC)}. @c Stack Scrubbing: @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{452} +@anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{453} @section Stack Scrubbing @@ -29684,7 +29700,7 @@ Bar_Callable_Ptr. @c Hardened Conditionals: @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features -@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{453} +@anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{454} @section Hardened Conditionals @@ -29774,7 +29790,7 @@ be used with other programming languages supported by GCC. @c Hardened Booleans: @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features -@anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{454} +@anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{455} @section Hardened Booleans @@ -29835,7 +29851,7 @@ and more details on that attribute, see @cite{Using the GNU Compiler Collection @c Control Flow Redundancy: @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features -@anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{455} +@anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{456} @section Control Flow Redundancy @@ -30003,7 +30019,7 @@ see @cite{Using the GNU Compiler Collection (GCC)}. These options can be used with other programming languages supported by GCC. @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top -@anchor{gnat_rm/obsolescent_features doc}@anchor{456}@anchor{gnat_rm/obsolescent_features id1}@anchor{457}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} +@anchor{gnat_rm/obsolescent_features doc}@anchor{457}@anchor{gnat_rm/obsolescent_features id1}@anchor{458}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16} @chapter Obsolescent Features @@ -30022,7 +30038,7 @@ compatibility purposes. @end menu @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id2}@anchor{458}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{459} +@anchor{gnat_rm/obsolescent_features id2}@anchor{459}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{45a} @section pragma No_Run_Time @@ -30035,7 +30051,7 @@ preferred usage is to use an appropriately configured run-time that includes just those features that are to be made accessible. @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id3}@anchor{45a}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{45b} +@anchor{gnat_rm/obsolescent_features id3}@anchor{45b}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{45c} @section pragma Ravenscar @@ -30044,7 +30060,7 @@ The pragma @code{Ravenscar} has exactly the same effect as pragma is part of the new Ada 2005 standard. @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id4}@anchor{45c}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{45d} +@anchor{gnat_rm/obsolescent_features id4}@anchor{45d}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{45e} @section pragma Restricted_Run_Time @@ -30054,7 +30070,7 @@ preferred since the Ada 2005 pragma @code{Profile} is intended for this kind of implementation dependent addition. @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features -@anchor{gnat_rm/obsolescent_features id5}@anchor{45e}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{45f} +@anchor{gnat_rm/obsolescent_features id5}@anchor{45f}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{460} @section pragma Task_Info @@ -30080,7 +30096,7 @@ in the spec of package System.Task_Info in the runtime library. @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features -@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{460}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{461} +@anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{461}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{462} @section package System.Task_Info (@code{s-tasinf.ads}) @@ -30090,7 +30106,7 @@ to support the @code{Task_Info} pragma. The predefined Ada package standard replacement for GNAT’s @code{Task_Info} functionality. @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top -@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{462}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{463} +@anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{463}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{464} @chapter Compatibility and Porting Guide @@ -30112,7 +30128,7 @@ applications developed in other Ada environments. @end menu @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{464}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{465} +@anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{465}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{466} @section Writing Portable Fixed-Point Declarations @@ -30234,7 +30250,7 @@ If you follow this scheme you will be guaranteed that your fixed-point types will be portable. @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{466}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{467} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{467}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{468} @section Compatibility with Ada 83 @@ -30262,7 +30278,7 @@ following subsections treat the most likely issues to be encountered. @end menu @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{468}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{469} +@anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{469}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{46a} @subsection Legal Ada 83 programs that are illegal in Ada 95 @@ -30362,7 +30378,7 @@ the fix is usually simply to add the @code{(<>)} to the generic declaration. @end itemize @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{46a}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{46b} +@anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{46b}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{46c} @subsection More deterministic semantics @@ -30390,7 +30406,7 @@ which open select branches are executed. @end itemize @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{46c}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{46d} +@anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{46d}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{46e} @subsection Changed semantics @@ -30432,7 +30448,7 @@ covers only the restricted range. @end itemize @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83 -@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{46e}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{46f} +@anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{46f}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{470} @subsection Other language compatibility issues @@ -30465,7 +30481,7 @@ include @code{pragma Interface} and the floating point type attributes @end itemize @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{470}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{471} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{471}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{472} @section Compatibility between Ada 95 and Ada 2005 @@ -30537,7 +30553,7 @@ can declare a function returning a value from an anonymous access type. @end itemize @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{472}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{473} +@anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{473}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{474} @section Implementation-dependent characteristics @@ -30560,7 +30576,7 @@ transition from certain Ada 83 compilers. @end menu @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{474}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{475} +@anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{475}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{476} @subsection Implementation-defined pragmas @@ -30582,7 +30598,7 @@ avoiding compiler rejection of units that contain such pragmas; they are not relevant in a GNAT context and hence are not otherwise implemented. @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{476}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{477} +@anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{477}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{478} @subsection Implementation-defined attributes @@ -30596,7 +30612,7 @@ Ada 83, GNAT supplies the attributes @code{Bit}, @code{Machine_Size} and @code{Type_Class}. @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{478}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{479} +@anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{479}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{47a} @subsection Libraries @@ -30625,7 +30641,7 @@ be preferable to retrofit the application using modular types. @end itemize @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{47a}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{47b} +@anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{47b}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{47c} @subsection Elaboration order @@ -30661,7 +30677,7 @@ pragmas either globally (as an effect of the `-gnatE' switch) or locally @end itemize @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics -@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{47c}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{47d} +@anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{47d}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{47e} @subsection Target-specific aspects @@ -30674,10 +30690,10 @@ on the robustness of the original design. Moreover, Ada 95 (and thus Ada 2005 and Ada 2012) are sometimes incompatible with typical Ada 83 compiler practices regarding implicit packing, the meaning of the Size attribute, and the size of access values. -GNAT’s approach to these issues is described in @ref{47e,,Representation Clauses}. +GNAT’s approach to these issues is described in @ref{47f,,Representation Clauses}. @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{47f}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{480} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{480}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{481} @section Compatibility with Other Ada Systems @@ -30720,7 +30736,7 @@ far beyond this minimal set, as described in the next section. @end itemize @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{481}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{47e} +@anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{482}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{47f} @section Representation Clauses @@ -30813,7 +30829,7 @@ with thin pointers. @end itemize @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide -@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{482}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{483} +@anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{483}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{484} @section Compatibility with HP Ada 83 @@ -30843,7 +30859,7 @@ extension of package System. @end itemize @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top -@anchor{share/gnu_free_documentation_license doc}@anchor{484}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{485} +@anchor{share/gnu_free_documentation_license doc}@anchor{485}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{486} @chapter GNU Free Documentation License diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index db06a771ddd..135a4e13e78 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -2848,6 +2848,7 @@ Ignore_Pragma Implicit_Packing Initialize_Scalars Interrupt_State +Interrupts_System_By_Default License Locking_Policy No_Component_Reordering @@ -6415,6 +6416,9 @@ then you need to instruct the Ada part not to install its own signal handler. This is done using @code{pragma Interrupt_State} that provides a general mechanism for overriding such uses of interrupts. +Additionally, @code{pragma Interrupts_System_By_Default} can be used to default +all interrupts to System. + The set of interrupts for which the Ada run-time library sets a specific signal handler is the following: @@ -29666,8 +29670,8 @@ to permit their use in free software. @printindex ge -@anchor{d1}@w{ } @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{ } +@anchor{d1}@w{ } @c %**end of body @bye diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 7cf77471f1d..acb8c7cc57e 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -122,6 +122,7 @@ int __gl_leap_seconds_support = 0; int __gl_canonical_streams = 0; char *__gl_bind_env_addr = NULL; int __gl_xdr_stream = 0; +int __gl_interrupts_default_to_system = 0; /* This value is not used anymore, but kept for bootstrapping purpose. */ int __gl_zero_cost_exceptions = 0; @@ -148,20 +149,25 @@ int __gnat_inside_elab_final_code = 0; char __gnat_get_interrupt_state (int); /* This routine is called from the runtime as needed to determine the state - of an interrupt, as set by an Interrupt_State pragma appearing anywhere - in the current partition. The input argument is the interrupt number, - and the result is one of the following: + of an interrupt, as set by an Interrupt_State pragma or an + Interrupts_System_By_Default pragma appearing anywhere in the current + partition. The input argument is the interrupt number, and the result + is one of the following: - 'n' this interrupt not set by any Interrupt_State pragma - 'u' Interrupt_State pragma set state to User - 'r' Interrupt_State pragma set state to Runtime - 's' Interrupt_State pragma set state to System */ + 'u' if Interrupt_State pragma set to User; + 'r' if Interrupt_State pragma set to Runtime; + 's' if Interrupt_State pragma set to System or + Interrupts_System_By_Default in effect; otherwise + 'n' (there is no Interrupt_State pragma and no request for a default). + + See pragma Interrupt_State documentation for a description + of the effect and meaning of states User, Runtime, and System. */ char __gnat_get_interrupt_state (int intrup) { if (intrup >= __gl_num_interrupt_states) - return 'n'; + return (__gl_interrupts_default_to_system ? 's' : 'n'); else return __gl_interrupt_states [intrup]; } @@ -2094,10 +2100,14 @@ __gnat_install_handler (void) /* For VxWorks, install all signal handlers, since pragma Interrupt_State applies to vectored hardware interrupts, not signals. */ - sigaction (SIGFPE, &act, NULL); - sigaction (SIGILL, &act, NULL); - sigaction (SIGSEGV, &act, NULL); - sigaction (SIGBUS, &act, NULL); + if (__gnat_get_interrupt_state (SIGFPE) != 's') + sigaction (SIGFPE, &act, NULL); + if (__gnat_get_interrupt_state (SIGILL) != 's') + sigaction (SIGILL, &act, NULL); + if (__gnat_get_interrupt_state (SIGSEGV) != 's') + sigaction (SIGSEGV, &act, NULL); + if (__gnat_get_interrupt_state (SIGBUS) != 's') + sigaction (SIGBUS, &act, NULL); #if defined(__leon__) && defined(_WRS_KERNEL) /* Specific to the LEON VxWorks kernel run-time library */ diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index 0755b92e4db..3d43907a08b 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -1266,6 +1266,10 @@ package body Lib.Writ is Write_Info_Char (Partition_Elaboration_Policy); end if; + if Opt.Interrupts_System_By_Default then + Write_Info_Str (" ID"); + end if; + if No_Component_Reordering_Config then Write_Info_Str (" NC"); end if; diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads index 6bc6e961028..fd62ef9363c 100644 --- a/gcc/ada/lib-writ.ads +++ b/gcc/ada/lib-writ.ads @@ -199,6 +199,11 @@ package Lib.Writ is -- GP Set if this compilation was done in GNATprove mode, either -- from direct use of GNATprove, or from use of -gnatdF. + -- ID Interrupts_System_By_Default pragma applies to this + -- partition. No handlers will be installed by default, + -- including signal handlers. This is a configuration + -- pragma. + -- Lx A valid Locking_Policy pragma applies to all the units in -- this file, where x is the first character (upper case) of -- the policy name (e.g. 'C' for Ceiling_Locking). diff --git a/gcc/ada/libgnarl/s-intman__posix.adb b/gcc/ada/libgnarl/s-intman__posix.adb index 311a1ded367..f494843a0d0 100644 --- a/gcc/ada/libgnarl/s-intman__posix.adb +++ b/gcc/ada/libgnarl/s-intman__posix.adb @@ -154,6 +154,12 @@ package body System.Interrupt_Management is System.Task_Primitives.Alternate_Stack_Size /= 0; -- Whether to use an alternate signal stack for stack overflows + Sigsetable_Signal_Mask : aliased sigset_t; + + Interrupts_Default_To_System : Integer; + pragma Import (C, Interrupts_Default_To_System, + "__gl_interrupts_default_to_system"); + begin if Initialized then return; @@ -250,9 +256,25 @@ package body System.Interrupt_Management is -- Check all signals for state that requires keeping them unmasked and -- reserved. + -- Unmasking might involve explicit operations later on, typically + -- performed on the entire set of relevant signals gathered together + -- by way of sigset_t mask. Doing anything of this kind is forbidden + -- for very specific signals and would trip assertion checks if + -- attempted. Check for this here, preventing the Keep_Unmasked + -- request upfront. This is of particular relevance for + -- Interrupts_System_By_Default as it would lead to such requests + -- for every signal not altered otherwise. + + Result := sigemptyset (Sigsetable_Signal_Mask'Access); + pragma Assert (Result = 0); + for J in Interrupt_ID'Range loop if State (J) = Default or else State (J) = Runtime then - Keep_Unmasked (J) := True; + if Interrupts_Default_To_System = 0 or else + sigaddset (Sigsetable_Signal_Mask'Access, Signal (J)) = 0 + then + Keep_Unmasked (J) := True; + end if; Reserve (J) := True; end if; end loop; diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index ce0caf48168..71d031a69dc 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -1109,6 +1109,10 @@ package Opt is -- This flag is set True if a No_Run_Time pragma is encountered. See spec -- of Rtsfind for a full description of handling of this pragma. + Interrupts_System_By_Default : Boolean := False; + -- GNATBIND + -- Set True if pragma Interrupts_System_By_Default is seen. + No_Split_Units : Boolean := False; -- GPRBUILD -- Set to True with switch --no-split-units. When True, unit sources, spec, diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index 04eed22031a..88a04397cf2 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -1495,6 +1495,7 @@ begin | Pragma_No_Inline | Pragma_No_Return | Pragma_No_Run_Time + | Pragma_Interrupts_System_By_Default | Pragma_No_Strict_Aliasing | Pragma_No_Tagged_Streams | Pragma_Normalize_Scalars diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 772bf1b1abb..6091b5e48d3 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -21080,6 +21080,18 @@ package body Sem_Prag is end if; end; + ---------------------------------- + -- Interrupts_System_By_Default -- + ---------------------------------- + + -- pragma Interrupts_System_By_Default; + + when Pragma_Interrupts_System_By_Default => + GNAT_Pragma; + Check_Arg_Count (0); + Check_Valid_Configuration_Pragma; + Interrupts_System_By_Default := True; + ----------------------- -- No_Tagged_Streams -- ----------------------- @@ -32767,6 +32779,7 @@ package body Sem_Prag is Pragma_No_Inline => 0, Pragma_No_Return => 0, Pragma_No_Run_Time => -1, + Pragma_Interrupts_System_By_Default => 0, Pragma_No_Strict_Aliasing => -1, Pragma_No_Tagged_Streams => 0, Pragma_Normalize_Scalars => 0, diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index ade933e0bbc..6027864e583 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -461,6 +461,7 @@ package Snames is Name_No_Component_Reordering : constant Name_Id := N + $; -- GNAT Name_No_Heap_Finalization : constant Name_Id := N + $; -- GNAT Name_No_Run_Time : constant Name_Id := N + $; -- GNAT + Name_Interrupts_System_By_Default : constant Name_Id := N + $; -- GNAT Name_No_Strict_Aliasing : constant Name_Id := N + $; -- GNAT Name_Normalize_Scalars : constant Name_Id := N + $; Name_Optimize_Alignment : constant Name_Id := N + $; -- GNAT @@ -1774,6 +1775,7 @@ package Snames is Pragma_No_Component_Reordering, Pragma_No_Heap_Finalization, Pragma_No_Run_Time, + Pragma_Interrupts_System_By_Default, Pragma_No_Strict_Aliasing, Pragma_Normalize_Scalars, Pragma_Optimize_Alignment, From patchwork Thu Jun 20 08:53:13 2024 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: 1950017 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=hswNIu85; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zbw6jDDz20X6 for ; Thu, 20 Jun 2024 19:16:12 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B14DD3891C3B for ; Thu, 20 Jun 2024 09:16:10 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id 6D8AF388982E for ; Thu, 20 Jun 2024 08:53:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6D8AF388982E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6D8AF388982E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::431 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; cv=none; b=VzyHoPoBlYfCY2TXEDOGF3jAkP4HwZlBXl/Qs1/rRe3B69yImQ/19VAEAydE9Xs0cm5UIc9J0DzC2LDPxLBok194LxztZz9mnfdaiY7h4BgemCF/8TuoT0QNQNpT5dJ/QOlZ1RjVepVNd9bRcASgcOr2BiuzEB278MdYTLkLpiI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; c=relaxed/simple; bh=z6yLKaIW0QRrKecArdH15NY9+LQLzp0QnHmLd4bzsxI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=x1NgwjmwV47UlZAk3yO4ma8+ekS/Uv8swi7rvIewOTT1zd/up1iQRzf3ffu8H+iCv1i742ZYUUh//pHc3nSd7j4HgSc+CD3No4OY2gslv4+V4cPc1LCP1tHRDs7pkQNOOxX8bYa8BrEL4CXWWfRXEYbTMgzg2kzXvp84wcbMwAE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-364a3d5d901so456365f8f.0 for ; Thu, 20 Jun 2024 01:53:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873632; x=1719478432; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3wYe8qVNdL+9S9b9xHS7mpQVKVRRGSKYAhkJta5pw/M=; b=hswNIu85pzKBCLaEsCEtTFHMG7uD/3YvUy7SFGWBiQN+m9GlczoDvlcZL3N+xTuj/x u1n9++U3p0rXrgrYhneuGLBkXpQXWx07+IMU4mhem6HVPs6rAn/SA0dZs9uBFeUNEttV BHf5WGkTywnMe4MQBzYW6fjFLmkR4o6gtc7ck7kOuNM6ZJ2xbaHOjr8T1GJcCaWeP80K YVC+wzPFclBnqrRUK1QJT0PrzwXhwTK7z++H0lLoG/FXP6AkGxUKNHGjvUEz0DgdXkFp R1UQVhuL/japFzyGHYm0aWKz/5B8UX5i6D+BsbgSb7gsA18Te6XhPRoQ2BwbjVhgcheY ho3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873632; x=1719478432; 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=3wYe8qVNdL+9S9b9xHS7mpQVKVRRGSKYAhkJta5pw/M=; b=KrrB/kKcNLCfpE725KlI/DACNoSAa2d0WzFAAkqyDrdYMsYZVUwWj/QOkvgq8KsS+D wYbv0mOxuEY9udNf5l2p4xUnFM13Cy/forl9HKX2Bx1uaOu8cGclDO1k+QwNJonE5ZIa dZZ6ZWofoE7i4aJxY1YMoFLcEYocXW4YSlHAedTbBltW+ACURC2y+BYV1MckzpC48uqE v65a7f09m50Ktli7Xf4uokjjwi90Lfc1/26BxtH5sM1ukcnF21/QTCeDIjFhGY+338/g HDZhfGW9jUb3sx0jgiqjcoxFd5mvEo0Ho20nCxA1pxOmoChtYu342yBESNF5YEydBfcR uzLg== X-Gm-Message-State: AOJu0YzyZ0qO6DKujLz8LUvbOjEaAISq0R483ZwnUVJwBvJmVSZ1O1CP 4ZUlJ/t6y1el5MTJaQwV3m9ih+pIgAl69ytLxNmprT4EmsRq/Y+8vCvNu/M40zgVVUOyB76CbCU = X-Google-Smtp-Source: AGHT+IHAVhQZ6tnrRxZEnG0Ha+epkxztbrMVoKvWGjepIV63UYsRXQibhRsfLDVKk6MqrOnI54zKnw== X-Received: by 2002:adf:fdd0:0:b0:35f:24e6:78bd with SMTP id ffacd0b85a97d-36317b7d444mr3435482f8f.33.1718873632014; Thu, 20 Jun 2024 01:53:52 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:51 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 23/30] ada: Fix composition of primitive equality for untagged records with variant part Date: Thu, 20 Jun 2024 10:53:13 +0200 Message-ID: <20240620085321.2412421-23-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou In Ada 2012, primitive equality operators of untagged record types compose like those of tagged record types, but this has never been implemented for untagged record types with a variant part. gcc/ada/ * exp_ch4.adb (Expand_Composite_Equality): In the untagged record case, always look for a user-defined equality operator in Ada 2012. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/exp_ch4.adb | 50 ++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 983f66231a2..1674d6c8132 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -2329,6 +2329,28 @@ package body Exp_Ch4 is -- Case of untagged record types elsif Is_Record_Type (Full_Type) then + -- Equality composes in Ada 2012 for untagged record types. It also + -- composes for bounded strings, because they are part of the + -- predefined environment (see 4.5.2(32.1/1)). We could make it + -- compose for bounded strings by making them tagged, or by making + -- sure all subcomponents are set to the same value, even when not + -- used. Instead, we have this special case in the compiler, because + -- it's more efficient. + + if Ada_Version >= Ada_2012 or else Is_Bounded_String (Comp_Type) then + declare + Eq_Call : constant Node_Id := + Build_Eq_Call (Comp_Type, Loc, Lhs, Rhs); + + begin + if Present (Eq_Call) then + return Eq_Call; + end if; + end; + end if; + + -- Check whether a TSS has been created for the type + Eq_Op := TSS (Full_Type, TSS_Composite_Equality); if Present (Eq_Op) then @@ -2355,34 +2377,6 @@ package body Exp_Ch4 is Parameter_Associations => New_List (L_Exp, R_Exp)); end; - -- Equality composes in Ada 2012 for untagged record types. It also - -- composes for bounded strings, because they are part of the - -- predefined environment (see 4.5.2(32.1/1)). We could make it - -- compose for bounded strings by making them tagged, or by making - -- sure all subcomponents are set to the same value, even when not - -- used. Instead, we have this special case in the compiler, because - -- it's more efficient. - - elsif Ada_Version >= Ada_2012 or else Is_Bounded_String (Comp_Type) - then - -- If no TSS has been created for the type, check whether there is - -- a primitive equality declared for it. - - declare - Op : constant Node_Id := - Build_Eq_Call (Comp_Type, Loc, Lhs, Rhs); - - begin - -- Use user-defined primitive if it exists, otherwise use - -- predefined equality. - - if Present (Op) then - return Op; - else - return Make_Op_Eq (Loc, Lhs, Rhs); - end if; - end; - else return Expand_Record_Equality (Nod, Full_Type, Lhs, Rhs); end if; From patchwork Thu Jun 20 08:53:14 2024 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: 1950010 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=kfVZAeFL; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZVl6Htlz20X8 for ; Thu, 20 Jun 2024 19:11:43 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1E166389003C for ; Thu, 20 Jun 2024 09:11:42 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 6D8F4388A01C for ; Thu, 20 Jun 2024 08:53:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6D8F4388A01C Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6D8F4388A01C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::433 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; cv=none; b=JHsagOOuQMHEYjTThC8XkCKZgMxU7YJEB09vHygQCY7cTVb9MyVK7SkjaGuLiCRWFYL6g1ZIlDbFNaovxxuodKSm83Ld8Gsrp11vh+zaCkhU9QyWpCnwhxn52avNbnCxdpJWScic+LT155e/tpEs7FW155/XsBDeXsXXkF8Dv28= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; c=relaxed/simple; bh=vQNHiSCDtoF41lqMzsgZOn/s8ZaNaqhcl3Uz7ObJkMQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=AXESOZrljtPNlHey6phHUL6Spvi3EpcIB6N5uEWn8g4uw4cc+ohzjeH2OkfvpMb4C2+gez5VCb+qf+I9PcFcHDu+iWOzPunfU7JA7qBI0TB9RCxvbYcWaUAOzIvkvdwKwck2WL8taSLYLwjsnDZtN2x4OebgoKUb+S4vCGFDs3o= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3621ac606e1so1094647f8f.1 for ; Thu, 20 Jun 2024 01:53:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873632; x=1719478432; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4iMtqKzSqBu38u6amHaFpsahVEoTtthh+Ssyc5uIXss=; b=kfVZAeFL+mwVQL2FXxBkho7Ir2QVuVWfHIJTKFIXBnLDJU80gf7IMFptlkVytMIywQ /8Ga6ELhRIZ1v1zDp7tbnxE+hq0zeK7d2XPNltbrJS01ID4bGJ1DuR41w1T+EiixV3ij U+kGkRlXqZ8AJABjT0v0uhmakgdziNYmR2fhPs8Ftpb48l1tj7YWy6yrbra3wxoEG4PC NQKWaK0y2Sh9+YR1k7kTDwl19W/b6aSJrfLzhiBpBzWwEnqvmlAuTdE0xe5i04vf22jp bxIo7hgPbOiSLMIV5oVaSy5aWSGOtytWmSE5slKCU+NzsSVV38WZlOyYEAt8aoZ9sWE3 HO8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873632; x=1719478432; 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=4iMtqKzSqBu38u6amHaFpsahVEoTtthh+Ssyc5uIXss=; b=hL6x2HcUl6XmFTpcAST72ic+0vo0yiUcgad3o/0zRWrYqkW7Kyjco9AEwkEyVxCKcD KU4JDlmtIr9um7IWTI+afRKDWYh/fv4ktnjoj5LjsfJ9FS1LpAmUeXePGHJkX2J/FqAU OxIbBdOyv0lgCx5Yf7O1fpHkgphskVmd2S1jxYyqWMpBHAJp8KNj0oX4N41P9Ia3nVAy YCJQvVWjd3Spr8DumeE5L/kwl7OAm67ncPNFLEd6Fs+XPnTvFFeF/pOhSxjRnj1HJQFH uZx8yfBr6cjQ1ATa2xN8upgQvmllaLxlvkXWci3qjJvvi/TiPecTzR90wBtC1z1fjygK l1QQ== X-Gm-Message-State: AOJu0YzpSo86Fl/LHx0ngtmSB9MG40dp7eDRpSu59x5VtyxuWcyAiGSF ncbT+NHGiEAt4b/+AjSQ71k0nX4psAuQaccjmBVl/i9TbPFmB4KrFuOS3sNTDU3uoGoBPtdDybM = X-Google-Smtp-Source: AGHT+IGtTUhvs7wkTOgg6ygI71g/Ijsp5QYRxGctxNEhcw4T20ZAqzR+mwM55n5/Mk12yjhG2XyTKQ== X-Received: by 2002:adf:f10d:0:b0:35f:1bb0:ed8e with SMTP id ffacd0b85a97d-3609ea6c78amr7064932f8f.21.1718873632748; Thu, 20 Jun 2024 01:53:52 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:52 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED 24/30] ada: Fix assertion failure during analysis of instantiation of formal package Date: Thu, 20 Jun 2024 10:53:14 +0200 Message-ID: <20240620085321.2412421-24-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Eric Botcazou It's an assertion on the name of an instance of a generic child unit and it needs to cope with a renaming of the unit. gcc/ada/ * sem_ch12.adb (Instantiate_Formal_Package): Accept renamings of a generic parent that is a child unit for the abbreviated instance. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch12.adb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index d05c7b61194..8ace16ad008 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -10996,7 +10996,8 @@ package body Sem_Ch12 is if Is_Child_Unit (Gen_Parent) then I_Nam := New_Copy_Tree (Name (Original_Node (Analyzed_Formal))); - pragma Assert (Entity (I_Nam) = Gen_Parent); + pragma Assert (Entity (I_Nam) = Gen_Parent + or else Renamed_Entity (Entity (I_Nam)) = Gen_Parent); else I_Nam := From patchwork Thu Jun 20 08:53:15 2024 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: 1950018 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=kVgBk6ea; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZcC11jgz20X6 for ; Thu, 20 Jun 2024 19:16:27 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0D3613892466 for ; Thu, 20 Jun 2024 09:16:24 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id B2F2C3889813 for ; Thu, 20 Jun 2024 08:53:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B2F2C3889813 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B2F2C3889813 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; cv=none; b=wk+5CNzo7HkMrrQZs82uQWFJGTwQ3+ji4NSWCuV5/PV3aUUguRJJmY/CDiTUGR71OlPqNQT8gZ5RHTqz8k5Fj9WdBjL9q720TK6KJdtuh2Cw8UcoqKyGrVp7Xw2QOFtb6ou5Lvl7hfw9dFuKinKANEnqWkj4nPs6PxMG5lwvEPI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873641; c=relaxed/simple; bh=8PZE7rQRAgPl1+9t558gPM4QauOLVtowFjmvohjnDAM=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ntCg0ePp1aZiqMyCYy3+VA/JFEnQFqbYGSmPX4iJyLdHYehGeMEi7a0UWvj+VhjWsClKrECJ1YG7Hm0UVsoMCnPKxjp1q2qqlP+kAjY8l8ZtRQxgJfJxkLYSTkHl4eEdFuIRkkgmL1aT8ZBJuurctHS4quRXd+ezyXRKfqCLnBs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-364a39824baso516649f8f.1 for ; Thu, 20 Jun 2024 01:53:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873633; x=1719478433; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RRf4WwbIX+60e13ZvqMpMqfAMWVOhpPB+1CGQ2K2ELI=; b=kVgBk6ea5g3Zatc1Y3zFfZiaQoQXfN1Y1QpRonYXwguY21b60u67RYX6KZAgyX/Mee 81QBD4pJP4J362ZRIP3ebp0S5a8jqdn68/buKHX0ArFPwdbVsag1TzhrF8cF4b0Mcwgi 4aUBK+UASvlCoWWL+n63sJUEbUmbJ67Qupvnfq7ndoTW4QQNC3k8YBpDYm0Uc67ADVM0 ywnYH1jxR7l/8gEyv5e/N4ytTIhM60U4UUtzMDyATVKGSvaUhmxq0D6wiSAUqHxP7jCO +xbuR1SDei3D05+caGX8AC9jIstK/nKOSHOmENR3XvaTDK90s5QR1gdFTEx2i1bjFK4C +Ywg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873633; x=1719478433; 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=RRf4WwbIX+60e13ZvqMpMqfAMWVOhpPB+1CGQ2K2ELI=; b=N0VPnp+P06IQGoZHQSlq41jba9Y2XFOoS2pzUcwfuLa0mcDLDvPdJon8HvDKnltrst i+cTi1bIiRlexNpYPgUW5PTZ/hT1sqFFZ8zLbSjS73E6HcebOVI5GoEsNluK+wUsWY90 OS4gzFNJ6DPx/9j7iQ+mSrG4UalsPi+TfTTNm5TB+jrFhYFVj9Anveb+ISIialKKPBmn RcSkYhQw7x3H1DK7Ojr+5Xiwd52bhjefNiVAIfPMZogDE12tMXmwGe8SrDpvG7GsnAzl Pt1oTTUklXNzxkOp5cZm6UwBfRoZvRIe8nGmlusLt4Pmq8UDJOiZ34Zz1YVVg4RtQcpy ng2Q== X-Gm-Message-State: AOJu0YyX0dvltX+7LsLyFTe/Nx6IfvWCRDvAojlVDJyw03TcM972TWHe h9k7qx/UISMmLDClbyXZeg5/MlMz5V+4kR06tD3bZYHQtnECcMVCEx+nVyRlVZ/4Rj7yDhuemQQ = X-Google-Smtp-Source: AGHT+IE3Zu/2T8Cq3zDs8+NA/A/qEzlqxtpB+0B2SRq4CHbekfczYAe9gAyTJAeHqoHLZiCfb1wsVg== X-Received: by 2002:a5d:53d2:0:b0:363:69dd:ac3a with SMTP id ffacd0b85a97d-36369ddad6amr2529079f8f.42.1718873633475; Thu, 20 Jun 2024 01:53:53 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:53 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Yannick Moy Subject: [COMMITTED 25/30] ada: Fix inlining of fixed-lower-bound array for GNATprove Date: Thu, 20 Jun 2024 10:53:15 +0200 Message-ID: <20240620085321.2412421-25-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Yannick Moy Inlining in GNATprove may fail on a call to a subprogram with a formal of an array type with fixed lower bound (a GNAT extension), because the appropriate conversion is not used. Fix it. Also fix the function that inserts an unchecked conversion, in cases where it could skip sliding due to the target type having fixed lower bound. gcc/ada/ * inline.adb (Establish_Actual_Mapping_For_Inlined_Call): In the case of formal with a fixed lower bounds, insert appropriate conversion like in the case of a constrained type. * tbuild.adb (Unchecked_Convert_To): Do not skip the conversion when it may involve sliding due to a type with fixed lower bound. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/inline.adb | 10 ++++++++-- gcc/ada/tbuild.adb | 12 +++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb index f5c54263515..850145eb887 100644 --- a/gcc/ada/inline.adb +++ b/gcc/ada/inline.adb @@ -3165,7 +3165,9 @@ package body Inline is elsif Base_Type (Etype (F)) = Base_Type (Etype (A)) and then Etype (F) /= Base_Type (Etype (F)) - and then Is_Constrained (Etype (F)) + and then (Is_Constrained (Etype (F)) + or else + Is_Fixed_Lower_Bound_Array_Subtype (Etype (F))) then Temp_Typ := Etype (F); @@ -3234,7 +3236,11 @@ package body Inline is -- GNATprove. elsif Etype (F) /= Etype (A) - and then (not GNATprove_Mode or else Is_Constrained (Etype (F))) + and then + (not GNATprove_Mode + or else (Is_Constrained (Etype (F)) + or else + Is_Fixed_Lower_Bound_Array_Subtype (Etype (F)))) then New_A := Unchecked_Convert_To (Etype (F), Relocate_Node (A)); Temp_Typ := Etype (F); diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb index 51fa43c77ac..b538911e8bc 100644 --- a/gcc/ada/tbuild.adb +++ b/gcc/ada/tbuild.adb @@ -918,11 +918,17 @@ package body Tbuild is Result : Node_Id; begin - -- If the expression is already of the correct type, then nothing - -- to do, except for relocating the node + -- If the expression is already of the correct type, then nothing to do, + -- except for relocating the node. If Typ is an array type with fixed + -- lower bound, the expression might be of a subtype that does not + -- have this lower bound (on a slice), hence the conversion needs to + -- be preserved for sliding. if Present (Etype (Expr)) - and then (Base_Type (Etype (Expr)) = Typ or else Etype (Expr) = Typ) + and then + ((Base_Type (Etype (Expr)) = Typ + and then not Is_Fixed_Lower_Bound_Array_Subtype (Typ)) + or else Etype (Expr) = Typ) then return Relocate_Node (Expr); From patchwork Thu Jun 20 08:53:16 2024 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: 1950020 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=jGmDnUMZ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZdH1jFVz20X6 for ; Thu, 20 Jun 2024 19:17:23 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4C49F38930FE for ; Thu, 20 Jun 2024 09:17:21 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by sourceware.org (Postfix) with ESMTPS id DE7963888C7D for ; Thu, 20 Jun 2024 08:53:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DE7963888C7D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DE7963888C7D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::133 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873642; cv=none; b=D9LXNZFkSXByXpKsTHTMJs2RaTPfh9hkb3aMy3x6TzNkqV3vi5odL33O/TIce42i962mfK1HT5zDApeSpc9PEkX0jk0z6IMY0ALbMoaERzBICGo954TdeNE/OK5TiAGrymqF/A8/Q2Y+CS+Qy59bhuuF44PJAkQE547hGniV/GU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873642; c=relaxed/simple; bh=Ssn5e0em+z7ZLq+v+hkTdjvWVSDQSKk/12Ww+CXhqjI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=wVX7tQh2EJx5G5ccqJEn61TalA3OGZMCNbBeXYUU3UDr4dtRl1NsvbPj1XOi9o0zu82zQ0AO6VEvugCpJHfBziNb507UE33olx7x0CZ/Z9A5EsnAr0YW8JBw2WqWpi8KKaX+9l6vIU1UmzNR3lMLR0ABrenczqB5Vl61zoSluBY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-52c8342af5eso683480e87.3 for ; Thu, 20 Jun 2024 01:53:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873634; x=1719478434; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gpp359zHPq3JnydPsljNd5F34/3HCUlNneJdLA/V3dA=; b=jGmDnUMZxC2nBrecaQdDcsTnAcGjsG3UZ1K7gemwzRLGsv3xD/jSqh2DSOB/3mmmBh i8iRBoLPrRN+TL1MIGuP5jrGhaj5C7xHs341sa2uJKCxC3kieG0LjelJ8SBOJ0Pfu7f1 pl4mXwBXg7xf2vUSl88qd+YudqL5fMepVb2ohTjh26REA95gJKZWMAyBZZAhD3alhxRV lDEV0UddY3KjEwQBYEZNA7Pm371B4v9Y6GMGO4/i0H/1N+/d/rPtxlwU4SGgONzwOVeO RHOHFgW0Nv1pIyi2G+qC0ePdqdBQL2g5r0EaE7SzDAQs7wUgYDhCeaztkUUURj0S6Fhj 4KbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873634; x=1719478434; 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=gpp359zHPq3JnydPsljNd5F34/3HCUlNneJdLA/V3dA=; b=hI3uHpLiRi+G+B6fhTNhAWf2LyDMeLezDHBYaOL16xbaIaN+A1rmWXp6+Bf2Jp1Gex BjepxFfL0aZrxhQ7tkGwELOZBI3hR6PvyALDhVt0ydoy1kcYIr8Y/eZrensbtWPDNPvR owSIEXuYmwVCUA/cSg9GwlxX7sJpdeNtCnt6oSRJjv7HGypopXf2aFdjwZgHdKz9sFVO fOArRaef0WdN7J+SEJsHH06u2nPjXcuuXz6Pgzqua+msnqQ9vlVgi/QGexB3phg8G3ph MrvvmPF0Be+ijzyllnRk9uwrbiBQ7fyrgcza34v2rsFkSFMVsK5EVtkdIzICDpl8/3/S QHfA== X-Gm-Message-State: AOJu0YxYE3MlGyVS3TcL+i1U7T/vH2aekaPzWEcw5uBjoeME7LNQPstB DrR9MZ/XLqQl/w6bJG0gyV6iYwQFSXI+47EEDOo+7XCKs9OsKKQM4b5k+VdNeaHH/YDs5oAdrvo = X-Google-Smtp-Source: AGHT+IH3hfdzGbWSt1PwXhDcVhgXI+xFQRnwyhiQS4mXNeQYoE2LMTfO6EalgC0lEOgKDxTtINULWA== X-Received: by 2002:a05:6512:a92:b0:52c:851a:a0f2 with SMTP id 2adb3069b0e04-52ccaa57aa5mr3319378e87.50.1718873634273; Thu, 20 Jun 2024 01:53:54 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:53 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Gary Dismukes Subject: [COMMITTED 26/30] ada: Crash on selected component of formal derived type in generic instance Date: Thu, 20 Jun 2024 10:53:16 +0200 Message-ID: <20240620085321.2412421-26-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Gary Dismukes The compiler crashes on an instantiation of a generic child unit G1.GC that has a formal private extension P_Ext of a private type P declared in the parent G1 whose full type has a component C, when analyzing a selected component ACC.C whose prefix is of an access type coming from an instantiation of another generic G2 where the designated type is the formal type P_Ext (coming in from a formal type of G2). gcc/ada/ * sem_ch4.adb (Try_Selected_Component_In_Instance): Reverse if_statement clauses so that the testing for the special case of extensions of private types in instance bodies is done first, followed by the testing for the case of a parent type that's a generic actual type. In the extension case, apply Base_Type to the type actual in the test of Used_As_Generic_Actual, and add a test of Present (Parent_Subtype (Typ)). Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch4.adb | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index e75f8dfb6bc..1175a34df21 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -5237,22 +5237,6 @@ package body Sem_Ch4 is end if; end loop; - -- If Par is a generic actual, look for component in ancestor types. - -- Skip this if we have no Declaration_Node, as is the case for - -- itypes. - - if Present (Par) - and then Is_Generic_Actual_Type (Par) - and then Present (Declaration_Node (Par)) - then - Par := Generic_Parent_Type (Declaration_Node (Par)); - loop - Find_Component_In_Instance (Par); - exit when Present (Entity (Sel)) - or else Par = Etype (Par); - Par := Etype (Par); - end loop; - -- Another special case: the type is an extension of a private -- type T, either is an actual in an instance or is immediately -- visible, and we are in the body of the instance, which means @@ -5263,12 +5247,29 @@ package body Sem_Ch4 is -- the Has_Private_View mechanism is bypassed because T or the -- ancestor is not directly referenced in the generic body. - elsif Is_Derived_Type (Typ) - and then (Used_As_Generic_Actual (Typ) + if Is_Derived_Type (Typ) + and then (Used_As_Generic_Actual (Base_Type (Typ)) or else Is_Immediately_Visible (Typ)) and then In_Instance_Body + and then Present (Parent_Subtype (Typ)) then Find_Component_In_Instance (Parent_Subtype (Typ)); + + -- If Par is a generic actual, look for component in ancestor types. + -- Skip this if we have no Declaration_Node, as is the case for + -- itypes. + + elsif Present (Par) + and then Is_Generic_Actual_Type (Par) + and then Present (Declaration_Node (Par)) + then + Par := Generic_Parent_Type (Declaration_Node (Par)); + loop + Find_Component_In_Instance (Par); + exit when Present (Entity (Sel)) + or else Par = Etype (Par); + Par := Etype (Par); + end loop; end if; return Etype (N) /= Any_Type; From patchwork Thu Jun 20 08:53:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marc_Poulhi=C3=A8s?= X-Patchwork-Id: 1950022 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=ky8M5zGb; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4ZgB376jz20X6 for ; Thu, 20 Jun 2024 19:19:02 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9989E389365A for ; Thu, 20 Jun 2024 09:19:00 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by sourceware.org (Postfix) with ESMTPS id 6F046388981D for ; Thu, 20 Jun 2024 08:53:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6F046388981D Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6F046388981D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873645; cv=none; b=TaF3Smz91d2kvD9w+6Ac5Hsa+J/ejTPe42iRAYdewSds/LlljEL6XF/eSgFDP47H0WM7ycL2YwQz+0uTOJo9Dzse+SEQ1ruanhKkLXo9DCP0u6tuB66wNdNZiswoDXAEYk5r5rOVFKdibRcia3o27qEcKO+5B52zaXLrfGApzME= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873645; c=relaxed/simple; bh=0CaKnE1KAbs+jir8ykg+4eH2fOl/O2jcJTMCSzt9K5U=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=cFHAAqRf3pAZKJ3q4J7nTmVTlviWU+LCC2I9Ij2apJMcNzFWDLtP3Roc9lLGMlLafS4AWKShM67HOF2UuwHdpTyejLKyByDc6SvyeifZZNOTbzViKhMJx9fduloc4wByCbt/TF7H9yyksJqsco9207rRJV6XYXrn3dHzLELeG9A= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3651ee582cfso165455f8f.2 for ; Thu, 20 Jun 2024 01:53:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873635; x=1719478435; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=grnZnsrDQewcXy8CMspQ3N4l3CoZdK4NHOf4U1Q7Foc=; b=ky8M5zGb1v4tayyVv5eIqpg+fsVJ7hytE1YV9CVbnHx7l6izdGehSOlLPuduDoUG5U iil/7Yy+HWqb5ZVtxDlSXSLkD3rWk/ng94bi6CUkyMoGvXmg+4vkCkgfH6smW6K5lBH6 LNjBynB7+HLf4K9o8h+pBSeZfeTrV4twP5ds8bo4xP9J3yWXlFQCsafuYzB9Hsw1R/c+ 25mlmHKdrvymBf23jIlmiJmS4+O4q9uFqdyPtAXgvJzKZSje7G7rE2PkcBEA/1y5ojG+ MipaLFjI/fUGK3CTuW6kY9wbUIwJ09+KMJHjz/Zww6m/E++HNQigMy7+LFpDFvPoSp3s Ph+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873635; x=1719478435; 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=grnZnsrDQewcXy8CMspQ3N4l3CoZdK4NHOf4U1Q7Foc=; b=bOFEigVVB+zMsqtkbiQkE/HuHR5LGbw5mxVn1mHRpJS9yeCbpKAt5QHr8sHxvj64E+ SY0n4Q3gDCYtshVKHjLOrAjTGGU8jE1OqGGhHeReSr7cGHk/z1vsD2j0nlY5aAkjavzW YCffye2X6XSwI9f1baStktDxMfOOUDWaKv55rIPaMi5iw9P/f5Mg77PHe6rCwyKusxsr z0TEzbHZSWhKDKvsUytmFTQiB4Fp+1jGNZQ9B1Sovbecz14WZHskaO7zDA0cfdJOE+Pv OKIBL3b1XxQp1E0fVt+/JQqNGO41klJSJqhqdAgw+vRUxEZwMV7iDpYM27wc3nir5Re0 Nkxw== X-Gm-Message-State: AOJu0YzwgfQ6aZ1m/jEDI+nWT8O1JV2R+KeR7zIvQ6bY1A8rLmlLIbZQ qGVdphEQHEZT/NGct7wqEIO0LyJTFMBTClE2batQuw5zJ7MxmsD4PJNZ9csv2HdX1ABNQi4anXI = X-Google-Smtp-Source: AGHT+IE6v1Y5jd1/Os792ndrBqwahglRU3Yg7bP2/Ox6WzEF2riHyPEaU6NluV/1CoiIb8QJLDkSEQ== X-Received: by 2002:adf:f78d:0:b0:362:bcfe:39a4 with SMTP id ffacd0b85a97d-363171e243emr3642460f8f.12.1718873635051; Thu, 20 Jun 2024 01:53:55 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:54 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Steve Baird Subject: [COMMITTED 27/30] ada: Replace "All" argument to Extensions_Allowed pragma with "All_Extensions" Date: Thu, 20 Jun 2024 10:53:17 +0200 Message-ID: <20240620085321.2412421-27-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Steve Baird The argument to pragma Extensions_Allowed to enable all extensions is no longer "All", but instead "All_Extensions". gcc/ada/ * doc/gnat_rm/gnat_language_extensions.rst: Update documentation. * doc/gnat_rm/implementation_defined_pragmas.rst: Update documentation. * errout.adb (Error_Msg_GNAT_Extension): Update error message text. * par-prag.adb: Update pragma parsing. This includes changing the the name of the Check_Arg_Is_On_Or_Off formal parameter All_OK_Too to All_Extensions_OK_Too. * sem_prag.adb (Analyze_Pragma): In analyzing an Extensions_Allowed pragma, replace uses of Name_All with Name_All_Extensions; update a comment to reflect this. * snames.ads-tmpl: Add Name_All_Extensions declaration. * gnat_rm.texi: Regenerate. Tested on x86_64-pc-linux-gnu, committed on master. --- .../doc/gnat_rm/gnat_language_extensions.rst | 5 +++-- .../implementation_defined_pragmas.rst | 10 +++++----- gcc/ada/errout.adb | 10 ++++++---- gcc/ada/gnat_rm.texi | 15 ++++++++------- gcc/ada/par-prag.adb | 19 ++++++++++--------- gcc/ada/sem_prag.adb | 6 +++--- gcc/ada/snames.ads-tmpl | 1 + 7 files changed, 36 insertions(+), 30 deletions(-) diff --git a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst index f71e8f6eef8..d06ac4cc98d 100644 --- a/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst +++ b/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst @@ -37,8 +37,9 @@ file, or in a ``.adc`` file corresponding to your project. .. attention:: You can activate the extended set of extensions by using either the ``-gnatX0`` command line flag, or the pragma ``Extensions_Allowed`` with - ``All`` as an argument. However, it is not recommended you use this subset - for serious projects, and is only means as a playground/technology preview. + ``All_Extensions`` as an argument. However, it is not recommended you use + this subset for serious projects; it is only meant as a technology preview + for use in playground experiments. .. _Curated_Language_Extensions: diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst index 6c08eaee816..f31a1b9a7b8 100644 --- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst +++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst @@ -2208,19 +2208,19 @@ Syntax: .. code-block:: ada - pragma Extensions_Allowed (On | Off | All); + pragma Extensions_Allowed (On | Off | All_Extensions); -This configuration pragma enables (via the "On" or "All" argument) or disables -(via the "Off" argument) the implementation extension mode; the pragma takes -precedence over the ``-gnatX`` and ``-gnatX0`` command switches. +This configuration pragma enables (via the "On" or "All_Extensions" argument) +or disables (via the "Off" argument) the implementation extension mode; the +pragma takes precedence over the ``-gnatX`` and ``-gnatX0`` command switches. If an argument of ``"On"`` is specified, the latest version of the Ada language is implemented (currently Ada 2022) and, in addition, a curated set of GNAT specific extensions are recognized. (See the list here :ref:`here`) -An argument of ``"All"`` has the same effect except that some extra +An argument of ``"All_Extensions"`` has the same effect except that some extra experimental extensions are enabled (See the list here :ref:`here`) diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index c4eab2deee3..1d82386099c 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -902,21 +902,23 @@ package body Errout is if Is_Core_Extension then Error_Msg ("\unit must be compiled with -gnatX '[or -gnatX0'] " & - "or use pragma Extensions_Allowed (On) '[or All']", Loc); + "or use pragma Extensions_Allowed (On) '[or All_Extensions']", + Loc); else Error_Msg ("\unit must be compiled with -gnatX0 " & - "or use pragma Extensions_Allowed (All)", Loc); + "or use pragma Extensions_Allowed (All_Extensions)", Loc); end if; else Error_Msg_Sloc := Sloc (Ada_Version_Pragma); Error_Msg ("\incompatible with Ada version set#", Loc); if Is_Core_Extension then Error_Msg - ("\must use pragma Extensions_Allowed (On) '[or All']", Loc); + ("\must use pragma Extensions_Allowed (On)" & + " '[or All_Extensions']", Loc); else Error_Msg - ("\must use pragma Extensions_Allowed (All)", Loc); + ("\must use pragma Extensions_Allowed (All_Extensions)", Loc); end if; end if; end Error_Msg_GNAT_Extension; diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index c578502983c..b80d77eeb02 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -3688,19 +3688,19 @@ GNAT User’s Guide. Syntax: @example -pragma Extensions_Allowed (On | Off | All); +pragma Extensions_Allowed (On | Off | All_Extensions); @end example -This configuration pragma enables (via the “On” or “All” argument) or disables -(via the “Off” argument) the implementation extension mode; the pragma takes -precedence over the @code{-gnatX} and @code{-gnatX0} command switches. +This configuration pragma enables (via the “On” or “All_Extensions” argument) +or disables (via the “Off” argument) the implementation extension mode; the +pragma takes precedence over the @code{-gnatX} and @code{-gnatX0} command switches. If an argument of @code{"On"} is specified, the latest version of the Ada language is implemented (currently Ada 2022) and, in addition, a curated set of GNAT specific extensions are recognized. (See the list here @ref{69,,here}) -An argument of @code{"All"} has the same effect except that some extra +An argument of @code{"All_Extensions"} has the same effect except that some extra experimental extensions are enabled (See the list here @ref{6a,,here}) @@ -28817,8 +28817,9 @@ activate the curated subset of extensions. @quotation Attention You can activate the extended set of extensions by using either the @code{-gnatX0} command line flag, or the pragma @code{Extensions_Allowed} with -@code{All} as an argument. However, it is not recommended you use this subset -for serious projects, and is only means as a playground/technology preview. +@code{All_Extensions} as an argument. However, it is not recommended you use +this subset for serious projects; it is only meant as a technology preview +for use in playground experiments. @end quotation @end cartouche diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb index 88a04397cf2..9e77bf16ff3 100644 --- a/gcc/ada/par-prag.adb +++ b/gcc/ada/par-prag.adb @@ -74,11 +74,11 @@ function Prag (Pragma_Node : Node_Id; Semi : Source_Ptr) return Node_Id is -- is a string literal. If not give error and raise Error_Resync. procedure Check_Arg_Is_On_Or_Off - (Arg : Node_Id; All_OK_Too : Boolean := False); + (Arg : Node_Id; All_Extensions_OK_Too : Boolean := False); -- Check the expression of the specified argument to make sure that it -- is an identifier which is either ON or OFF, and if not, then issue - -- an error message and raise Error_Resync. If All_OK_Too is True, - -- then an ALL identifer is also acceptable. + -- an error message and raise Error_Resync. If All_Extensions_OK_Too is + -- True, then an ALL_EXTENSIONS identifer is also acceptable. procedure Check_No_Identifier (Arg : Node_Id); -- Checks that the given argument does not have an identifier. If @@ -170,21 +170,22 @@ function Prag (Pragma_Node : Node_Id; Semi : Source_Ptr) return Node_Id is ---------------------------- procedure Check_Arg_Is_On_Or_Off - (Arg : Node_Id; All_OK_Too : Boolean := False) + (Arg : Node_Id; All_Extensions_OK_Too : Boolean := False) is Argx : constant Node_Id := Expression (Arg); Error : Boolean := Nkind (Expression (Arg)) /= N_Identifier; begin if not Error then Error := Chars (Argx) not in Name_On | Name_Off - and then not (All_OK_Too and Chars (Argx) = Name_All); + and then not (All_Extensions_OK_Too + and then Chars (Argx) = Name_All_Extensions); end if; if Error then Error_Msg_Name_2 := Name_On; Error_Msg_Name_3 := Name_Off; - if All_OK_Too then - Error_Msg_Name_4 := Name_All; + if All_Extensions_OK_Too then + Error_Msg_Name_4 := Name_All_Extensions; Error_Msg_N ("argument for pragma% must be% or% or%", Argx); else Error_Msg_N ("argument for pragma% must be% or%", Argx); @@ -433,11 +434,11 @@ begin when Pragma_Extensions_Allowed => Check_Arg_Count (1); Check_No_Identifier (Arg1); - Check_Arg_Is_On_Or_Off (Arg1, All_OK_Too => True); + Check_Arg_Is_On_Or_Off (Arg1, All_Extensions_OK_Too => True); if Chars (Expression (Arg1)) = Name_On then Ada_Version := Ada_With_Core_Extensions; - elsif Chars (Expression (Arg1)) = Name_All then + elsif Chars (Expression (Arg1)) = Name_All_Extensions then Ada_Version := Ada_With_All_Extensions; else Ada_Version := Ada_Version_Explicit; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 6091b5e48d3..784c9a49ae3 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -17422,17 +17422,17 @@ package body Sem_Prag is -- Extensions_Allowed -- ------------------------ - -- pragma Extensions_Allowed (ON | OFF | ALL); + -- pragma Extensions_Allowed (ON | OFF | ALL_EXTENSIONS); when Pragma_Extensions_Allowed => GNAT_Pragma; Check_Arg_Count (1); Check_No_Identifiers; - Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off, Name_All); + Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off, Name_All_Extensions); if Chars (Get_Pragma_Arg (Arg1)) = Name_On then Ada_Version := Ada_With_Core_Extensions; - elsif Chars (Get_Pragma_Arg (Arg1)) = Name_All then + elsif Chars (Get_Pragma_Arg (Arg1)) = Name_All_Extensions then Ada_Version := Ada_With_All_Extensions; else Ada_Version := Ada_Version_Explicit; diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl index 6027864e583..c624d04a7f7 100644 --- a/gcc/ada/snames.ads-tmpl +++ b/gcc/ada/snames.ads-tmpl @@ -783,6 +783,7 @@ package Snames is Name_Address_Type : constant Name_Id := N + $; Name_Aggregate : constant Name_Id := N + $; + Name_All_Extensions : constant Name_Id := N + $; Name_Allow : constant Name_Id := N + $; Name_Amount : constant Name_Id := N + $; Name_As_Is : constant Name_Id := N + $; From patchwork Thu Jun 20 08:53:18 2024 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: 1950024 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=kqIZXHZp; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zhp52Yjz20KL for ; Thu, 20 Jun 2024 19:20:26 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D8B20388982E for ; Thu, 20 Jun 2024 09:20:24 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 8DEFB3889807 for ; Thu, 20 Jun 2024 08:53:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8DEFB3889807 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8DEFB3889807 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::432 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873649; cv=none; b=KRmk5S7k3R81S4Ig0OM4vkmv63HOBeP9hWx5JzjClNYvsVdyp0r2xQA+DHZoxYpgxQpLeTy38z+O7K2XLjr1/BcvkS9qBM/DAG4soXm92jzMWDccIc5c6hHJABjK4cvX0PpWeegqYTAtPgFWDXa+2tFK/OM08uVwj2Fg7FSSAjo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873649; c=relaxed/simple; bh=uBHEETSGkJRftxE/18XbezGIklApzzBStyQXXnkduis=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=fD1Rag1TSKu6sRj6y59+KVcB3xiEfjin6/C4N2nlKnQ4R+zZAJQ0VsI4+/7PZkQbWb+OJTZhu/lDDZbmZDIoCm7x/T2cDt8xLR8bs1VZnXS7AGt7qe3vdw60GAVlWSNpWsh4oXj4dt54K7YIdfBqtlatuAhJJvBQrAAasgbDlHU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-363bbd51050so482465f8f.0 for ; Thu, 20 Jun 2024 01:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873637; x=1719478437; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RUVEpjWuxOOKK+d3QOqPtSW+uIyD15zwi+vYIFgKcT8=; b=kqIZXHZpJGL+b1h6SY8CiDYl4HhYk3Hx9MzxIrvM0cmogmcGPLMop/G8ZGDhxXjjCq kvDp4cOkOtNF0VbBXnM8mHBQvApdAcN/Us9/f5bz+tlOool4o/UUy5sWXbHYu1DBMzPk sdO/odoZdoey/WbYctnkGmfTAPZowkB/M3v8gPOYObeF4+p9upY3PfhEEfyy7mPOIkVd azVjPhkGkYHAguztk7JkSKHZlZJNPJa1EmIECiAzngdwB/BGN16cm0C8PvVB6NPorFg/ HhyLxywHFalwaM0MQqEe15uqe5eZGjTfz3lVXQ2g1t/WSb7v3X8Er4fVyg2P85YzzbFv ck1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873637; x=1719478437; 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=RUVEpjWuxOOKK+d3QOqPtSW+uIyD15zwi+vYIFgKcT8=; b=cOfvGSAoS/DkZHYCEDtAjcjaWwOIWetqFGrTrB0l4vNvvAXkuJH+RNGWqPVTuue2bp LCEQm0X8ZpaRdnfpsu9/FX12y/9IRiJRaaTEivwXbaj46jd1kgg43JI33TFaBEyIFIzs AjEPlePs7ryd0F3Rjzi001mQm123Af98eCeO7HpF7xXzPtZ3FqzkoLFoXRMVqIskoSac QA6OLgTG6SN2lfSkzxHJTMVSW4dfA5GmtxoAl4XShWFUfh7Q1e5H1Hcod/qfy6/lNY5Z Bbz8bEY23IF9rgeVXyS4V3kJtXtos/+v4rehG3Lmse20pYMGGQk0uHmK2lgysHKqyfO+ 6CEQ== X-Gm-Message-State: AOJu0Yz0FcLkJ9RN2oy71x2DkjH4LZC/1AWfxUNpq04mrnl3cOaTmi15 dXgQ7DkQqGRUE9ZrlFlDctKxXby8xi0IMALxSIb0zbamzdnsr4KD+vBgir11HAVeu6CkQaWnIvM = X-Google-Smtp-Source: AGHT+IEBXNovat8OD6aFU3N/vBOYnJPdeNSsc5pUB91HU1fsp2I+HN9EYcEL/2KK3TheFovIOK4I1A== X-Received: by 2002:a5d:4e03:0:b0:35f:3e9:d055 with SMTP id ffacd0b85a97d-36319b7ae98mr3326652f8f.69.1718873636133; Thu, 20 Jun 2024 01:53:56 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:55 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Bob Duff Subject: [COMMITTED 28/30] ada: Rewrite generic formal/actual matching Date: Thu, 20 Jun 2024 10:53:18 +0200 Message-ID: <20240620085321.2412421-28-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> 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, KAM_ASCII_DIVIDERS, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Bob Duff ...in preparation for implementing type inference for generic parameters. The main change is to do the "matching" computation early, and produce a *constant* data structure (Gen_Assocs_Rec) to represent the matching between each triple of unanalyzed formal, analyzed formal, and corresponding actual. This will allow us to look at that data structure more than once, which will be necessary for type inference. Matching_Actual is removed; Match_Assocs is added. Other changes include removal of global variables, splitting out processing into subprograms, adding assertions, comment corrections, and other general cleanups. gcc/ada/ * expander.ads: Minor comment fixes. * nlists.ads: Misc comment improvements. * sem_aux.ads (First_Discriminant): Improve comment. * sem_ch12.adb: Misc cleanups. (Associations): New package containing type Gen_Assocs_Rec to represent matchings, and function Match_Assocs to create the Gen_Assocs_Rec constant. (Analyze_Associations): Call Match_Assocs, and other major changes related to that. * sem_ch12.ads: Minor comment fixes. * sem_ch3.adb: Minor comment fixes. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/expander.ads | 6 +- gcc/ada/nlists.ads | 19 +- gcc/ada/sem_aux.ads | 15 +- gcc/ada/sem_ch12.adb | 2641 +++++++++++++++++++++++------------------- gcc/ada/sem_ch12.ads | 4 +- gcc/ada/sem_ch3.adb | 3 +- 6 files changed, 1495 insertions(+), 1193 deletions(-) diff --git a/gcc/ada/expander.ads b/gcc/ada/expander.ads index 07e396420ef..d2b67f1957d 100644 --- a/gcc/ada/expander.ads +++ b/gcc/ada/expander.ads @@ -132,11 +132,11 @@ package Expander is -- exceptions where it makes sense to temporarily change its value are: -- -- (a) when starting/completing the processing of a generic definition - -- or declaration (see routines Start_Generic_Processing and - -- End_Generic_Processing in Sem_Ch12) + -- or declaration (see routines Start_Generic and End_Generic in + -- Sem_Ch12). -- -- (b) when starting/completing the preanalysis of an expression - -- (see the spec of package Sem for more info on preanalysis.) + -- (see the spec of package Sem for more info on preanalysis). -- -- Note that when processing a spec expression (In_Spec_Expression -- is True) or performing semantic analysis of a generic spec or body diff --git a/gcc/ada/nlists.ads b/gcc/ada/nlists.ads index 5aebd603f8b..3aaffbe45ec 100644 --- a/gcc/ada/nlists.ads +++ b/gcc/ada/nlists.ads @@ -124,10 +124,9 @@ package Nlists is -- Used when dealing with a list that can contain pragmas to skip past -- any initial pragmas and return the first element that is not a pragma. -- If the list is empty, or if it contains only pragmas, then Empty is - -- returned. It is an error to call First_Non_Pragma with a Node_Id value - -- or No_List (No_List is not considered to be the same as an empty list). - -- This function also skips N_Null nodes which can result from rewriting - -- unrecognized or incorrect pragmas. + -- returned. It is an error to call this with List = No_List. This function + -- also skips N_Null nodes, which can result from rewriting incorrect + -- pragmas. function Last (List : List_Id) return Node_Or_Entity_Id; pragma Inline (Last); @@ -139,8 +138,8 @@ package Nlists is function Last_Non_Pragma (List : List_Id) return Node_Or_Entity_Id; -- Obtains the last element of a given node list that is not a pragma. -- If the list is empty, or if it contains only pragmas, then Empty is - -- returned. It is an error to call Last_Non_Pragma with a Node_Id or - -- No_List. (No_List is not considered to be the same as an empty list). + -- returned. It is an error to call this with List = No_List. + -- Unlike First_Non_Pragma, this does not skip N_Null nodes. function List_Length (List : List_Id) return Nat; -- Returns number of items in the given list. If called on No_List it @@ -161,8 +160,8 @@ package Nlists is (Node : Node_Or_Entity_Id) return Node_Or_Entity_Id; -- This function returns the next node on a node list, skipping past any -- pragmas, or Empty if there is no non-pragma entry left. The argument - -- must be a member of a node list. This function also skips N_Null nodes - -- which can result from rewriting unrecognized or incorrect pragmas. + -- must be a member of a node list. This function also skips N_Null nodes, + -- which can result from rewriting incorrect pragmas. procedure Next_Non_Pragma (Node : in out Node_Or_Entity_Id); pragma Inline (Next_Non_Pragma); @@ -190,8 +189,8 @@ package Nlists is -- pragmas. If Node is the first element of the list, or if the only -- elements preceding it are pragmas, then Empty is returned. The -- argument must be a member of a node list. Note: the implementation - -- does maintain back pointers, so this function executes quickly in - -- constant time. + -- maintains back pointers, so this function executes quickly in constant + -- time. Unlike Next_Non_Pragma, this does not skip N_Null nodes. procedure Prev_Non_Pragma (Node : in out Node_Or_Entity_Id); pragma Inline (Prev_Non_Pragma); diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads index 6bed7ae9084..f14a9a141d1 100644 --- a/gcc/ada/sem_aux.ads +++ b/gcc/ada/sem_aux.ads @@ -100,14 +100,13 @@ package Sem_Aux is -- entity is declared or Standard_Standard for library-level entities. function First_Discriminant (Typ : Entity_Id) return Entity_Id; - -- Typ is a type with discriminants. The discriminants are the first - -- entities declared in the type, so normally this is equivalent to - -- First_Entity. The exception arises for tagged types, where the tag - -- itself is prepended to the front of the entity chain, so the - -- First_Discriminant function steps past the tag if it is present. - -- The caller is responsible for checking that the type has discriminants. - -- When called on a private type with unknown discriminants, the function - -- always returns Empty. + -- Typ is a type with discriminants or unknown discriminants. The + -- discriminants are the first entities declared in the type, so normally + -- this is equivalent to First_Entity. The exception arises for tagged + -- types, where the tag itself is prepended to the front of the entity + -- chain, so the First_Discriminant function steps past the tag if it is + -- present. When called on a private type with unknown discriminants, the + -- function always returns Empty. -- WARNING: There is a matching C declaration of this subprogram in fe.h diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 8ace16ad008..b93e8231c84 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -190,7 +190,7 @@ package body Sem_Ch12 is -- (This is just part of the semantic analysis of New_Outer). -- Critically, references to Global within Inner must be preserved, while - -- references to Semi_Global should not preserved, because they must now + -- references to Semi_Global should not be preserved, because they must now -- resolve to an entity within New_Outer. To distinguish between these, we -- use a global variable, Current_Instantiated_Parent, which is set when -- performing a generic copy during instantiation (at 2). This variable is @@ -483,7 +483,7 @@ package body Sem_Ch12 is -- and actuals. Each association becomes a renaming declaration for the -- formal entity. F_Copy is the analyzed list of formals in the generic -- copy. It is used to apply legality checks to the actuals. I_Node is the - -- instantiation node itself. + -- instantiation node. procedure Analyze_Subprogram_Instantiation (N : Node_Id; @@ -519,6 +519,18 @@ package body Sem_Ch12 is -- The body of the wrapper is a call to the actual, with the generated -- pre/postconditon checks added. + procedure Build_Subprogram_Wrappers + (Match, Analyzed_Formal : Node_Id; Renamings : List_Id); + -- Ada 2022: AI12-0272 introduces pre/postconditions for formal + -- subprograms. The implementation of making the formal into a renaming + -- of the actual does not work, given that subprogram renaming cannot + -- carry aspect specifications. Instead we must create subprogram + -- wrappers whose body is a call to the actual, and whose declaration + -- carries the aspects of the formal. + -- The wrapper declaration and body are appended to Renamings. + -- ???But renaming declarations CAN have aspects specs, + -- and that was true from the start (see AI05-0183-1). + procedure Check_Abbreviated_Instance (N : Node_Id; Parent_Installed : in out Boolean); @@ -558,7 +570,7 @@ package body Sem_Ch12 is -- package cannot be inlined by the front end because front-end inlining -- requires a strict linear order of elaboration. - function Check_Hidden_Primitives (Assoc_List : List_Id) return Elist_Id; + function Check_Hidden_Primitives (Renamings : List_Id) return Elist_Id; -- Check if some association between formals and actuals requires to make -- visible primitives of a tagged type, and make those primitives visible. -- Return the list of primitives whose visibility is modified (to restore @@ -723,6 +735,17 @@ package body Sem_Ch12 is -- Determine whether a formal subprogram has a Pre- or Postcondition, -- in which case a subprogram wrapper has to be built for the actual. + function Has_Fully_Defined_Profile (Subp : Entity_Id) return Boolean; + -- Determine whether the parameter types and the return type of Subp + -- are fully defined at the point of instantiation. + + function Has_Null_Default (N : Node_Id) return Boolean is + (Nkind (N) in N_Formal_Subprogram_Declaration + and then Nkind (Specification (N)) = N_Procedure_Specification + and then Null_Present (Specification (N))); + -- True if N is the declaration of a formal procedure with "is null" + -- as the default. + procedure Hide_Current_Scope; -- When instantiating a generic child unit, the parent context must be -- present, but the instance and all entities that may be generated @@ -786,9 +809,9 @@ package body Sem_Ch12 is -- generic parent of a generic child unit when compiling its body, so -- that full views of types in the parent are made visible. - -- The functions Instantiate_XXX perform various legality checks and build + -- The functions Instantiate_... perform various legality checks and build -- the declarations for instantiated generic parameters. In all of these - -- Formal is the entity in the generic unit, Actual is the entity of + -- Formal is the entity in the generic unit, Actual is the entity or -- expression in the generic associations, and Analyzed_Formal is the -- formal in the generic copy, which contains the semantic information to -- be used to validate the actual. @@ -803,6 +826,11 @@ package body Sem_Ch12 is Actual : Node_Id; Analyzed_Formal : Node_Id; Actual_Decls : List_Id) return List_Id; + -- Actual_Decls is the list of renamings being built; this is used for + -- formal derived types, to determine whether the parent type is another + -- formal derived type in the same generic unit. + -- Note that the call site appends the result of this function onto + -- the same list. function Instantiate_Formal_Subprogram (Formal : Node_Id; @@ -894,6 +922,10 @@ package body Sem_Ch12 is procedure Remove_Parent (In_Body : Boolean := False); -- Reverse effect after instantiation of child is complete + function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean; + -- Determine whether Subp renames one of the subprograms defined in the + -- generated package Standard. + function Requires_Conformance_Checking (N : Node_Id) return Boolean; -- Determine whether the formal package declaration N requires conformance -- checking with actuals in instantiations. @@ -1087,507 +1119,879 @@ package body Sem_Ch12 is Table_Increment => 200, Table_Name => "Generic_Flags"); - --------------------------- - -- Abandon_Instantiation -- - --------------------------- - - procedure Abandon_Instantiation (N : Node_Id) is - begin - Error_Msg_N ("\instantiation abandoned!", N); - raise Instantiation_Error; - end Abandon_Instantiation; + ------------------ + -- Associations -- + ------------------ + + package Associations is + + type Actual_Kind is + (None, + None_Use_Clause, + -- Used when the "formal" is a use clause; there is no corresponding + -- actual. + Box_Subp_Default, + -- Used for "is <>" as a subprogram default + Box_Actual, + -- Used for explicit "name => <>" and "others => <>" in formal + -- packages. + Name_Exp, + -- Name or expression or .... + -- Used for an explicit_generic_actual_parameter, and also for the + -- default_expression of an in-mode formal, the default_subtype_mark + -- of a formal type, and the default_name of a formal subprogram. + Null_Default, + -- Used for "is null" as a subprogram default. + Exp_Func_Default, + -- Used for "is (expression)" as a subprogram default, + -- which is a language extension (and is different from "is name" + -- without parentheses). + Dummy_Assoc + -- Used for the dummy associations that are created in + -- Save_Global_Defaults. These have Explicit_Generic_Actual_Parameter + -- = Empty and Box_Present = False + ); + -- ???We wouldn't need this enumeration type if we created new node + -- kinds for N_Box_Subp_Default, N_Box_Actual, N_Null_Default, and + -- N_Exp_Func_Default. + + type Generic_Actual_Rec (Kind : Actual_Kind := None) is record + -- Representation of one generic actual parameter + case Kind is + when None | None_Use_Clause | Box_Subp_Default | Box_Actual | + Null_Default | Dummy_Assoc => + null; + when Name_Exp | Exp_Func_Default => + Name_Exp : Node_Id; + end case; + end record; + + type Actual_Origin_Enum is + (None, From_Explicit_Actual, From_Default, From_Others_Box); + -- Indication of where the Actual came from -- explicitly in the + -- instantiation, or defaulted. + + type Assoc_Index is new Pos; + subtype Assoc_Count is Assoc_Index'Base range 0 .. Assoc_Index'Last; + + type Assoc_Rec is record + -- Association between a single formal/actual pair. But we store both + -- the unanalyzed and analyzed formal. + + Un_Formal, An_Formal : Node_Id; -- unanalyzed and analyzed formals + -- An_Formal is the node in the generic copy that corresponds to + -- Un_Formal. The semantic information on this node is used to + -- perform legality checks on the actuals. Because semantic analysis + -- can introduce some anonymous entities or modify the declaration + -- node itself, the correspondence between the two lists is not + -- one-one. In addition to anonymous types, a formal "=" will + -- introduce an implicit equal and opposite "/=". + + Explicit_Assoc : Opt_N_Generic_Association_Id; + -- Explicit association, if any, from the source or generated. + + Actual : Generic_Actual_Rec; + -- Generic actual parameter corresponding to Un_Formal/An_Formal, + -- possibly from defaults or others/boxes. + + Actual_Origin : Actual_Origin_Enum; + -- Reason why Actual was set; where it came from + end record; + + type Assoc_Array is array (Assoc_Index range <>) of Assoc_Rec; + -- One element for each formal and (if legal) for each corresponding + -- actual. + + type Gen_Assocs_Rec (Num_Assocs : Assoc_Count) is record + -- Representation of formal/actual matching. Num_Assocs + -- is the number of formals and (if legal) the number + -- of actuals. + Others_Present : Boolean; + -- True if "others => <>" (only for formal packages) + Assocs : Assoc_Array (1 .. Num_Assocs); + end record; + + function Match_Assocs + (I_Node : Node_Id; Formals : List_Id; F_Copy : List_Id) + return Gen_Assocs_Rec; + -- I_Node is the instantiation node. Formals is the list of unanalyzed + -- formals. F_Copy is the analyzed list of formals in the generic copy. + -- Return a Gen_Assocs_Rec with formals, explicit actuals, and default + -- actuals filled in. Check legality rules related to formal/actual + -- matching. + + end Associations; + + procedure Analyze_One_Association + (I_Node : Node_Id; -- instantiation node + Assoc : Associations.Assoc_Rec; + -- Logical 'in out' parameters: + Result_Renamings : List_Id; + Default_Actuals : List_Id; + Actuals_To_Freeze : Elist_Id); + -- Called by Analyze_Associations for each association. The renamings + -- are appended onto Result_Renamings. Defaulted actuals are appended + -- onto Default_Actuals, and actuals that require freezing are + -- appended onto Actuals_To_Freeze. + + procedure Check_Fixed_Point_Warning + (Gen_Assocs : Associations.Gen_Assocs_Rec; + Renamings : List_Id); + -- Warn if any actual is a fixed-point type that has user-defined + -- arithmetic operators, but there is no corresponding formal in the + -- generic, in which case the predefined operators will be used. This + -- merits a warning because of the special semantics of fixed point + -- operators. However, do not warn if the formal is private, because there + -- can be no arithmetic operators in the generic so there no danger of + -- confusion. + + ------------------ + -- Associations -- + ------------------ + + package body Associations is + + generic + with procedure Action (F : Node_Id; Index : Assoc_Index); + procedure Formal_Iter (Formals : List_Id); + -- Iterate through the unanalyzed formals, calling Action for each one. + -- Skip pragmas, but do not skip use clauses. + + function Num_Formals (Formals : List_Id) return Assoc_Count; + -- Note: does not include pragmas that occur in the Formals list; + -- it does include use clauses. + + generic + with procedure Action (F : Node_Id; Index : Assoc_Index); + procedure An_Formal_Iter (An_Formals : List_Id); + -- Iterate through the analyzed formals, calling Action for each one + -- that corresponds to an unanalyzed formal. This should call Action + -- exactly the same number of times that Formal_Iter calls its Action. + -- Skip pragmas, but do not skip use clauses. Skip extraneous + -- analyzed formals in cases where there are multiple ones + -- corresponding to a particular unanalyzed one. + + function Num_An_Formals (F_Copy : List_Id) return Assoc_Count; + -- Number of analyzed formals that correspond directly to unanalyzed + -- formals. There are all sorts of other things in F_Copy, which + -- are not counted. + + procedure Check_Box (I_Node, Actual : Node_Id); + -- Check for errors in "others => <>" and "Name => <>" + + function Default (Un_Formal : Node_Id) return Generic_Actual_Rec; + -- Return the default for a given formal, which can be a name, + -- expression, box, etc. + + procedure Match_Positional + (Src_Assoc : in out Node_Id; Assoc : in out Assoc_Rec); + -- Called by Match_Assocs to match one positional parameter association. + -- If the current formal (in Assoc) is not a use clause, then there is a + -- match, and we set Assoc.Actual and move Src_Assoc to the next one. + + procedure Match_Named + (Src_Assoc : Node_Id; Assoc : in out Assoc_Rec; + Found : in out Boolean); + -- Called by Match_Assocs to match one named parameter association. + -- If the current formal (in Assoc) is not a use clause, and the + -- selector name matches the formal name, then there is a match, + -- and we set Assoc.Actual. We also set the Selector_Name to denote + -- the matched formal, and set Found to True. + + ----------------- + -- Formal_Iter -- + ----------------- + + -- Formal_Iter is straightforward; An_Formal_Iter is not. + + procedure Formal_Iter (Formals : List_Id) is + F : Node_Id := First (Formals); + Index : Assoc_Index := 1; + begin + while Present (F) loop + case Nkind (F) is + when N_Formal_Object_Declaration + | N_Formal_Type_Declaration + | N_Formal_Subprogram_Declaration + | N_Formal_Package_Declaration + | N_Use_Package_Clause + | N_Use_Type_Clause + => + Action (F, Index); + Index := Index + 1; + when N_Pragma => + null; + when others => + raise Program_Error; + end case; - ---------------------------------- - -- Adjust_Inherited_Pragma_Sloc -- - ---------------------------------- + Next (F); + end loop; + end Formal_Iter; - procedure Adjust_Inherited_Pragma_Sloc (N : Node_Id) is - begin - Adjust_Instantiation_Sloc (N, S_Adjustment); - end Adjust_Inherited_Pragma_Sloc; + ----------------- + -- Num_Formals -- + ----------------- - -------------------------- - -- Analyze_Associations -- - -------------------------- + function Num_Formals (Formals : List_Id) return Assoc_Count is + Result : Assoc_Count := 0; + procedure Action (Ignore_F : Node_Id; Ignore : Assoc_Index); + procedure Action (Ignore_F : Node_Id; Ignore : Assoc_Index) is + begin + Result := Result + 1; + end Action; + procedure Iter is new Formal_Iter (Action); + begin + Iter (Formals); + return Result; + end Num_Formals; - function Analyze_Associations - (I_Node : Node_Id; - Formals : List_Id; - F_Copy : List_Id) return List_Id - is - Actuals_To_Freeze : constant Elist_Id := New_Elmt_List; - Assoc_List : constant List_Id := New_List; - Default_Actuals : constant List_Id := New_List; - Gen_Unit : constant Entity_Id := - Defining_Entity (Parent (F_Copy)); + -------------------- + -- An_Formal_Iter -- + -------------------- - Actuals : List_Id; - Actual : Node_Id; - Analyzed_Formal : Node_Id; - First_Named : Node_Id := Empty; - Formal : Node_Id; - Match : Node_Id := Empty; - Named : Node_Id; - Saved_Formal : Node_Id; - - Default_Formals : constant List_Id := New_List; - -- If an N_Others_Choice is present, some of the formals may be - -- defaulted. To simplify the treatment of visibility in an instance, - -- we introduce individual defaults for each such formal. These - -- defaults are appended to the list of associations and replace the - -- N_Others_Choice. - - Found_Assoc : Node_Id; - -- Association for the current formal being match. Empty if there are - -- no remaining actuals, or if there is no named association with the - -- name of the formal. - - Is_Named_Assoc : Boolean; - Num_Matched : Nat := 0; - Num_Actuals : Nat := 0; - - Others_Present : Boolean := False; - -- In Ada 2005, indicates partial parameterization of a formal - -- package. As usual an 'others' association must be last in the list. - - procedure Build_Subprogram_Wrappers; - -- Ada 2022: AI12-0272 introduces pre/postconditions for formal - -- subprograms. The implementation of making the formal into a renaming - -- of the actual does not work, given that subprogram renaming cannot - -- carry aspect specifications. Instead we must create subprogram - -- wrappers whose body is a call to the actual, and whose declaration - -- carries the aspects of the formal. - - procedure Check_Fixed_Point_Actual (Actual : Node_Id); - -- Warn if an actual fixed-point type has user-defined arithmetic - -- operations, but there is no corresponding formal in the generic, - -- in which case the predefined operations will be used. This merits - -- a warning because of the special semantics of fixed point ops. - - procedure Check_Overloaded_Formal_Subprogram (Formal : Node_Id); - -- Apply RM 12.3(9): if a formal subprogram is overloaded, the instance - -- cannot have a named association for it. AI05-0025 extends this rule - -- to formals of formal packages by AI05-0025, and it also applies to - -- box-initialized formals. - - function Has_Fully_Defined_Profile (Subp : Entity_Id) return Boolean; - -- Determine whether the parameter types and the return type of Subp - -- are fully defined at the point of instantiation. - - function Matching_Actual - (F : Entity_Id; - A_F : Entity_Id) return Node_Id; - -- Find actual that corresponds to a given formal parameter. If the - -- actuals are positional, return the next one, if any. If the actuals - -- are named, scan the parameter associations to find the right one. - -- A_F is the corresponding entity in the analyzed generic, which is - -- placed on the selector name. - -- - -- In Ada 2005, a named association may be given with a box, in which - -- case Matching_Actual sets Found_Assoc to the generic association, - -- but return Empty for the actual itself. In this case the code below - -- creates a corresponding declaration for the formal. - - function Partial_Parameterization return Boolean; - -- Ada 2005: if no match is found for a given formal, check if the - -- association for it includes a box, or whether the associations - -- include an Others clause. - - procedure Process_Default (Formal : Node_Id); - -- Add a copy of the declaration of a generic formal to the list of - -- associations, and add an explicit box association for its entity - -- if there is none yet, and the default comes from an N_Others_Choice. - - function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean; - -- Determine whether Subp renames one of the subprograms defined in the - -- generated package Standard. - - procedure Set_Analyzed_Formal; - -- Find the node in the generic copy that corresponds to a given formal. - -- The semantic information on this node is used to perform legality - -- checks on the actuals. Because semantic analysis can introduce some - -- anonymous entities or modify the declaration node itself, the - -- correspondence between the two lists is not one-one. In addition to - -- anonymous types, the presence a formal equality will introduce an - -- implicit declaration for the corresponding inequality. + procedure An_Formal_Iter (An_Formals : List_Id) is + F : Node_Id := First (An_Formals); + Index : Assoc_Index := 1; + begin + -- The correspondence between unanalyzed and analyzed formals is not + -- one-one; hence this needs to do some fancy footwork to skip some + -- items in the analyzed formals list. In each case where multiple + -- items in An_Formals correspond to a particular unanalyzed formal, + -- we must pick the "main" one. + + while Present (F) loop + case Nkind (F) is + when N_Use_Package_Clause | N_Use_Type_Clause => + Action (F, Index); + Index := Index + 1; + + when N_Formal_Object_Declaration + | N_Formal_Type_Declaration + | N_Formal_Subprogram_Declaration + | N_Package_Declaration + | N_Full_Type_Declaration + | N_Private_Type_Declaration + | N_Private_Extension_Declaration + => + if Is_Internal_Name (Chars (Defining_Entity (F))) then + null; + else + Action (F, Index); + Index := Index + 1; + + if Nkind (F) = N_Full_Type_Declaration + and then Nkind (Type_Definition (F)) = + N_Derived_Type_Definition + and then Present (Next (F)) + and then Nkind (Next (F)) = N_Full_Type_Declaration + and then Chars (Defining_Identifier (F)) = + Chars (Defining_Identifier (Next (F))) + then + Next (F); -- Skip full type of derived type + end if; + end if; - ------------------------------- - -- Build_Subprogram_Wrappers -- - ------------------------------- + when N_Subtype_Declaration => + if Nkind (Original_Node (F)) in N_Formal_Type_Declaration + then + pragma Assert + (not Is_Internal_Name (Chars (Defining_Entity (F)))); + Action (F, Index); + Index := Index + 1; + elsif Nkind (Original_Node (F)) in N_Full_Type_Declaration + then + null; + else + -- subtype of a formal object + pragma Assert + (Nkind (Next (F)) = N_Formal_Object_Declaration); + end if; + when N_Pragma => + null; + when N_Formal_Package_Declaration => + -- If there were no errors, this would have been transformed + -- into N_Package_Declaration. + Check_Error_Detected; + pragma Assert (Error_Posted (F)); + Abandon_Instantiation (Instantiation_Node); + when others => + raise Program_Error; + end case; - procedure Build_Subprogram_Wrappers is - function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result; - -- Adjust sloc so that errors located at N will be reported with - -- information about the instance and not just about the generic. + Next (F); + end loop; + end An_Formal_Iter; - ------------------------ - -- Adjust_Aspect_Sloc -- - ------------------------ + -------------------- + -- Num_An_Formals -- + -------------------- - function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result is + function Num_An_Formals (F_Copy : List_Id) return Assoc_Count is + Result : Assoc_Count := 0; + procedure Action (Ignore_F : Node_Id; Ignore : Assoc_Index); + procedure Action (Ignore_F : Node_Id; Ignore : Assoc_Index) is begin - Adjust_Instantiation_Sloc (N, S_Adjustment); - return OK; - end Adjust_Aspect_Sloc; - - procedure Adjust_Aspect_Slocs is new - Traverse_Proc (Adjust_Aspect_Sloc); - - Formal : constant Entity_Id := - Defining_Unit_Name (Specification (Analyzed_Formal)); - Aspect_Spec : Node_Id; - Decl_Node : Node_Id; - Actual_Name : Node_Id; + Result := Result + 1; + end Action; + procedure Iter is new An_Formal_Iter (Action); + begin + Iter (F_Copy); + return Result; + end Num_An_Formals; - -- Start of processing for Build_Subprogram_Wrappers + --------------- + -- Check_Box -- + --------------- + procedure Check_Box (I_Node, Actual : Node_Id) is begin - -- Create declaration for wrapper subprogram - -- The actual can be overloaded, in which case it will be - -- resolved when the call in the wrapper body is analyzed. - -- We attach the possible interpretations of the actual to - -- the name to be used in the call in the wrapper body. - - if Is_Entity_Name (Match) then - Actual_Name := New_Occurrence_Of (Entity (Match), Sloc (Match)); + -- "... => <>" is allowed only in formal packages, not old-fashioned + -- instantiations. - if Is_Overloaded (Match) then - Save_Interps (Match, Actual_Name); + if Nkind (I_Node) /= N_Formal_Package_Declaration + and then Comes_From_Source (I_Node) + then + if Actual in N_Others_Choice_Id then + Error_Msg_N + ("OTHERS association not allowed in an instance", Actual); + elsif Box_Present (Actual) then + Error_Msg_N + ("box association not allowed in an instance", Actual); end if; + end if; - else - -- Use renaming declaration created when analyzing actual. - -- This may be incomplete if there are several formal - -- subprograms whose actual is an attribute ??? - - declare - Renaming_Decl : constant Node_Id := Last (Assoc_List); + -- "others => <>" must come last - begin - Actual_Name := New_Occurrence_Of - (Defining_Entity (Renaming_Decl), Sloc (Match)); - Set_Etype (Actual_Name, Get_Instance_Of (Etype (Formal))); - end; + if Actual in N_Others_Choice_Id + and then Present (Next (Actual)) + then + Error_Msg_N + ("OTHERS must be last association", Actual); end if; + end Check_Box; - Decl_Node := Build_Subprogram_Decl_Wrapper (Formal); + ------------- + -- Default -- + ------------- - -- Transfer aspect specifications from formal subprogram to wrapper + function Default (Un_Formal : Node_Id) return Generic_Actual_Rec is + begin + return Result : Generic_Actual_Rec do + case Nkind (Un_Formal) is + when N_Formal_Object_Declaration => + if Present (Default_Expression (Un_Formal)) then + Result := (Name_Exp, Default_Expression (Un_Formal)); + end if; + when N_Formal_Type_Declaration => + if Present (Default_Subtype_Mark (Un_Formal)) then + Result := (Name_Exp, Default_Subtype_Mark (Un_Formal)); + end if; + when N_Formal_Subprogram_Declaration => + if Present (Default_Name (Un_Formal)) then + pragma Assert (Result.Kind = None); + Result := (Name_Exp, Default_Name (Un_Formal)); + end if; - Set_Aspect_Specifications (Decl_Node, - New_Copy_List_Tree (Aspect_Specifications (Analyzed_Formal))); + if Box_Present (Un_Formal) then + pragma Assert (Result.Kind = None); + Result := (Kind => Box_Subp_Default); + end if; - Aspect_Spec := First (Aspect_Specifications (Decl_Node)); - while Present (Aspect_Spec) loop - Adjust_Aspect_Slocs (Aspect_Spec); - Set_Analyzed (Aspect_Spec, False); - Next (Aspect_Spec); - end loop; + if Present (Expression (Un_Formal)) then + pragma Assert (Result.Kind = None); + Result := (Exp_Func_Default, Expression (Un_Formal)); + end if; - Append_To (Assoc_List, Decl_Node); + if Has_Null_Default (Un_Formal) then + pragma Assert (Result.Kind = None); + Result := (Kind => Null_Default); + end if; - -- Create corresponding body, and append it to association list - -- that appears at the head of the declarations in the instance. - -- The subprogram may be called in the analysis of subsequent - -- actuals. + when N_Formal_Package_Declaration => null; + when others => raise Program_Error; + end case; + pragma Assert + (if Result.Kind in Name_Exp | Exp_Func_Default then + Present (Result.Name_Exp)); + end return; + end Default; - Append_To (Assoc_List, - Build_Subprogram_Body_Wrapper (Formal, Actual_Name)); - end Build_Subprogram_Wrappers; + ---------------------- + -- Match_Positional -- + ---------------------- - ---------------------------------------- - -- Check_Overloaded_Formal_Subprogram -- - ---------------------------------------- + procedure Match_Positional + (Src_Assoc : in out Node_Id; Assoc : in out Assoc_Rec) is + begin + if Nkind (Assoc.Un_Formal) not in + N_Use_Package_Clause | N_Use_Type_Clause + then + pragma Assert (No (Assoc.Explicit_Assoc)); + pragma Assert (Assoc.Actual.Kind = None); + Assoc.Explicit_Assoc := Src_Assoc; - procedure Check_Overloaded_Formal_Subprogram (Formal : Node_Id) is - Temp_Formal : Node_Id; + -- A "<>" without "name =>" is illegal syntax - begin - Temp_Formal := First (Formals); - while Present (Temp_Formal) loop - if Nkind (Temp_Formal) in N_Formal_Subprogram_Declaration - and then Temp_Formal /= Formal - and then - Chars (Defining_Unit_Name (Specification (Formal))) = - Chars (Defining_Unit_Name (Specification (Temp_Formal))) - then - if Present (Found_Assoc) then + if Box_Present (Src_Assoc) then + Assoc.Actual := (Kind => Box_Actual); + if False then -- ??? + -- Disable this for now, because we have various + -- code that needs to be updated. Error_Msg_N - ("named association not allowed for overloaded formal", - Found_Assoc); - Abandon_Instantiation (Instantiation_Node); + ("box requires named notation", Src_Assoc); end if; + else + Assoc.Actual := + (Name_Exp, + Explicit_Generic_Actual_Parameter (Src_Assoc)); + pragma Assert (Present (Assoc.Actual.Name_Exp)); end if; + Assoc.Actual_Origin := From_Explicit_Actual; - Next (Temp_Formal); - end loop; - end Check_Overloaded_Formal_Subprogram; - - ------------------------------- - -- Check_Fixed_Point_Actual -- - ------------------------------- + Next (Src_Assoc); + end if; + end Match_Positional; - procedure Check_Fixed_Point_Actual (Actual : Node_Id) is - Typ : constant Entity_Id := Entity (Actual); - Prims : constant Elist_Id := Collect_Primitive_Operations (Typ); - Elem : Elmt_Id; - Formal : Node_Id; - Op : Entity_Id; + ----------------- + -- Match_Named -- + ----------------- + procedure Match_Named + (Src_Assoc : Node_Id; Assoc : in out Assoc_Rec; + Found : in out Boolean) is begin - -- Locate primitive operations of the type that are arithmetic - -- operations. + if Nkind (Assoc.Un_Formal) not in + N_Use_Package_Clause | N_Use_Type_Clause + and then Chars (Selector_Name (Src_Assoc)) = + Chars (Defining_Entity (Assoc.Un_Formal)) + then + if Found then -- second formal with the same name + pragma Assert (Comes_From_Source (Src_Assoc)); + Error_Msg_N + ("named association not allowed for " & + "overloaded formal", Src_Assoc); + Abandon_Instantiation (Instantiation_Node); + end if; - Elem := First_Elmt (Prims); - while Present (Elem) loop - if Nkind (Node (Elem)) = N_Defining_Operator_Symbol then + if Assoc.Actual.Kind /= None then + if Comes_From_Source (Src_Assoc) then + Error_Msg_NE + ("duplicate actual for &", + Src_Assoc, Selector_Name (Src_Assoc)); + end if; + else + Assoc.Explicit_Assoc := Src_Assoc; + if Box_Present (Src_Assoc) then + Assoc.Actual := (Kind => Box_Actual); - -- Check whether the generic unit has a formal subprogram of - -- the same name. This does not check types but is good enough - -- to justify a warning. + else + if No (Explicit_Generic_Actual_Parameter (Src_Assoc)) then + Assoc.Actual := (Kind => Dummy_Assoc); + else + Assoc.Actual := + (Name_Exp, + Explicit_Generic_Actual_Parameter (Src_Assoc)); + end if; - Formal := First_Non_Pragma (Formals); - Op := Alias (Node (Elem)); + -- Set Entity (etc.) of the selector name: - while Present (Formal) loop - if Nkind (Formal) = N_Formal_Concrete_Subprogram_Declaration - and then Chars (Defining_Entity (Formal)) = - Chars (Node (Elem)) - then - exit; - - elsif Nkind (Formal) = N_Formal_Package_Declaration then - declare - Assoc : Node_Id; - Ent : Entity_Id; + declare + A_F : constant Entity_Id := + Defining_Entity (Assoc.An_Formal); + Orig_F : constant Node_Id := + Original_Node (Assoc.An_Formal); + Sel : constant Node_Id := + Selector_Name (Assoc.Explicit_Assoc); + begin + Set_Entity (Sel, A_F); + Set_Etype (Sel, Etype (A_F)); - begin - -- Locate corresponding actual, and check whether it - -- includes a fixed-point type. + if Nkind (Orig_F) = N_Formal_Package_Declaration then + Generate_Reference (Defining_Identifier (Orig_F), Sel); + -- ???Original_Node makes no sense, but we're + -- preserving the old behavior. + else + Generate_Reference (A_F, Sel); + end if; + end; + end if; - Assoc := First (Assoc_List); - while Present (Assoc) loop - exit when - Nkind (Assoc) = N_Package_Renaming_Declaration - and then Chars (Defining_Unit_Name (Assoc)) = - Chars (Defining_Identifier (Formal)); + Assoc.Actual_Origin := From_Explicit_Actual; + Found := True; + end if; + end if; + end Match_Named; - Next (Assoc); - end loop; + ------------------ + -- Match_Assocs -- + ------------------ - if Present (Assoc) then + function Match_Assocs + (I_Node : Node_Id; Formals : List_Id; F_Copy : List_Id) + return Gen_Assocs_Rec + is + Src_Assocs : constant List_Id := Generic_Associations (I_Node); + Gen_Unit : constant Entity_Id := Defining_Entity (Parent (F_Copy)); + begin + pragma Assert + (Num_An_Formals (F_Copy) = Num_Formals (Formals) + or else Serious_Errors_Detected > 0); - -- If formal package declares a fixed-point type, - -- and the user-defined operator is derived from - -- a generic instance package, the fixed-point type - -- does not use the corresponding predefined op. + return Result : Gen_Assocs_Rec (Num_Assocs => Num_Formals (Formals)) + do + Result.Others_Present := False; - Ent := First_Entity (Entity (Name (Assoc))); - while Present (Ent) loop - if Is_Fixed_Point_Type (Ent) - and then Present (Op) - and then Is_Generic_Instance (Scope (Op)) - then - return; - end if; + -- Loop through the unanalyzed formals: - Next_Entity (Ent); - end loop; - end if; - end; + declare + procedure Set_Formal (F : Node_Id; Index : Assoc_Index); + procedure Set_Formal (F : Node_Id; Index : Assoc_Index) is + Assoc : Assoc_Rec renames Result.Assocs (Index); + begin + if Nkind (F) in N_Use_Package_Clause | N_Use_Type_Clause then + Assoc := + (Un_Formal => F, + An_Formal => Empty, + Explicit_Assoc => Empty, + Actual => (Kind => None_Use_Clause), + Actual_Origin => None); + else + Assoc := + (Un_Formal => F, + An_Formal => Empty, + Explicit_Assoc => Empty, + Actual => <>, + Actual_Origin => None); end if; + end Set_Formal; + procedure Iter is new Formal_Iter (Set_Formal); + begin + Iter (Formals); + end; - Next (Formal); - end loop; + -- Loop through the analyzed copy of the formals: - if No (Formal) then - Error_Msg_Sloc := Sloc (Node (Elem)); - Error_Msg_NE - ("?instance uses predefined, not primitive, operator&#", - Actual, Node (Elem)); - end if; - end if; - - Next_Elmt (Elem); - end loop; - end Check_Fixed_Point_Actual; + declare + procedure Set_An_Formal (F : Node_Id; Index : Assoc_Index); + procedure Set_An_Formal (F : Node_Id; Index : Assoc_Index) is + Assoc : Assoc_Rec renames Result.Assocs (Index); + begin + Assoc.An_Formal := F; + if Nkind (F) in N_Use_Package_Clause | N_Use_Type_Clause then + pragma Assert + (Nkind (Assoc.Un_Formal) = Nkind (Assoc.An_Formal)); - ------------------------------- - -- Has_Fully_Defined_Profile -- - ------------------------------- + else + case Nkind (Assoc.Un_Formal) is + when N_Formal_Object_Declaration + | N_Formal_Subprogram_Declaration + => + pragma Assert + (Nkind (Assoc.Un_Formal) = + Nkind (Assoc.An_Formal)); + + when N_Formal_Type_Declaration => + pragma Assert + (Nkind (Original_Node (Assoc.An_Formal)) = + N_Formal_Type_Declaration); + pragma Assert + (Nkind (Assoc.An_Formal) in + N_Formal_Type_Declaration + | N_Full_Type_Declaration + | N_Private_Type_Declaration + | N_Private_Extension_Declaration + | N_Subtype_Declaration); + + when N_Formal_Package_Declaration => + pragma Assert + (Nkind (Original_Node (Assoc.An_Formal)) = + N_Formal_Package_Declaration); + pragma Assert + (Nkind (Assoc.An_Formal) = N_Package_Declaration); + + when others => pragma Assert (False); + end case; + + pragma Assert + (Chars (Defining_Entity (Assoc.Un_Formal)) = + Chars (Defining_Entity (Assoc.An_Formal))); + end if; + end Set_An_Formal; - function Has_Fully_Defined_Profile (Subp : Entity_Id) return Boolean is - function Is_Fully_Defined_Type (Typ : Entity_Id) return Boolean; - -- Determine whethet type Typ is fully defined + procedure Iter is new An_Formal_Iter (Set_An_Formal); + begin + pragma Assert + (Num_An_Formals (F_Copy) = Result.Assocs'Last + or else Serious_Errors_Detected > 0); + Iter (F_Copy); + end; - --------------------------- - -- Is_Fully_Defined_Type -- - --------------------------- + -- Loop through actual source associations: - function Is_Fully_Defined_Type (Typ : Entity_Id) return Boolean is - begin - -- A private type without a full view is not fully defined + declare + Src_Assoc : Node_Id := First (Src_Assocs); + -- Generic association from the source + + function Positional return Boolean is + (Present (Src_Assoc) + and then Src_Assoc not in N_Others_Choice_Id + and then No (Selector_Name (Src_Assoc))); + -- True if Src_Assoc is position; i.e. not named and not others + begin + -- Loop through positional actuals: - if Is_Private_Type (Typ) - and then No (Full_View (Typ)) - then - return False; + for Index in Result.Assocs'Range loop + exit when not Positional; + Match_Positional (Src_Assoc, Result.Assocs (Index)); + end loop; - -- An incomplete type is never fully defined + if Positional then + Error_Msg_Sloc := Sloc (Gen_Unit); + Error_Msg_NE + ("unmatched actual in instantiation of & declared#", + Src_Assoc, Gen_Unit); + else + -- Loop through named actuals and "others => <>": - elsif Is_Incomplete_Type (Typ) then - return False; + while Present (Src_Assoc) loop + Check_Box (I_Node, Src_Assoc); + if Src_Assoc in N_Others_Choice_Id then + Result.Others_Present := True; + exit; + end if; - -- All other types are fully defined + if Positional then + Error_Msg_N + ("invalid positional actual after named one", + Src_Assoc); + else + -- For actual "X => ...", find formal whose name is X. + -- Complain if X has already been specified (could be + -- by a positional association, or by a previous named + -- one). Also complain if there's more than one X. + -- See RM-12.3(9/3) and 12.7(4.1/3). + -- However, this rule does not apply to generated + -- code,because for nested instances, we routinely + -- generate things like: + -- X => ..., X => ... + -- where the first one refers to the first formal X, + -- and the second one refers to the second formal X, + -- and so on. (The X's are formal subprograms in this + -- case.) + + declare + Found : Boolean := False; + begin + for Index in Result.Assocs'Range loop + Match_Named + (Src_Assoc, Result.Assocs (Index), Found); + exit when Found + and then not Comes_From_Source (Src_Assoc); + end loop; - else - return True; - end if; - end Is_Fully_Defined_Type; + if not Found and then Comes_From_Source (Src_Assoc) + then + Error_Msg_Sloc := Sloc (Gen_Unit); + Error_Msg_NE + ("unmatched actual &", + Src_Assoc, Selector_Name (Src_Assoc)); + Error_Msg_NE + ("\in instantiation of & declared#", + Src_Assoc, Gen_Unit); + end if; + end; + end if; - -- Local declarations + Next (Src_Assoc); + end loop; + end if; + end; - Param : Entity_Id; + -- Fill in defaults. For each formal F with no associated actual, + -- if there is "others => <>", set the actual to "F => <>". + -- Otherwise, if the formal has a default, set the actual to + -- "F => default". Otherwise leave it Empty. - -- Start of processing for Has_Fully_Defined_Profile + for Index in Result.Assocs'Range loop + declare + Assoc : Assoc_Rec renames Result.Assocs (Index); + begin + if Assoc.Actual.Kind = None then + pragma Assert (No (Assoc.Explicit_Assoc)); + if Result.Others_Present then + Assoc.Actual := (Kind => Box_Actual); + Assoc.Actual_Origin := From_Others_Box; + else + Assoc.Actual := Default (Assoc.Un_Formal); + if Assoc.Actual.Kind /= None then + Assoc.Actual_Origin := From_Default; + end if; + end if; + end if; + end; + end loop; - begin - -- Check the parameters + -- Check for missing actuals - Param := First_Formal (Subp); - while Present (Param) loop - if not Is_Fully_Defined_Type (Etype (Param)) then - return False; - end if; + for Index in Result.Assocs'Range loop + if Result.Assocs (Index).Actual.Kind = None then + Error_Msg_Sloc := Sloc (Gen_Unit); + Error_Msg_NE + ("missing actual &", + Instantiation_Node, + Defining_Entity (Result.Assocs (Index).Un_Formal)); + Error_Msg_NE + ("\in instantiation of & declared#", + Instantiation_Node, Gen_Unit); + Abandon_Instantiation (Instantiation_Node); + end if; + end loop; + end return; + end Match_Assocs; - Next_Formal (Param); - end loop; + end Associations; - -- Check the return type + --------------------------- + -- Abandon_Instantiation -- + --------------------------- - return Is_Fully_Defined_Type (Etype (Subp)); - end Has_Fully_Defined_Profile; + procedure Abandon_Instantiation (N : Node_Id) is + begin + Error_Msg_N ("\instantiation abandoned!", N); + raise Instantiation_Error; + end Abandon_Instantiation; - --------------------- - -- Matching_Actual -- - --------------------- + ---------------------------------- + -- Adjust_Inherited_Pragma_Sloc -- + ---------------------------------- - function Matching_Actual - (F : Entity_Id; - A_F : Entity_Id) return Node_Id - is - Prev : Node_Id; - Act : Node_Id; + procedure Adjust_Inherited_Pragma_Sloc (N : Node_Id) is + begin + Adjust_Instantiation_Sloc (N, S_Adjustment); + end Adjust_Inherited_Pragma_Sloc; - begin - Is_Named_Assoc := False; + -------------------------- + -- Analyze_Associations -- + -------------------------- - -- End of list of purely positional parameters + function Analyze_Associations + (I_Node : Node_Id; + Formals : List_Id; + F_Copy : List_Id) return List_Id + is + use Associations; - if No (Actual) or else Nkind (Actual) = N_Others_Choice then - Found_Assoc := Empty; - Act := Empty; + Result_Renamings : constant List_Id := New_List; + -- To be returned. Includes "renamings" broadly interpreted + -- (e.g. subtypes are used for types). - -- Case of positional parameter corresponding to current formal + Actuals_To_Freeze : constant Elist_Id := New_Elmt_List; + Default_Actuals : constant List_Id := New_List; - elsif No (Selector_Name (Actual)) then - -- A "<>" without "name =>" is illegal syntax + Gen_Assocs : constant Gen_Assocs_Rec := + Match_Assocs (I_Node, Formals, F_Copy); - if Box_Present (Actual) then - if False then -- ??? - -- Disable this for now, because we have various code that - -- needs to be updated. - Error_Msg_N ("box requires named notation", Actual); - end if; + begin + for Matching_Actual_Index in Gen_Assocs.Assocs'Range loop + declare + Assoc : Assoc_Rec renames + Gen_Assocs.Assocs (Matching_Actual_Index); + begin + if Nkind (Assoc.Un_Formal) = N_Formal_Package_Declaration + and then Error_Posted (Assoc.An_Formal) + then + -- Restrict this to N_Formal_Package_Declaration, + -- because otherwise many test diffs (and maybe + -- many missing errors). + Abandon_Instantiation (Instantiation_Node); end if; - Found_Assoc := Actual; - Act := Explicit_Generic_Actual_Parameter (Actual); - Num_Matched := Num_Matched + 1; - Next (Actual); + if Nkind (Assoc.Un_Formal) in + N_Use_Package_Clause | N_Use_Type_Clause + then + -- Copy the use clause to where it belongs: + Append (New_Copy_Tree (Assoc.Un_Formal), Result_Renamings); - -- Otherwise scan list of named actuals to find the one with the - -- desired name. All remaining actuals have explicit names. + else + Analyze_One_Association + (I_Node, Assoc, + Result_Renamings, Default_Actuals, Actuals_To_Freeze); + end if; + end; + end loop; - else - Is_Named_Assoc := True; - Found_Assoc := Empty; - Act := Empty; - Prev := Empty; - - while Present (Actual) loop - if Nkind (Actual) = N_Others_Choice then - Found_Assoc := Empty; - Act := Empty; - - elsif Chars (Selector_Name (Actual)) = Chars (F) then - Set_Entity (Selector_Name (Actual), A_F); - Set_Etype (Selector_Name (Actual), Etype (A_F)); - Generate_Reference (A_F, Selector_Name (Actual)); - - Found_Assoc := Actual; - Act := Explicit_Generic_Actual_Parameter (Actual); - Num_Matched := Num_Matched + 1; - exit; - end if; + -- An instantiation freezes all generic actuals, except for incomplete + -- types and subprograms that are not fully defined at the point of + -- instantiation. - Prev := Actual; - Next (Actual); - end loop; + declare + Elmt : Elmt_Id := First_Elmt (Actuals_To_Freeze); + begin + while Present (Elmt) loop + Freeze_Before (I_Node, Node (Elmt)); + Next_Elmt (Elmt); + end loop; + end; - -- Reset for subsequent searches. In most cases the named - -- associations are in order. If they are not, we reorder them - -- to avoid scanning twice the same actual. This is not just a - -- question of efficiency: there may be multiple defaults with - -- boxes that have the same name. In a nested instantiation we - -- insert actuals for those defaults, and cannot rely on their - -- names to disambiguate them. + -- If there are defaults, normalize the tree by adding explicit + -- associations for them. This is required if the instance appears + -- within a generic. - if Actual = First_Named then - Next (First_Named); + if not Is_Empty_List (Default_Actuals) then + declare + Default : Node_Id; - elsif Present (Actual) then - Insert_Before (First_Named, Remove_Next (Prev)); + begin + Default := First (Default_Actuals); + while Present (Default) loop + Mark_Rewrite_Insertion (Default); + Next (Default); + end loop; + + if No (Generic_Associations (I_Node)) then + Set_Generic_Associations (I_Node, Default_Actuals); + else + Append_List_To (Generic_Associations (I_Node), Default_Actuals); end if; + end; + end if; - Actual := First_Named; - end if; + Check_Fixed_Point_Warning (Gen_Assocs, Result_Renamings); - if Is_Entity_Name (Act) and then Present (Entity (Act)) then - Set_Used_As_Generic_Actual (Entity (Act)); - end if; + return Result_Renamings; + end Analyze_Associations; - return Act; - end Matching_Actual; + ----------------------------- + -- Analyze_One_Association -- + ----------------------------- - ------------------------------ - -- Partial_Parameterization -- - ------------------------------ + procedure Analyze_One_Association + (I_Node : Node_Id; + Assoc : Associations.Assoc_Rec; + -- Logical 'in out' parameters: + Result_Renamings : List_Id; + Default_Actuals : List_Id; + Actuals_To_Freeze : Elist_Id) + is + use Associations; - function Partial_Parameterization return Boolean is - begin - return Others_Present - or else (Present (Found_Assoc) and then Box_Present (Found_Assoc)); - end Partial_Parameterization; + procedure Process_Box_Actual (Formal : Node_Id); + -- Called for "Formal => <>", and also if "Formal => ..." is missing, + -- but there is "others => <>". Add a copy of the declaration of the + -- generic formal to the Result_Renamings. --------------------- - -- Process_Default -- + -- Process_Box_Actual -- --------------------- - procedure Process_Default (Formal : Node_Id) is - Loc : constant Source_Ptr := Sloc (I_Node); - F_Id : constant Entity_Id := Defining_Entity (Formal); - Decl : Node_Id; - Default : Node_Id; - Id : Entity_Id; - + procedure Process_Box_Actual (Formal : Node_Id) is + pragma Assert (Assoc.Actual.Kind = Box_Actual); + F_Id : constant Entity_Id := Defining_Entity (Formal); + Decl : constant Node_Id := New_Copy_Tree (Formal); + Id : constant Entity_Id := + Make_Defining_Identifier (Sloc (F_Id), Chars (F_Id)); begin - -- Append copy of formal declaration to associations, and create new - -- defining identifier for it. - - Decl := New_Copy_Tree (Formal); - Id := Make_Defining_Identifier (Sloc (F_Id), Chars (F_Id)); - if Nkind (Formal) in N_Formal_Subprogram_Declaration then Set_Defining_Unit_Name (Specification (Decl), Id); @@ -1595,722 +1999,403 @@ package body Sem_Ch12 is Set_Defining_Identifier (Decl, Id); end if; - Append (Decl, Assoc_List); - - if No (Found_Assoc) then -- i.e. 'others' - Default := - Make_Generic_Association (Loc, - Selector_Name => - New_Occurrence_Of (Id, Loc), - Explicit_Generic_Actual_Parameter => Empty); - Set_Box_Present (Default); - Append (Default, Default_Formals); - end if; - end Process_Default; - - --------------------------------- - -- Renames_Standard_Subprogram -- - --------------------------------- - - function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean is - Id : Entity_Id; - - begin - Id := Alias (Subp); - while Present (Id) loop - if Scope (Id) = Standard_Standard then - return True; - end if; - - Id := Alias (Id); - end loop; - - return False; - end Renames_Standard_Subprogram; - - ------------------------- - -- Set_Analyzed_Formal -- - ------------------------- - - procedure Set_Analyzed_Formal is - Kind : Node_Kind; - - begin - while Present (Analyzed_Formal) loop - Kind := Nkind (Analyzed_Formal); - - case Nkind (Formal) is - when N_Formal_Subprogram_Declaration => - exit when Kind in N_Formal_Subprogram_Declaration - and then - Chars - (Defining_Unit_Name (Specification (Formal))) = - Chars - (Defining_Unit_Name (Specification (Analyzed_Formal))); - - when N_Formal_Package_Declaration => - exit when Kind in N_Formal_Package_Declaration - | N_Generic_Package_Declaration - | N_Package_Declaration; - - when N_Use_Package_Clause - | N_Use_Type_Clause - => - exit; - - when others => + Append (Decl, Result_Renamings); + end Process_Box_Actual; - -- Skip freeze nodes, and nodes inserted to replace - -- unrecognized pragmas. - - exit when - Kind not in N_Formal_Subprogram_Declaration - and then Kind not in N_Subprogram_Declaration - | N_Freeze_Entity - | N_Null_Statement - | N_Itype_Reference - and then Chars (Defining_Identifier (Formal)) = - Chars (Defining_Identifier (Analyzed_Formal)); - end case; - - Next (Analyzed_Formal); - end loop; - end Set_Analyzed_Formal; + Match : Node_Id; - -- Start of processing for Analyze_Associations + -- Start of processing for Analyze_One_Association begin - Actuals := Generic_Associations (I_Node); - - if Present (Actuals) then - - -- Check for an Others choice, indicating a partial parameterization - -- for a formal package. - - Actual := First (Actuals); - while Present (Actual) loop - if Nkind (Actual) = N_Others_Choice then - Others_Present := True; + if Assoc.Actual_Origin = From_Explicit_Actual + and then Assoc.Actual.Kind = Name_Exp + then + Match := Assoc.Actual.Name_Exp; - if Present (Next (Actual)) then - Error_Msg_N ("OTHERS must be last association", Actual); - end if; + if Is_Entity_Name (Match) and then Present (Entity (Match)) then + Set_Used_As_Generic_Actual (Entity (Match)); + end if; + else + Match := Empty; + end if; - -- This subprogram is used both for formal packages and for - -- instantiations. For the latter, associations must all be - -- explicit. + case Nkind (Assoc.Un_Formal) is + when N_Formal_Object_Declaration => + if Assoc.Actual.Kind = Box_Actual then + Process_Box_Actual (Assoc.Un_Formal); - if Nkind (I_Node) /= N_Formal_Package_Declaration - and then Comes_From_Source (I_Node) - then - Error_Msg_N - ("OTHERS association not allowed in an instance", - Actual); + else + Append_List + (Instantiate_Object (Assoc.Un_Formal, Match, Assoc.An_Formal), + Result_Renamings); + + -- GNATprove: For a defaulted in-mode parameter, create + -- an entry in the list of defaulted actuals, for + -- GNATprove use. Do not include these defaults for an + -- instance nested within a generic, because the defaults + -- are also used in the analysis of the enclosing + -- generic, and only defaulted subprograms are relevant + -- there. + + if No (Match) and then not Inside_A_Generic then + Append_To (Default_Actuals, + Make_Generic_Association (Sloc (I_Node), + Selector_Name => + New_Occurrence_Of + (Defining_Identifier + (Assoc.Un_Formal), Sloc (I_Node)), + Explicit_Generic_Actual_Parameter => + New_Copy_Tree (Default_Expression (Assoc.Un_Formal)))); end if; + end if; - -- In any case, nothing to do after the others association - - exit; + -- If the object is a call to an expression function, this + -- is a freezing point for it. - elsif Box_Present (Actual) - and then Comes_From_Source (I_Node) - and then Nkind (I_Node) /= N_Formal_Package_Declaration + if Is_Entity_Name (Match) + and then Present (Entity (Match)) + and then Nkind + (Original_Node (Unit_Declaration_Node (Entity (Match)))) + = N_Expression_Function then - Error_Msg_N - ("box association not allowed in an instance", Actual); + Append_Elmt (Entity (Match), Actuals_To_Freeze); end if; - Next (Actual); - end loop; - - -- If named associations are present, save first named association - -- (it may of course be Empty) to facilitate subsequent name search. - - First_Named := First (Actuals); - while Present (First_Named) - and then Nkind (First_Named) /= N_Others_Choice - and then No (Selector_Name (First_Named)) - loop - Num_Actuals := Num_Actuals + 1; - Next (First_Named); - end loop; - end if; - - Named := First_Named; - while Present (Named) loop - if Nkind (Named) /= N_Others_Choice - and then No (Selector_Name (Named)) - then - Error_Msg_N ("invalid positional actual after named one", Named); - Abandon_Instantiation (Named); - end if; - - -- A named association may lack an actual parameter, if it was - -- introduced for a default subprogram that turns out to be local - -- to the outer instantiation. If it has a box association it must - -- correspond to some formal in the generic. - - if Nkind (Named) /= N_Others_Choice - and then (Present (Explicit_Generic_Actual_Parameter (Named)) - or else Box_Present (Named)) - then - Num_Actuals := Num_Actuals + 1; - end if; - - Next (Named); - end loop; - - if Present (Formals) then - Formal := First_Non_Pragma (Formals); - Analyzed_Formal := First_Non_Pragma (F_Copy); - - if Present (Actuals) then - Actual := First (Actuals); - - -- All formals should have default values - - else - Actual := Empty; - end if; - - while Present (Formal) loop - Set_Analyzed_Formal; - Saved_Formal := Next_Non_Pragma (Formal); - - case Nkind (Formal) is - when N_Formal_Object_Declaration => - Match := - Matching_Actual - (Defining_Identifier (Formal), - Defining_Identifier (Analyzed_Formal)); - - if No (Match) and then Partial_Parameterization then - Process_Default (Formal); - - else - Append_List - (Instantiate_Object (Formal, Match, Analyzed_Formal), - Assoc_List); - - -- For a defaulted in_parameter, create an entry in the - -- the list of defaulted actuals, for GNATprove use. Do - -- not included these defaults for an instance nested - -- within a generic, because the defaults are also used - -- in the analysis of the enclosing generic, and only - -- defaulted subprograms are relevant there. - - if No (Match) and then not Inside_A_Generic then - Append_To (Default_Actuals, - Make_Generic_Association (Sloc (I_Node), - Selector_Name => - New_Occurrence_Of - (Defining_Identifier (Formal), Sloc (I_Node)), - Explicit_Generic_Actual_Parameter => - New_Copy_Tree (Default_Expression (Formal)))); - end if; - end if; - - -- If the object is a call to an expression function, this - -- is a freezing point for it. - - if Is_Entity_Name (Match) - and then Present (Entity (Match)) - and then Nkind - (Original_Node (Unit_Declaration_Node (Entity (Match)))) - = N_Expression_Function - then - Append_Elmt (Entity (Match), Actuals_To_Freeze); - end if; - - when N_Formal_Type_Declaration => - Match := - Matching_Actual - (Defining_Identifier (Formal), - Defining_Identifier (Analyzed_Formal)); - - if No (Match) then - if Partial_Parameterization then - Process_Default (Formal); - - elsif Present (Default_Subtype_Mark (Formal)) then - Match := New_Copy (Default_Subtype_Mark (Formal)); - Append_List - (Instantiate_Type - (Formal, Match, Analyzed_Formal, Assoc_List), - Assoc_List); - Append_Elmt (Entity (Match), Actuals_To_Freeze); - - else - Error_Msg_Sloc := Sloc (Gen_Unit); - Error_Msg_NE - ("missing actual&", - Instantiation_Node, Defining_Identifier (Formal)); - Error_Msg_NE - ("\in instantiation of & declared#", - Instantiation_Node, Gen_Unit); - Abandon_Instantiation (Instantiation_Node); - end if; - - else - Analyze (Match); - Append_List - (Instantiate_Type - (Formal, Match, Analyzed_Formal, Assoc_List), - Assoc_List); - - -- Warn when an actual is a fixed-point with user- - -- defined promitives. The warning is superfluous - -- if the formal is private, because there can be - -- no arithmetic operations in the generic so there - -- no danger of confusion. - - if Is_Fixed_Point_Type (Entity (Match)) - and then not Is_Private_Type - (Defining_Identifier (Analyzed_Formal)) - then - Check_Fixed_Point_Actual (Match); - end if; - - -- An instantiation is a freeze point for the actuals, - -- unless this is a rewritten formal package, or the - -- formal is an Ada 2012 formal incomplete type. + when N_Formal_Type_Declaration => + if Assoc.Actual.Kind = Box_Actual then + Process_Box_Actual (Assoc.Un_Formal); + + elsif No (Match) then + if Present (Default_Subtype_Mark (Assoc.Un_Formal)) then + Match := New_Copy (Default_Subtype_Mark (Assoc.Un_Formal)); + Append_List + (Instantiate_Type + (Assoc.Un_Formal, Match, Assoc.An_Formal, + Result_Renamings), + Result_Renamings); + Append_Elmt (Entity (Match), Actuals_To_Freeze); + end if; - if Nkind (I_Node) = N_Formal_Package_Declaration - or else - (Ada_Version >= Ada_2012 - and then - Ekind (Defining_Identifier (Analyzed_Formal)) = - E_Incomplete_Type) - then - null; + else + Analyze (Match); + Append_List + (Instantiate_Type + (Assoc.Un_Formal, Match, Assoc.An_Formal, + Result_Renamings), + Result_Renamings); + + -- An instantiation is a freeze point for the actuals, + -- unless this is a rewritten formal package, or the + -- formal is an Ada 2012 formal incomplete type. + + if Nkind (I_Node) = N_Formal_Package_Declaration + or else + (Ada_Version >= Ada_2012 + and then + Ekind (Defining_Identifier (Assoc.An_Formal)) = + E_Incomplete_Type) + then + null; - else - Append_Elmt (Entity (Match), Actuals_To_Freeze); - end if; - end if; + else + Append_Elmt (Entity (Match), Actuals_To_Freeze); + end if; + end if; - -- A remote access-to-class-wide type is not a legal actual - -- for a generic formal of an access type (E.2.2(17/2)). - -- In GNAT an exception to this rule is introduced when - -- the formal is marked as remote using implementation - -- defined aspect/pragma Remote_Access_Type. In that case - -- the actual must be remote as well. + -- A remote access-to-class-wide type is not a legal actual + -- for a generic formal of an access type (E.2.2(17/2)). + -- In GNAT an exception to this rule is introduced when + -- the formal is marked as remote using implementation + -- defined aspect/pragma Remote_Access_Type. In that case + -- the actual must be remote as well. - -- If the current instantiation is the construction of a - -- local copy for a formal package the actuals may be - -- defaulted, and there is no matching actual to check. + -- If the current instantiation is the construction of a + -- local copy for a formal package the actuals may be + -- defaulted, and there is no matching actual to check. - if Nkind (Analyzed_Formal) = N_Formal_Type_Declaration - and then - Nkind (Formal_Type_Definition (Analyzed_Formal)) = - N_Access_To_Object_Definition - and then Present (Match) + if Nkind (Assoc.An_Formal) = N_Formal_Type_Declaration + and then + Nkind (Formal_Type_Definition (Assoc.An_Formal)) = + N_Access_To_Object_Definition + and then Present (Match) + then + declare + Formal_Ent : constant Entity_Id := + Defining_Identifier (Assoc.An_Formal); + begin + if Is_Remote_Access_To_Class_Wide_Type (Entity (Match)) + = Is_Remote_Types (Formal_Ent) then - declare - Formal_Ent : constant Entity_Id := - Defining_Identifier (Analyzed_Formal); - begin - if Is_Remote_Access_To_Class_Wide_Type (Entity (Match)) - = Is_Remote_Types (Formal_Ent) - then - -- Remoteness of formal and actual match + -- Remoteness of formal and actual match - null; - - elsif Is_Remote_Types (Formal_Ent) then - - -- Remote formal, non-remote actual - - Error_Msg_NE - ("actual for& must be remote", Match, Formal_Ent); - - else - -- Non-remote formal, remote actual - - Error_Msg_NE - ("actual for& may not be remote", - Match, Formal_Ent); - end if; - end; - end if; - - when N_Formal_Subprogram_Declaration => - Match := - Matching_Actual - (Defining_Unit_Name (Specification (Formal)), - Defining_Unit_Name (Specification (Analyzed_Formal))); - - -- If the formal subprogram has the same name as another - -- formal subprogram of the generic, then a named - -- association is illegal (12.3(9)). Exclude named - -- associations that are generated for a nested instance. - - if Present (Match) - and then Is_Named_Assoc - and then Comes_From_Source (Found_Assoc) - then - Check_Overloaded_Formal_Subprogram (Formal); - end if; + null; - -- If there is no corresponding actual, this may be case - -- of partial parameterization, or else the formal has a - -- default or a box. + elsif Is_Remote_Types (Formal_Ent) then - if No (Match) and then Partial_Parameterization then - Process_Default (Formal); + -- Remote formal, non-remote actual - if Nkind (I_Node) = N_Formal_Package_Declaration then - Check_Overloaded_Formal_Subprogram (Formal); - end if; + Error_Msg_NE + ("actual for& must be remote", Match, Formal_Ent); else - Append_To (Assoc_List, - Instantiate_Formal_Subprogram - (Formal, Match, Analyzed_Formal)); - - -- If formal subprogram has contracts, create wrappers - -- for it. This is an expansion activity that cannot - -- take place e.g. within an enclosing generic unit. - - if Has_Contracts (Analyzed_Formal) - and then (Expander_Active or GNATprove_Mode) - then - Build_Subprogram_Wrappers; - end if; - - -- An instantiation is a freeze point for the actuals, - -- unless this is a rewritten formal package. + -- Non-remote formal, remote actual - if Nkind (I_Node) /= N_Formal_Package_Declaration - and then Nkind (Match) = N_Identifier - and then Is_Subprogram (Entity (Match)) - - -- The actual subprogram may rename a routine defined - -- in Standard. Avoid freezing such renamings because - -- subprograms coming from Standard cannot be frozen. - - and then - not Renames_Standard_Subprogram (Entity (Match)) - - -- If the actual subprogram comes from a different - -- unit, it is already frozen, either by a body in - -- that unit or by the end of the declarative part - -- of the unit. This check avoids the freezing of - -- subprograms defined in Standard which are used - -- as generic actuals. - - and then In_Same_Code_Unit (Entity (Match), I_Node) - and then Has_Fully_Defined_Profile (Entity (Match)) - then - -- Mark the subprogram as having a delayed freeze - -- since this may be an out-of-order action. - - Set_Has_Delayed_Freeze (Entity (Match)); - Append_Elmt (Entity (Match), Actuals_To_Freeze); - end if; + Error_Msg_NE + ("actual for& may not be remote", + Match, Formal_Ent); end if; + end; + end if; - -- If this is a nested generic, preserve default for later - -- instantiations. We do this as well for GNATprove use, - -- so that the list of generic associations is complete. + when N_Formal_Subprogram_Declaration => + -- If there is no corresponding actual, this may be case + -- of partial parameterization, or else the formal has a + -- default or a box. - if No (Match) and then Box_Present (Formal) then - declare - Subp : constant Entity_Id := - Defining_Unit_Name - (Specification (Last (Assoc_List))); + if Assoc.Actual.Kind = Box_Actual then + Process_Box_Actual (Assoc.Un_Formal); - begin - Append_To (Default_Actuals, - Make_Generic_Association (Sloc (I_Node), - Selector_Name => - New_Occurrence_Of (Subp, Sloc (I_Node)), - Explicit_Generic_Actual_Parameter => - New_Occurrence_Of (Subp, Sloc (I_Node)))); - end; - end if; - - when N_Formal_Package_Declaration => - -- The name of the formal package may be hidden by the - -- formal parameter itself. + else + Append_To (Result_Renamings, + Instantiate_Formal_Subprogram + (Assoc.Un_Formal, Match, Assoc.An_Formal)); - if Error_Posted (Analyzed_Formal) then - Abandon_Instantiation (Instantiation_Node); + -- If formal subprogram has contracts, create wrappers + -- for it. This is an expansion activity that cannot + -- take place e.g. within an enclosing generic unit. - else - Match := - Matching_Actual - (Defining_Identifier (Formal), - Defining_Identifier - (Original_Node (Analyzed_Formal))); - end if; + if Has_Contracts (Assoc.An_Formal) + and then (Expander_Active or GNATprove_Mode) + then + Build_Subprogram_Wrappers + (Match, Assoc.An_Formal, Result_Renamings); + end if; - if No (Match) then - if Partial_Parameterization then - Process_Default (Formal); + -- An instantiation is a freeze point for the actuals, + -- unless this is a rewritten formal package. - else - Error_Msg_Sloc := Sloc (Gen_Unit); - Error_Msg_NE - ("missing actual&", - Instantiation_Node, Defining_Identifier (Formal)); - Error_Msg_NE - ("\in instantiation of & declared#", - Instantiation_Node, Gen_Unit); + if Nkind (I_Node) /= N_Formal_Package_Declaration + and then Nkind (Match) = N_Identifier + and then Is_Subprogram (Entity (Match)) - Abandon_Instantiation (Instantiation_Node); - end if; + -- The actual subprogram may rename a routine defined + -- in Standard. Avoid freezing such renamings because + -- subprograms coming from Standard cannot be frozen. - else - Analyze (Match); - Append_List - (Instantiate_Formal_Package - (Formal, Match, Analyzed_Formal), - Assoc_List); - - -- Determine whether the actual package needs an explicit - -- freeze node. This is only the case if the actual is - -- declared in the same unit and has a body. Normally - -- packages do not have explicit freeze nodes, and gigi - -- only uses them to elaborate entities in a package - -- body. - - Explicit_Freeze_Check : declare - Actual : constant Entity_Id := Entity (Match); - Gen_Par : Entity_Id; - - Needs_Freezing : Boolean; - P : Node_Id; - - procedure Check_Generic_Parent; - -- The actual may be an instantiation of a unit - -- declared in a previous instantiation. If that - -- one is also in the current compilation, it must - -- itself be frozen before the actual. The actual - -- may be an instantiation of a generic child unit, - -- in which case the same applies to the instance - -- of the parent which must be frozen before the - -- actual. - -- Should this itself be recursive ??? - - -------------------------- - -- Check_Generic_Parent -- - -------------------------- - - procedure Check_Generic_Parent is - Inst : constant Node_Id := - Get_Unit_Instantiation_Node (Actual); - Par : Entity_Id; + and then + not Renames_Standard_Subprogram (Entity (Match)) - begin - Par := Empty; + -- If the actual subprogram comes from a different + -- unit, it is already frozen, either by a body in + -- that unit or by the end of the declarative part + -- of the unit. This check avoids the freezing of + -- subprograms defined in Standard which are used + -- as generic actuals. - if Nkind (Parent (Actual)) = N_Package_Specification - then - Par := Scope (Generic_Parent (Parent (Actual))); - - if Is_Generic_Instance (Par) then - null; - - -- If the actual is a child generic unit, check - -- whether the instantiation of the parent is - -- also local and must also be frozen now. We - -- must retrieve the instance node to locate the - -- parent instance if any. - - elsif Ekind (Par) = E_Generic_Package - and then Is_Child_Unit (Gen_Par) - and then Ekind (Scope (Gen_Par)) = - E_Generic_Package - then - if Nkind (Inst) = N_Package_Instantiation - and then Nkind (Name (Inst)) = - N_Expanded_Name - then - -- Retrieve entity of parent instance + and then In_Same_Code_Unit (Entity (Match), I_Node) + and then Has_Fully_Defined_Profile (Entity (Match)) + then + -- Mark the subprogram as having a delayed freeze + -- since this may be an out-of-order action. - Par := Entity (Prefix (Name (Inst))); - end if; + Set_Has_Delayed_Freeze (Entity (Match)); + Append_Elmt (Entity (Match), Actuals_To_Freeze); + end if; + end if; - else - Par := Empty; - end if; - end if; + -- If this is a nested generic, preserve default for later + -- instantiations. We do this as well for GNATprove use, + -- so that the list of generic associations is complete. - if Present (Par) - and then Is_Generic_Instance (Par) - and then Scope (Par) = Current_Scope - and then - (No (Freeze_Node (Par)) - or else - not Is_List_Member (Freeze_Node (Par))) - then - Set_Has_Delayed_Freeze (Par); - Append_Elmt (Par, Actuals_To_Freeze); - end if; - end Check_Generic_Parent; + if No (Match) and then Box_Present (Assoc.Un_Formal) then + declare + Subp : constant Entity_Id := + Defining_Unit_Name + (Specification (Last (Result_Renamings))); - -- Start of processing for Explicit_Freeze_Check + begin + Append_To (Default_Actuals, + Make_Generic_Association (Sloc (I_Node), + Selector_Name => + New_Occurrence_Of (Subp, Sloc (I_Node)), + Explicit_Generic_Actual_Parameter => + New_Occurrence_Of (Subp, Sloc (I_Node)))); + end; + end if; - begin - if Present (Renamed_Entity (Actual)) then - Gen_Par := - Generic_Parent (Specification - (Unit_Declaration_Node - (Renamed_Entity (Actual)))); - else - Gen_Par := - Generic_Parent (Specification - (Unit_Declaration_Node (Actual))); - end if; + when N_Formal_Package_Declaration => + if Assoc.Actual.Kind = Box_Actual then + Process_Box_Actual (Assoc.Un_Formal); - if not Expander_Active - or else not Has_Completion (Actual) - or else not In_Same_Source_Unit (I_Node, Actual) - or else Is_Frozen (Actual) - or else - (Present (Renamed_Entity (Actual)) - and then - not In_Same_Source_Unit - (I_Node, (Renamed_Entity (Actual)))) - then - null; + else + Analyze (Match); + Append_List + (Instantiate_Formal_Package + (Assoc.Un_Formal, Match, Assoc.An_Formal), + Result_Renamings); + + -- Determine whether the actual package needs an explicit + -- freeze node. This is only the case if the actual is + -- declared in the same unit and has a body. Normally + -- packages do not have explicit freeze nodes, and gigi + -- only uses them to elaborate entities in a package + -- body. + + Explicit_Freeze_Check : declare + Actual : constant Entity_Id := Entity (Match); + Gen_Par : Entity_Id; + + Needs_Freezing : Boolean; + P : Node_Id; + + procedure Check_Generic_Parent; + -- The actual may be an instantiation of a unit + -- declared in a previous instantiation. If that + -- one is also in the current compilation, it must + -- itself be frozen before the actual. The actual + -- may be an instantiation of a generic child unit, + -- in which case the same applies to the instance + -- of the parent which must be frozen before the + -- actual. + -- Should this itself be recursive ??? + + -------------------------- + -- Check_Generic_Parent -- + -------------------------- + + procedure Check_Generic_Parent is + Inst : constant Node_Id := + Get_Unit_Instantiation_Node (Actual); + Par : Entity_Id; - else - -- Finally we want to exclude such freeze nodes - -- from statement sequences, which freeze - -- everything before them. - -- Is this strictly necessary ??? - - Needs_Freezing := True; - - P := Parent (I_Node); - while Nkind (P) /= N_Compilation_Unit loop - if Nkind (P) = N_Handled_Sequence_Of_Statements - then - Needs_Freezing := False; - exit; - end if; + begin + Par := Empty; - P := Parent (P); - end loop; + if Nkind (Parent (Actual)) = N_Package_Specification + then + Par := Scope (Generic_Parent (Parent (Actual))); - if Needs_Freezing then - Check_Generic_Parent; - - -- If the actual is a renaming of a proper - -- instance of the formal package, indicate - -- that it is the instance that must be frozen. - - if Nkind (Parent (Actual)) = - N_Package_Renaming_Declaration - then - Set_Has_Delayed_Freeze - (Renamed_Entity (Actual)); - Append_Elmt - (Renamed_Entity (Actual), - Actuals_To_Freeze); - else - Set_Has_Delayed_Freeze (Actual); - Append_Elmt (Actual, Actuals_To_Freeze); - end if; - end if; - end if; - end Explicit_Freeze_Check; - end if; + if Is_Generic_Instance (Par) then + null; - -- Copy use clauses to where they belong + -- If the actual is a child generic unit, check + -- whether the instantiation of the parent is + -- also local and must also be frozen now. We + -- must retrieve the instance node to locate the + -- parent instance if any. - when N_Use_Package_Clause - | N_Use_Type_Clause - => - Append (New_Copy_Tree (Formal), Assoc_List); + elsif Ekind (Par) = E_Generic_Package + and then Is_Child_Unit (Gen_Par) + and then Ekind (Scope (Gen_Par)) = + E_Generic_Package + then + if Nkind (Inst) = N_Package_Instantiation + and then Nkind (Name (Inst)) = + N_Expanded_Name + then + -- Retrieve entity of parent instance - when others => - raise Program_Error; - end case; + Par := Entity (Prefix (Name (Inst))); + end if; - -- Check here the correct use of Ghost entities in generic - -- instantiations, as now the generic has been resolved and - -- we know which formal generic parameters are ghost (SPARK - -- RM 6.9(10)). + else + Par := Empty; + end if; + end if; - if Nkind (Formal) not in N_Use_Package_Clause - | N_Use_Type_Clause - then - Check_Ghost_Context_In_Generic_Association - (Actual => Match, - Formal => Defining_Entity (Analyzed_Formal)); - end if; + if Present (Par) + and then Is_Generic_Instance (Par) + and then Scope (Par) = Current_Scope + and then + (No (Freeze_Node (Par)) + or else + not Is_List_Member (Freeze_Node (Par))) + then + Set_Has_Delayed_Freeze (Par); + Append_Elmt (Par, Actuals_To_Freeze); + end if; + end Check_Generic_Parent; - Formal := Saved_Formal; - Next_Non_Pragma (Analyzed_Formal); - end loop; + -- Start of processing for Explicit_Freeze_Check - if Num_Actuals > Num_Matched then - Error_Msg_Sloc := Sloc (Gen_Unit); + begin + if Present (Renamed_Entity (Actual)) then + Gen_Par := + Generic_Parent (Specification + (Unit_Declaration_Node + (Renamed_Entity (Actual)))); + else + Gen_Par := + Generic_Parent (Specification + (Unit_Declaration_Node (Actual))); + end if; - if Present (Selector_Name (Actual)) then - Error_Msg_NE - ("unmatched actual &", Actual, Selector_Name (Actual)); - Error_Msg_NE - ("\in instantiation of & declared#", Actual, Gen_Unit); - else - Error_Msg_NE - ("unmatched actual in instantiation of & declared#", - Actual, Gen_Unit); - end if; - end if; + if not Expander_Active + or else not Has_Completion (Actual) + or else not In_Same_Source_Unit (I_Node, Actual) + or else Is_Frozen (Actual) + or else + (Present (Renamed_Entity (Actual)) + and then + not In_Same_Source_Unit + (I_Node, (Renamed_Entity (Actual)))) + then + null; - elsif Present (Actuals) then - Error_Msg_N - ("too many actuals in generic instantiation", Instantiation_Node); - end if; + else + -- Finally we want to exclude such freeze nodes + -- from statement sequences, which freeze + -- everything before them. + -- Is this strictly necessary ??? - -- An instantiation freezes all generic actuals. The only exceptions - -- to this are incomplete types and subprograms which are not fully - -- defined at the point of instantiation. + Needs_Freezing := True; - declare - Elmt : Elmt_Id := First_Elmt (Actuals_To_Freeze); - begin - while Present (Elmt) loop - Freeze_Before (I_Node, Node (Elmt)); - Next_Elmt (Elmt); - end loop; - end; + P := Parent (I_Node); + while Nkind (P) /= N_Compilation_Unit loop + if Nkind (P) = N_Handled_Sequence_Of_Statements + then + Needs_Freezing := False; + exit; + end if; - -- If there are default subprograms, normalize the tree by adding - -- explicit associations for them. This is required if the instance - -- appears within a generic. + P := Parent (P); + end loop; - if not Is_Empty_List (Default_Actuals) then - declare - Default : Node_Id; + if Needs_Freezing then + Check_Generic_Parent; - begin - Default := First (Default_Actuals); - while Present (Default) loop - Mark_Rewrite_Insertion (Default); - Next (Default); - end loop; + -- If the actual is a renaming of a proper + -- instance of the formal package, indicate + -- that it is the instance that must be frozen. - if No (Actuals) then - Set_Generic_Associations (I_Node, Default_Actuals); - else - Append_List_To (Actuals, Default_Actuals); + if Nkind (Parent (Actual)) = + N_Package_Renaming_Declaration + then + Set_Has_Delayed_Freeze + (Renamed_Entity (Actual)); + Append_Elmt + (Renamed_Entity (Actual), + Actuals_To_Freeze); + else + Set_Has_Delayed_Freeze (Actual); + Append_Elmt (Actual, Actuals_To_Freeze); + end if; + end if; + end if; + end Explicit_Freeze_Check; end if; - end; - end if; - -- If this is a formal package, normalize the parameter list by adding - -- explicit box associations for the formals that are covered by an - -- N_Others_Choice. + when others => + raise Program_Error; + end case; - Append_List (Default_Formals, Formals); + -- Check for correct use of Ghost entities in generic + -- instantiations (SPARK RM 6.9(10)). - return Assoc_List; - end Analyze_Associations; + Check_Ghost_Context_In_Generic_Association + (Actual => Match, + Formal => Defining_Entity (Assoc.An_Formal)); + end Analyze_One_Association; ------------------------------- -- Analyze_Formal_Array_Type -- @@ -2944,9 +3029,9 @@ package body Sem_Ch12 is -- part, so that names with the proper types are available in the -- specification of the formal package. - -- On the other hand, if there are no associations, then all the - -- formals must have defaults, and this will be checked by the - -- call to Analyze_Associations. + -- On the other hand, if there are no associations (as in "new G;"), + -- then all the formals must have defaults, and this will be checked + -- by the call to Analyze_Associations. if Box_Present (N) or else Nkind (First (Generic_Associations (N))) = N_Others_Choice @@ -3402,9 +3487,7 @@ package body Sem_Ch12 is -- A formal abstract procedure cannot have a null default -- (RM 12.6(4.1/2)). - if Nkind (Spec) = N_Procedure_Specification - and then Null_Present (Spec) - then + if Has_Null_Default (N) then Error_Msg_N ("a formal abstract subprogram cannot default to null", Spec); end if; @@ -4291,7 +4374,7 @@ package body Sem_Ch12 is Inline_Now : Boolean := False; Needs_Body : Boolean; Parent_Installed : Boolean := False; - Renaming_List : List_Id; + Renamings : List_Id; Unit_Renaming : Node_Id; Vis_Prims_List : Elist_Id := No_Elist; @@ -4523,13 +4606,13 @@ package body Sem_Ch12 is Set_Private_Declarations (Act_Spec, New_List); end if; - Renaming_List := + Renamings := Analyze_Associations (I_Node => N, Formals => Generic_Formal_Declarations (Act_Tree), F_Copy => Generic_Formal_Declarations (Gen_Decl)); - Vis_Prims_List := Check_Hidden_Primitives (Renaming_List); + Vis_Prims_List := Check_Hidden_Primitives (Renamings); Set_Instance_Env (Gen_Unit, Act_Decl_Id); Set_Defining_Unit_Name (Act_Spec, Act_Decl_Name); @@ -4549,16 +4632,16 @@ package body Sem_Ch12 is Make_Defining_Identifier (Loc, Chars (Gen_Unit)), Name => New_Occurrence_Of (Act_Decl_Id, Loc)); - Append (Unit_Renaming, Renaming_List); + Append (Unit_Renaming, Renamings); -- The renaming declarations are the first local declarations of the -- new unit. if Is_Non_Empty_List (Visible_Declarations (Act_Spec)) then Insert_List_Before - (First (Visible_Declarations (Act_Spec)), Renaming_List); + (First (Visible_Declarations (Act_Spec)), Renamings); else - Set_Visible_Declarations (Act_Spec, Renaming_List); + Set_Visible_Declarations (Act_Spec, Renamings); end if; Act_Decl := Make_Package_Declaration (Loc, Specification => Act_Spec); @@ -5428,6 +5511,8 @@ package body Sem_Ch12 is return False; end Is_Inlined_Or_Child_Of_Inlined; + -- Start of processing for Need_Subprogram_Instance_Body + begin -- Must be in the main unit or inlined (or child of inlined) @@ -5494,7 +5579,7 @@ package body Sem_Ch12 is Pack_Id : Entity_Id; Parent_Installed : Boolean := False; - Renaming_List : List_Id; + Renamings : List_Id; -- The list of declarations that link formals and actuals of the -- instance. These are subtype declarations for formal types, and -- renaming declarations for other formals. The subprogram declaration @@ -5552,7 +5637,7 @@ package body Sem_Ch12 is Make_Package_Declaration (Loc, Specification => Make_Package_Specification (Loc, Defining_Unit_Name => Pack_Id, - Visible_Declarations => Renaming_List, + Visible_Declarations => Renamings, End_Label => Empty)); Set_Instance_Spec (N, Pack_Decl); @@ -5693,7 +5778,7 @@ package body Sem_Ch12 is -- itself, do not add this renaming declaration, to prevent -- ambiguities when there is a call with that name in the body. - Renaming_Decl := First (Renaming_List); + Renaming_Decl := First (Renamings); while Present (Renaming_Decl) loop if Nkind (Renaming_Decl) = N_Subprogram_Renaming_Declaration and then @@ -5706,7 +5791,7 @@ package body Sem_Ch12 is end loop; if No (Renaming_Decl) then - Append (Unit_Renaming, Renaming_List); + Append (Unit_Renaming, Renamings); end if; end Build_Subprogram_Renaming; @@ -5850,13 +5935,13 @@ package body Sem_Ch12 is Set_Must_Override (Act_Spec, Must_Override (N)); Set_Must_Not_Override (Act_Spec, Must_Not_Override (N)); - Renaming_List := + Renamings := Analyze_Associations (I_Node => N, Formals => Generic_Formal_Declarations (Act_Tree), F_Copy => Generic_Formal_Declarations (Gen_Decl)); - Vis_Prims_List := Check_Hidden_Primitives (Renaming_List); + Vis_Prims_List := Check_Hidden_Primitives (Renamings); -- The subprogram itself cannot contain a nested instance, so the -- current parent is left empty. @@ -5885,14 +5970,14 @@ package body Sem_Ch12 is Hide_Current_Scope; end if; - Append (Act_Decl, Renaming_List); + Append (Act_Decl, Renamings); -- Contract-related source pragmas that follow a generic subprogram -- must be instantiated explicitly because they are not part of the -- subprogram template. Instantiate_Subprogram_Contract - (Original_Node (Gen_Decl), Renaming_List); + (Original_Node (Gen_Decl), Renamings); Build_Subprogram_Renaming; @@ -6304,6 +6389,92 @@ package body Sem_Ch12 is return Body_Node; end Build_Subprogram_Body_Wrapper; + ------------------------------- + -- Build_Subprogram_Wrappers -- + ------------------------------- + + procedure Build_Subprogram_Wrappers + (Match, Analyzed_Formal : Node_Id; Renamings : List_Id) + is + function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result; + -- Adjust Sloc so that errors will be reported on the instance rather + -- than the generic. + + ------------------------ + -- Adjust_Aspect_Sloc -- + ------------------------ + + function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result is + begin + Adjust_Instantiation_Sloc (N, S_Adjustment); + return OK; + end Adjust_Aspect_Sloc; + + procedure Adjust_Aspect_Slocs is new + Traverse_Proc (Adjust_Aspect_Sloc); + + Formal : constant Entity_Id := + Defining_Unit_Name (Specification (Analyzed_Formal)); + Aspect_Spec : Node_Id; + Decl_Node : Node_Id; + Actual_Name : Node_Id; + + -- Start of processing for Build_Subprogram_Wrappers + + begin + -- Create declaration for wrapper subprogram. + -- The actual can be overloaded, in which case it will be + -- resolved when the call in the wrapper body is analyzed. + -- We attach the possible interpretations of the actual to + -- the name to be used in the call in the wrapper body. + + if Is_Entity_Name (Match) then + Actual_Name := New_Occurrence_Of (Entity (Match), Sloc (Match)); + + if Is_Overloaded (Match) then + Save_Interps (Match, Actual_Name); + end if; + + else + -- Use renaming declaration created when analyzing actual. + -- This may be incomplete if there are several formal + -- subprograms whose actual is an attribute ??? + + declare + Renaming_Decl : constant Node_Id := Last (Renamings); + + begin + Actual_Name := New_Occurrence_Of + (Defining_Entity (Renaming_Decl), Sloc (Match)); + Set_Etype (Actual_Name, Get_Instance_Of (Etype (Formal))); + end; + end if; + + Decl_Node := Build_Subprogram_Decl_Wrapper (Formal); + + -- Transfer aspect specifications from formal subprogram to wrapper + + Set_Aspect_Specifications (Decl_Node, + New_Copy_List_Tree (Aspect_Specifications (Analyzed_Formal))); + + Aspect_Spec := First (Aspect_Specifications (Decl_Node)); + while Present (Aspect_Spec) loop + Adjust_Aspect_Slocs (Aspect_Spec); + Set_Analyzed (Aspect_Spec, False); + Next (Aspect_Spec); + end loop; + + Append_To (Renamings, Decl_Node); + + -- Create corresponding body, and append it to association list + -- that appears at the head of the declarations in the instance. + -- The subprogram may be called in the analysis of subsequent + -- actuals. + + Append_To (Renamings, + Build_Subprogram_Body_Wrapper (Formal, Actual_Name)); + end Build_Subprogram_Wrappers; + ------------------------------------------- -- Build_Instance_Compilation_Unit_Nodes -- ------------------------------------------- @@ -6859,6 +7030,122 @@ package body Sem_Ch12 is end loop; end Check_Formal_Package_Instance; + ------------------------------- + -- Check_Fixed_Point_Warning -- + ------------------------------- + + procedure Check_Fixed_Point_Warning + (Gen_Assocs : Associations.Gen_Assocs_Rec; + Renamings : List_Id) + is + use Associations; + begin + for Type_Index in Gen_Assocs.Assocs'Range loop + declare + Assoc : Assoc_Rec renames Gen_Assocs.Assocs (Type_Index); + begin + if Nkind (Assoc.An_Formal) = N_Formal_Type_Declaration + and then Is_Fixed_Point_Type (Defining_Entity (Assoc.An_Formal)) + and then Assoc.Actual.Kind = Name_Exp + then + declare + Typ : constant Entity_Id := Entity (Assoc.Actual.Name_Exp); + pragma Assert (Is_Fixed_Point_Type (Typ)); + + Prims : constant Elist_Id := + Collect_Primitive_Operations (Typ); + Elem : Elmt_Id := First_Elmt (Prims); + Formal : Node_Id; + Op : Entity_Id; + begin + -- Locate primitive operations of the type that are + -- arithmetic operations. + + while Present (Elem) loop + if Nkind (Node (Elem)) = N_Defining_Operator_Symbol then + + -- Check whether the generic unit has a formal + -- subprogram of the same name. This does not check + -- types but is good enough to justify a warning. + + Op := Alias (Node (Elem)); + + for Op_Index in Type_Index + 1 .. + Gen_Assocs.Assocs'Last + loop + Formal := Gen_Assocs.Assocs (Op_Index).Un_Formal; + + if Nkind (Formal) = + N_Formal_Concrete_Subprogram_Declaration + and then Chars (Defining_Entity (Formal)) = + Chars (Node (Elem)) + then + goto OK; + + elsif Nkind (Formal) = N_Formal_Package_Declaration + then + declare + Assoc : Node_Id; + Ent : Entity_Id; + + begin + -- Locate corresponding actual, and check + -- whether it includes a fixed-point type. + + Assoc := First (Renamings); + while Present (Assoc) loop + exit when + Nkind (Assoc) = + N_Package_Renaming_Declaration + and then + Chars (Defining_Unit_Name (Assoc)) = + Chars (Defining_Identifier (Formal)); + + Next (Assoc); + end loop; + + if Present (Assoc) then + -- If the formal package declares a + -- fixed-point type, and the user-defined + -- operator is derived from a generic + -- instance package, the fixed-point type + -- does not use the corresponding + -- predefined op. + + Ent := + First_Entity (Entity (Name (Assoc))); + while Present (Ent) loop + if Is_Fixed_Point_Type (Ent) + and then Present (Op) + and then + Is_Generic_Instance (Scope (Op)) + then + goto OK; + end if; + + Next_Entity (Ent); + end loop; + end if; + end; + end if; + end loop; + + Error_Msg_Sloc := Sloc (Node (Elem)); + Error_Msg_NE + ("?instance uses predefined, not primitive, " & + "operator&#", + Assoc.Actual.Name_Exp, Node (Elem)); + <> null; + end if; + + Next_Elmt (Elem); + end loop; + end; + end if; + end; + end loop; + end Check_Fixed_Point_Warning; + --------------------------- -- Check_Formal_Packages -- --------------------------- @@ -7034,6 +7321,8 @@ package body Sem_Ch12 is return False; end Scope_Within_Body_Or_Same; + -- Start of processing for Check_Actual_Type + begin -- The exchange is only needed if the generic is defined -- within a package which is not a common ancestor of the @@ -7812,6 +8101,8 @@ package body Sem_Ch12 is end if; end Check_Private_Type; + -- Start of processing for Check_Private_View + begin if Present (Typ) then -- If the type appears in a subtype declaration, the subtype in @@ -7874,20 +8165,20 @@ package body Sem_Ch12 is -- Check_Hidden_Primitives -- ----------------------------- - function Check_Hidden_Primitives (Assoc_List : List_Id) return Elist_Id is + function Check_Hidden_Primitives (Renamings : List_Id) return Elist_Id is Actual : Node_Id; Gen_T : Entity_Id; Result : Elist_Id := No_Elist; begin - if No (Assoc_List) then + if No (Renamings) then return No_Elist; end if; -- Traverse the list of associations between formals and actuals -- searching for renamings of tagged types - Actual := First (Assoc_List); + Actual := First (Renamings); while Present (Actual) loop if Nkind (Actual) = N_Subtype_Declaration then Gen_T := Generic_Parent_Type (Actual); @@ -9670,6 +9961,62 @@ package body Sem_Ch12 is return False; end Has_Contracts; + ------------------------------- + -- Has_Fully_Defined_Profile -- + ------------------------------- + + function Has_Fully_Defined_Profile (Subp : Entity_Id) return Boolean is + function Is_Fully_Defined_Type (Typ : Entity_Id) return Boolean; + -- Determine whethet type Typ is fully defined + + --------------------------- + -- Is_Fully_Defined_Type -- + --------------------------- + + function Is_Fully_Defined_Type (Typ : Entity_Id) return Boolean is + begin + -- A private type without a full view is not fully defined + + if Is_Private_Type (Typ) + and then No (Full_View (Typ)) + then + return False; + + -- An incomplete type is never fully defined + + elsif Is_Incomplete_Type (Typ) then + return False; + + -- All other types are fully defined + + else + return True; + end if; + end Is_Fully_Defined_Type; + + -- Local declarations + + Param : Entity_Id; + + -- Start of processing for Has_Fully_Defined_Profile + + begin + -- Check the parameters + + Param := First_Formal (Subp); + while Present (Param) loop + if not Is_Fully_Defined_Type (Etype (Param)) then + return False; + end if; + + Next_Formal (Param); + end loop; + + -- Check the return type + + return Is_Fully_Defined_Type (Etype (Subp)); + end Has_Fully_Defined_Profile; + ---------- -- Hash -- ---------- @@ -10458,6 +10805,26 @@ package body Sem_Ch12 is end if; end Install_Hidden_Primitives; + --------------------------------- + -- Renames_Standard_Subprogram -- + --------------------------------- + + function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean is + Id : Entity_Id; + + begin + Id := Alias (Subp); + while Present (Id) loop + if Scope (Id) = Standard_Standard then + return True; + end if; + + Id := Alias (Id); + end loop; + + return False; + end Renames_Standard_Subprogram; + ------------------------------- -- Restore_Hidden_Primitives -- ------------------------------- @@ -10976,9 +11343,7 @@ package body Sem_Ch12 is if Requires_Conformance_Checking (Formal) then declare I_Pack : constant Entity_Id := Make_Temporary (Loc, 'P'); - I_Nam : Node_Id; - begin Set_Is_Internal (I_Pack); Mutate_Ekind (I_Pack, E_Package); @@ -11222,9 +11587,7 @@ package body Sem_Ch12 is Nam := Make_Identifier (Loc, Chars (Formal_Sub)); end if; - elsif Nkind (Specification (Formal)) = N_Procedure_Specification - and then Null_Present (Specification (Formal)) - then + elsif Has_Null_Default (Formal) then -- Generate null body for procedure, for use in the instance Decl_Node := @@ -11281,13 +11644,7 @@ package body Sem_Ch12 is return Decl_Node; else - Error_Msg_Sloc := Sloc (Scope (Analyzed_S)); - Error_Msg_NE - ("missing actual&", Instantiation_Node, Formal_Sub); - Error_Msg_NE - ("\in instantiation of & declared#", - Instantiation_Node, Scope (Analyzed_S)); - Abandon_Instantiation (Instantiation_Node); + pragma Assert (False); end if; Decl_Node := @@ -11426,14 +11783,6 @@ package body Sem_Ch12 is Acc_Def := Access_Definition (Formal); end if; - -- Sloc for error message on missing actual - - Error_Msg_Sloc := Sloc (Scope (A_Gen_Obj)); - - if Get_Instance_Of (Gen_Obj) /= Gen_Obj then - Error_Msg_N ("duplicate instantiation of generic parameter", Actual); - end if; - Set_Parent (List, Act_Assoc); -- OUT present @@ -11444,21 +11793,11 @@ package body Sem_Ch12 is -- renaming declaration. The actual is the name being renamed. We -- use the actual directly, rather than a copy, because it is not -- used further in the list of actuals, and because a copy or a use - -- of relocate_node is incorrect if the instance is nested within a + -- of Relocate_Node is incorrect if the instance is nested within a -- generic. In order to simplify e.g. ASIS queries, the -- Generic_Parent field links the declaration to the generic -- association. - if No (Actual) then - Error_Msg_NE - ("missing actual &", - Instantiation_Node, Gen_Obj); - Error_Msg_NE - ("\in instantiation of & declared#", - Instantiation_Node, Scope (A_Gen_Obj)); - Abandon_Instantiation (Instantiation_Node); - end if; - if Present (Subt_Mark) then Decl_Node := Make_Object_Renaming_Declaration (Loc, @@ -11622,14 +11961,14 @@ package body Sem_Ch12 is (Actual => Actual, Formal => A_Gen_Obj); - -- Formal in-parameter + -- Formal in-mode parameter else - -- The instantiation of a generic formal in-parameter is constant - -- declaration. The actual is the expression for that declaration. - -- Its type is a full copy of the type of the formal. This may be - -- an access to subprogram, for which we need to generate entities - -- for the formals in the new signature. + -- The instantiation of a generic formal in-mode parameter is a + -- constant declaration. The actual is the expression for that + -- declaration. Its type is a full copy of the type of the + -- formal. This may be an access to subprogram, for which we need + -- to generate entities for the formals in the new signature. if Present (Actual) then if Present (Subt_Mark) then @@ -11750,37 +12089,7 @@ package body Sem_Ch12 is Set_Analyzed (Expression (Decl_Node), False); else - Error_Msg_NE ("missing actual&", Instantiation_Node, Gen_Obj); - Error_Msg_NE ("\in instantiation of & declared#", - Instantiation_Node, Scope (A_Gen_Obj)); - - if Is_Scalar_Type (Etype (A_Gen_Obj)) then - - -- Create dummy constant declaration so that instance can be - -- analyzed, to minimize cascaded visibility errors. - - if Present (Subt_Mark) then - Def := Subt_Mark; - else pragma Assert (Present (Acc_Def)); - Def := Acc_Def; - end if; - - Decl_Node := - Make_Object_Declaration (Loc, - Defining_Identifier => New_Copy (Gen_Obj), - Constant_Present => True, - Null_Exclusion_Present => Null_Exclusion_Present (Formal), - Object_Definition => New_Copy (Def), - Expression => - Make_Attribute_Reference (Sloc (Gen_Obj), - Attribute_Name => Name_First, - Prefix => New_Copy (Def))); - - Append (Decl_Node, List); - - else - Abandon_Instantiation (Instantiation_Node); - end if; + pragma Assert (False); end if; end if; @@ -12880,7 +13189,7 @@ package body Sem_Ch12 is Act_T : Entity_Id; Ancestor : Entity_Id := Empty; Decl_Node : Node_Id; - Decl_Nodes : List_Id; + Decl_Nodes : List_Id; -- result Loc : Source_Ptr; Subt : Entity_Id; @@ -12892,7 +13201,7 @@ package body Sem_Ch12 is -- There are a number of constructs in which a discrete type with -- predicates is illegal, e.g. as an index in an array type declaration. -- If a generic type is used is such a construct in a generic package - -- declaration, it carries the flag No_Predicate_On_Actual. it is part + -- declaration, it carries the flag No_Predicate_On_Actual. It is part -- of the generic contract that the actual cannot have predicates. function Subtypes_Match (Gen_T, Act_T : Entity_Id) return Boolean; @@ -13042,9 +13351,8 @@ package body Sem_Ch12 is -- wide types), or designated types (when dealing with anonymous -- access types) of Gen_T and Act_T are statically matching subtypes. - return ((Base_Type (T) = Act_T - or else Base_Type (T) = Base_Type (Act_T)) - and then Subtypes_Statically_Match (T, Act_T)) + return (Base_Type (Base_Type (T)) = Base_Type (Act_T) + and then Subtypes_Statically_Match (T, Act_T)) or else (Is_Class_Wide_Type (Gen_T) and then Is_Class_Wide_Type (Act_T) @@ -13486,7 +13794,7 @@ package body Sem_Ch12 is or else Ekind (Get_Instance_Of (A_Gen_T)) = E_Record_Type_With_Private then - -- Check whether the parent is another derived formal type in the + -- Check whether the parent is another formal derived type in the -- same generic unit. if Etype (A_Gen_T) /= A_Gen_T @@ -14178,11 +14486,6 @@ package body Sem_Ch12 is -- Start of processing for Instantiate_Type begin - if Get_Instance_Of (A_Gen_T) /= A_Gen_T then - Error_Msg_N ("duplicate instantiation of generic type", Actual); - return New_List (Error); - end if; - if not Is_Entity_Name (Actual) or else not Is_Type (Entity (Actual)) then @@ -14299,9 +14602,7 @@ package body Sem_Ch12 is Check_Shared_Variable_Control_Aspects; - if Error_Posted (Act_T) then - null; - else + if not Error_Posted (Act_T) then case Nkind (Def) is when N_Formal_Private_Type_Definition => Validate_Private_Type_Instance; @@ -16319,8 +16620,10 @@ package body Sem_Ch12 is -- If there are other defaults, add a dummy association in case -- there are other defaulted formals with the same name. + -- Note that we are creating an N_Generic_Association with + -- neither Explicit_Generic_Actual_Parameter nor Box_Present. - elsif Present (Next (Act2)) then + elsif Present (Next (Act2)) and True then Ndec := Make_Generic_Association (Loc, Selector_Name => diff --git a/gcc/ada/sem_ch12.ads b/gcc/ada/sem_ch12.ads index 6639d546e31..0356f2acfae 100644 --- a/gcc/ada/sem_ch12.ads +++ b/gcc/ada/sem_ch12.ads @@ -135,7 +135,7 @@ package Sem_Ch12 is -- captured as described here. -- Because instantiations can be nested, the environment of the instance, - -- involving the actuals and other data-structures, must be saved and + -- involving the actuals and other data structures, must be saved and -- restored in stack-like fashion. Front-end inlining also uses these -- structures for the management of private/full views. @@ -186,7 +186,7 @@ package Sem_Ch12 is Act_Unit : Entity_Id); -- Because instantiations can be nested, the compiler maintains a stack -- of environments that holds variables relevant to the current instance: - -- most importanty Instantiated_Parent, Exchanged_Views, Hidden_Entities, + -- most importantly Instantiated_Parent, Exchanged_Views, Hidden_Entities, -- and others (see full list in Instance_Env). procedure Restore_Env; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 0e951c1b6b8..eebaedc216b 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -1250,7 +1250,8 @@ package body Sem_Ch3 is -- to incomplete types declared in some enclosing scope, not to limited -- views from other packages. - -- Prior to Ada 2012, access to functions can only have in_parameters. + -- Prior to Ada 2012, access to functions parameters must be of mode + -- 'in'. if Present (Formals) then Formal := First_Formal (Desig_Type); From patchwork Thu Jun 20 08:53:19 2024 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: 1950021 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=FoRsGu3b; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zdc30KJz20X6 for ; Thu, 20 Jun 2024 19:17:40 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 758FD388CC1D for ; Thu, 20 Jun 2024 09:17:38 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 4ADA5388A021 for ; Thu, 20 Jun 2024 08:53:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4ADA5388A021 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4ADA5388A021 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873642; cv=none; b=W+MxZwlEaiIxOCvEyiBm2wF+3bmbEs31Kr3I+01jT1HXk1maj07wLFYUvGd16Btyg63iACbjdkAZ9bEQcFFdwyQyxk0D2NDKYt4d0Dq/It8HwsGG7zhVDZbBqwIf4ExeS84GvuFUHisdO/2l6QI5w+bIiNiJu2+1WTHo3jOmBLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873642; c=relaxed/simple; bh=4LuW8LjcpE8jpGCjJSHIQ9SyT9By56PgtREg59burK0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=JxroiAHcwM9m6jlTA08wEHIvkn+C8OMNx44OXsnwLUiAg3u4UN2CI8KgfcVtdsNJ3qcSLIHSg6J7rZDYitg1oBnS03RmFOfYdl+IxModIruFiPsoXtVAVPo5OitDOjryrXFV1RGQXmQ7RqxmcvAsGuC52PM0G8ceen653gYKOOY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3608e6d14b6so507327f8f.0 for ; Thu, 20 Jun 2024 01:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873637; x=1719478437; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KwCYLLGRWvI68KzH9YYbzhRmJd5s/BqjT2i9ZbPJ3/8=; b=FoRsGu3bH9LCZ8cOp8OFRPouNCnVtX1jWWsFg3TT/JOj6PQ6bmH0XItC1EWDBXzXGd 02QIbvWvkkpsw5YVyUwsds7461+nkL10/M+zGkMEN90O/FNnPO4pncY9nYoTTS2vvNMj jf/6Vk+sBI0GlcMjPR4MtgFUZle2Y7gKP+rdAeb09krAhQS17ImJwsPbhSEV7+KyavI9 SmW6pfLoyhmsSIXU5Jrk6sCjx+A5Qe+UAIRvWbdUa1/Sa5pSLPHnZmNZQxWU2wReSmEM mlp668PBt7mGZohDdz2UyUTPfkmIFrEFL4SKCXnICfurBKMOX3ra4aZBIajP4YtVWYDH 64EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873637; x=1719478437; 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=KwCYLLGRWvI68KzH9YYbzhRmJd5s/BqjT2i9ZbPJ3/8=; b=cu715yUh5vtne9ZCF25McKWUW/81gppZ79iUA3G6NiM6Hx3kIIH0qpOPKj+H8UYlCv P3DnjVQDvygy+97dQ0Plez882I0lE8EUFSCX5M2GDuvyxO70ggqVd6Qz9xx/j/gMMDGs XGtDCWBhzRytj+hODr6yZDItTmmF7CbFX3uO4ndfMhpeTO/+27K2TREJYbl87zwxmQJG 2o75UKJ6lIuF9AKzoaW2M9VCRBc9abOjMNvf1dOuPCtROOlx2JmuAh0QRthrLjQCKta/ wHLEvt9QdXsXLC6lSVZpl/qwVfMPJ5RkiYby6LWPQcE9oad08agclvOgMkR/1Uz2XFBl P+NA== X-Gm-Message-State: AOJu0YxfUMecwFKiQYmBI+p1MVjrrNwoh2ErQjhsFm+PT8wfsm4TucfA U5DHjMCo+cKDLvIQiVWxvdESGKg+YRZe8Onh09+OZ+SyAZdJdmmACjkI04Qv1NABlgo2cq+uYKE = X-Google-Smtp-Source: AGHT+IFQQQZSoPftRkRogDND6PMD2BjIPp53jg0mdwEF5pujNZ+8Eq67PqIx12bKowxK74rjMxf5vw== X-Received: by 2002:adf:e983:0:b0:35f:2cd8:cb31 with SMTP id ffacd0b85a97d-36317b82ec3mr3379504f8f.35.1718873637089; Thu, 20 Jun 2024 01:53:57 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:56 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Yannick Moy Subject: [COMMITTED 29/30] ada: Fix checking of SPARK RM on ghost with concurrent part Date: Thu, 20 Jun 2024 10:53:19 +0200 Message-ID: <20240620085321.2412421-29-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Yannick Moy SPARK RM 6.9(21) forbids a ghost type to have concurrent parts. This was not enforced, instead only the type itself was checked to be concurrent. Now fixed. gcc/ada/ * ghost.adb (Check_Ghost_Type): Fix checking. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/ghost.adb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/ada/ghost.adb b/gcc/ada/ghost.adb index d220e0e1ec0..84fd40ed98a 100644 --- a/gcc/ada/ghost.adb +++ b/gcc/ada/ghost.adb @@ -1054,7 +1054,9 @@ package body Ghost is Full_Typ : Entity_Id; begin - if Is_Ghost_Entity (Typ) then + if Is_Ghost_Entity (Typ) + and then Comes_From_Source (Typ) + then Conc_Typ := Empty; Full_Typ := Typ; @@ -1062,7 +1064,9 @@ package body Ghost is Conc_Typ := Anonymous_Object (Typ); Full_Typ := Conc_Typ; - elsif Is_Concurrent_Type (Typ) then + elsif Has_Protected (Typ) + or else Has_Task (Typ) + then Conc_Typ := Typ; end if; From patchwork Thu Jun 20 08:53:20 2024 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: 1950016 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=PZMxNgUL; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W4Zb222h3z20X6 for ; Thu, 20 Jun 2024 19:15:26 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 83F4D3890412 for ; Thu, 20 Jun 2024 09:15:24 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by sourceware.org (Postfix) with ESMTPS id 36CFE3888C75 for ; Thu, 20 Jun 2024 08:53:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 36CFE3888C75 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 36CFE3888C75 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873645; cv=none; b=xWeq4WGbFK81tHtvJtumouDmPaGNdS2ZKwp3Gp37Gotrl6p4CGrU+qZN3l8Zv0qC/Y6h1OXgAoRLKgYKtq9hSyJyV4RYeBpsvOulY1Grdz+vhR1vDTTXuKfGAbykL17yYUBvMcZn7uJyTgqsZM/8bh+a4WqyBprzbhTvF63LVPo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718873645; c=relaxed/simple; bh=JC8DrIEK3GFvBOLOzY/GEUzNOp0ofoENg6BANc5k6Ew=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ibOzt0AO/EXrLpqs5K9WMlC9Mcni7dZIIMFYRW/7GOPodggiNbiL61Eyn8cnUnuh26pU1ZrWUTMdnWMxHW/1d86yDBJYUbbpDJn+1mBjDVr5CWiHTEXzfig6tKAQSPyUC0yxS7riRJQRx1xpfucNn85peBbS2rnjxyAfhFZxlnQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-362bc731810so680432f8f.1 for ; Thu, 20 Jun 2024 01:53:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1718873638; x=1719478438; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=llDO/2EFEE2ClXdHG2qh1vsf4AnQNMu/fi5EE+WRXQU=; b=PZMxNgUL5sER3pONUT1+yvRomG4vZ/YstAJf/RecATdEE4fofGtlbhQl5eUR9dctIa mwy63ydxoOAa8EeU5VYISevE3aRrX5kHpvNs1ApI2q01LMH9hJcJx50MrJytaU06CUw5 0I5B7I4NO7/E51P0Vk0fpfJaxR1U2v21b7qDtHvKt5j3klEMWzD2ATGktoathrQRK6YL zwhqeWmGqw8+3B6rbmo+Xqep0T2VSh9/MPb7TWdjTHuD0ezwv/byDjRDgZI6dbk5CnPu QHa/TWtIC7Nq0T5O51QQ2MQwatYHDmgZZ8OYrZNIrr8eB6iJem+C6Xs4jYkxybvrnQBC 1AIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718873638; x=1719478438; 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=llDO/2EFEE2ClXdHG2qh1vsf4AnQNMu/fi5EE+WRXQU=; b=Z0kSmn5yd5AFcQGYsfg/cMXoVNgwvGkgbzfNEieHwQyZNF6US2nXKZ+e+Dl3w6Hifn YWYaFTXfGkTatTHFCARtQpQG9xctfCTUYs6nsxoTM1eGmq6bb0MIFkFLz7Pj7WHIE2Bu K7iC1Qm7oQeuO+YjeQq6yrrqvaXeOS0ExvqQbmGnBdDiqBvigV8JQr2D3hNx8F5yztOP 0nn96FD9XufdDNv5C4gLiSqsYL1F9GILzMINGXFKaddZ1Dv4I7J1BWzwPjgzePAerZHS 8tWxkv5Af+RTgH00s4W/vgdi36HxosYVEdC4GEmH6tZvoMID/mgc4ysvIUUgCRmfH9ZF mVvQ== X-Gm-Message-State: AOJu0YzS9bCWrR8hVNVhzX/J/zbhrbJlE5QZ+6cXh8vLnG/dseqgQegk ka50JAuQWjjd+Z1uOCGkfCGK2O1igzv96dF1DHg+Fqt6zPiMaOKQ1xGXfG5ABiCMMKmSgyN2Aps = X-Google-Smtp-Source: AGHT+IH8fBDlkyO+yGNpDOtViTtNWDeCx3jDPQPb9mVFjDM+6NIyppiBSsArF1RPTcFhaOoyb/rxdw== X-Received: by 2002:a5d:5f8e:0:b0:364:29ce:b14e with SMTP id ffacd0b85a97d-36429ceb34dmr3181016f8f.69.1718873637873; Thu, 20 Jun 2024 01:53:57 -0700 (PDT) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-363c795febfsm3305522f8f.104.2024.06.20.01.53.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jun 2024 01:53:57 -0700 (PDT) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Steve Baird Subject: [COMMITTED 30/30] ada: Reference to nonexistent operator in reduction expression accepted Date: Thu, 20 Jun 2024 10:53:20 +0200 Message-ID: <20240620085321.2412421-30-poulhies@adacore.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240620085321.2412421-1-poulhies@adacore.com> References: <20240620085321.2412421-1-poulhies@adacore.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 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, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org From: Steve Baird In some cases, a reduction expression that references the (nonexistent) "+" operator of a generic formal private type is incorrectly accepted. gcc/ada/ * sem_attr.adb (Resolve_Attribute.Proper_Op): When resolving the name of the reducer subprogram in a reduction expression, Proper_Op treats references to operators defined in Standard specially. Disable this special treatment if the type of the reduction expression is not the right class of type for the operator, or if a new Boolean parameter (named "Strict") is True. (Resolve_Attribute): In the overloaded case, iterate over the reducer subprogram candidates twice. First with Strict => True and then, if no good intepretation is found, with Strict => False. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_attr.adb | 110 ++++++++++++++++++++++++++++++++----------- 1 file changed, 83 insertions(+), 27 deletions(-) diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index c2bb094492d..72f5ab49175 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -12600,21 +12600,30 @@ package body Sem_Attr is when Attribute_Reduce => declare - E1 : constant Node_Id := First (Expressions (N)); - E2 : constant Node_Id := Next (E1); + Reducer_Subp_Name : constant Node_Id := First (Expressions (N)); + Init_Value_Exp : constant Node_Id := + Next (Reducer_Subp_Name); Op : Entity_Id := Empty; Index : Interp_Index; It : Interp; - function Proper_Op (Op : Entity_Id) return Boolean; + + function Proper_Op + (Op : Entity_Id; + Strict : Boolean := False) return Boolean; + -- Is Op a suitable reducer subprogram? + -- Strict indicates whether ops found in Standard should be + -- considered even if Typ is not a predefined type. --------------- -- Proper_Op -- --------------- - function Proper_Op (Op : Entity_Id) return Boolean is + function Proper_Op + (Op : Entity_Id; + Strict : Boolean := False) return Boolean + is F1, F2 : Entity_Id; - begin F1 := First_Formal (Op); if No (F1) then @@ -12630,42 +12639,89 @@ package body Sem_Attr is return Ekind (F1) = E_In_Out_Parameter and then Covers (Typ, Etype (F1)); + elsif Covers (Typ, Etype (Op)) then + return True; + + elsif Ekind (Op) = E_Operator + and then Scope (Op) = Standard_Standard + and then not Strict + then + declare + Op_Chars : constant Any_Operator_Name := Chars (Op); + -- Nonassociative ops like division are unlikely + -- to come up in practice, but they are legal. + begin + case Op_Chars is + when Name_Op_Add + | Name_Op_Subtract + | Name_Op_Multiply + | Name_Op_Divide + | Name_Op_Expon + => + return Is_Numeric_Type (Typ); + + when Name_Op_Mod | Name_Op_Rem => + return Is_Numeric_Type (Typ) + and then Is_Discrete_Type (Typ); + + when Name_Op_And | Name_Op_Or | Name_Op_Xor => + -- No Boolean array operators in Standard + return Is_Boolean_Type (Typ) + or else Is_Modular_Integer_Type (Typ); + + when Name_Op_Concat => + return Is_Array_Type (Typ) + and then Number_Dimensions (Typ) = 1; + + when Name_Op_Eq | Name_Op_Ne + | Name_Op_Lt | Name_Op_Le + | Name_Op_Gt | Name_Op_Ge + => + return Is_Boolean_Type (Typ); + + when Name_Op_Abs | Name_Op_Not => + -- unary ops were already handled + pragma Assert (False); + raise Program_Error; + end case; + end; else - return - (Ekind (Op) = E_Operator - and then Scope (Op) = Standard_Standard) - or else Covers (Typ, Etype (Op)); + return False; end if; end if; end Proper_Op; begin - Resolve (E2, Typ); - if Is_Overloaded (E1) then - Get_First_Interp (E1, Index, It); - while Present (It.Nam) loop - if Proper_Op (It.Nam) then - Op := It.Nam; - Set_Entity (E1, Op); - exit; - end if; + Resolve (Init_Value_Exp, Typ); + if Is_Overloaded (Reducer_Subp_Name) then + Outer : + for Retry in Boolean loop + Get_First_Interp (Reducer_Subp_Name, Index, It); + while Present (It.Nam) loop + if Proper_Op (It.Nam, Strict => not Retry) then + Op := It.Nam; + Set_Entity (Reducer_Subp_Name, Op); + exit Outer; + end if; - Get_Next_Interp (Index, It); - end loop; + Get_Next_Interp (Index, It); + end loop; + end loop Outer; - elsif Nkind (E1) = N_Attribute_Reference - and then (Attribute_Name (E1) = Name_Max - or else Attribute_Name (E1) = Name_Min) + elsif Nkind (Reducer_Subp_Name) = N_Attribute_Reference + and then (Attribute_Name (Reducer_Subp_Name) = Name_Max + or else Attribute_Name (Reducer_Subp_Name) = Name_Min) then - Op := E1; + Op := Reducer_Subp_Name; - elsif Proper_Op (Entity (E1)) then - Op := Entity (E1); + elsif Proper_Op (Entity (Reducer_Subp_Name)) then + Op := Entity (Reducer_Subp_Name); Set_Etype (N, Typ); end if; if No (Op) then - Error_Msg_N ("No visible subprogram for reduction", E1); + Error_Msg_N ("No suitable reducer subprogram found", + Reducer_Subp_Name); end if; end;