From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 A10FF3857031 for ; Tue, 10 Oct 2023 12:14:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A10FF3857031 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-40651a726acso51762195e9.1 for ; Tue, 10 Oct 2023 05:14:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1696940089; x=1697544889; 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=zREnhsfRHkkkPmqWMRaJ25YPYORkQlnUldbNr0OzloQ=; b=OwQM6zCg8vubjcmNO01AJ8K7OClNJfyjPyw6uc1uKpPK5SP+iVAiTYGm9suAJtCF2W +Uemgj06EJyOB39cPEpjkpb1YEKPWs5h3QCKO8EGF8XFpyBemeJL3D7myfrwwXgLDrjd AYN+wHnpfq9KUE6kubElpnBTWF/iLb5ICZT0vlc7ysoqClN8wumJ2pHvoDTWxgphV3nJ UiuJWpnC8nELOe40GiB496P2eim8AUniozAsQVoMPmPxNQyPv8JXUjYM0Hh55hNskfv6 ZR1zFPldTJV3r9ys/oOX3Hpc8gUIZC7VMVbDu6V/lkFYKYXWEs5H2RhzHUM74H3QLK/t ZAKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696940089; x=1697544889; 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=zREnhsfRHkkkPmqWMRaJ25YPYORkQlnUldbNr0OzloQ=; b=sFwrDsuMB9DywyoVCMUARr/hbr+NRtycZxWFg+5pjN7syL4wdTRETUY0sTkAmkxYQK qkHdWPCm8iOvsDXy6qAxuGtzME1lxPk9nXsRs2MPKMPKEzkp7MtKW0A6pHDSSV3fyVdo /9ZWO5g1r95cBP9mzid8Ji+BuxKl6xDPJMMzyn1QixHLxeijNO8M1c5FUgGFrzcwkdly pgJsz4dP8OwnPs8pUqOCey1rgH+DzFB7uujMm01ZiedkqR2rDwtMrYu8gQpV0+t9XdOP rCIUM3CMQqy5mdGWBhuDqzQybtWnGUnuf/VC2yq00CurZ//WRKr+UEKRkywmWNaPI7f9 8/uQ== X-Gm-Message-State: AOJu0Yy5Vs6LdvTWJEnD4owKP7C+IPVSBjoVcykpguUdaD5kPDM6VgQw Yz4Ly7QwNUMnGwdEWNJXJqtWXrqrfFkPEv2fodo/8g== X-Google-Smtp-Source: AGHT+IGtGXraZg6okAVYMag6qk3cHrlydUgSvgiDu4pv4w+RUaq3bmwb612nI+pYgTnQEh3wIGu9EQ== X-Received: by 2002:a5d:56c8:0:b0:321:4de3:fd5c with SMTP id m8-20020a5d56c8000000b003214de3fd5cmr15525978wrw.51.1696940089199; Tue, 10 Oct 2023 05:14:49 -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 d4-20020adf9b84000000b0032cfc367f08sm1867006wrc.65.2023.10.10.05.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 05:14:48 -0700 (PDT) From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Javier Miranda Subject: [COMMITTED] ada: Crash processing pragmas Compile_Time_Error and Compile_Time_Warning Date: Tue, 10 Oct 2023 14:14:45 +0200 Message-ID: <20231010121445.3888198-1-poulhies@adacore.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Javier Miranda gcc/ada/ * sem_attr.adb (Analyze_Attribute): Protect the frontend against replacing 'Size by its static value if 'Size is not known at compile time and we are processing pragmas Compile_Time_Warning or Compile_Time_Errors. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_attr.adb | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index d03761b1e30..3eba3a29362 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -6457,17 +6457,30 @@ package body Sem_Attr is or else Size_Known_At_Compile_Time (Entity (P))) then declare - Siz : Uint; + Prefix_E : Entity_Id := Entity (P); + Siz : Uint; begin - if Known_Static_RM_Size (Entity (P)) then - Siz := RM_Size (Entity (P)); + -- Handle private and incomplete types + + if Present (Underlying_Type (Prefix_E)) then + Prefix_E := Underlying_Type (Prefix_E); + end if; + + if Known_Static_RM_Size (Prefix_E) then + Siz := RM_Size (Prefix_E); else - Siz := Esize (Entity (P)); + Siz := Esize (Prefix_E); end if; - Rewrite (N, Make_Integer_Literal (Sloc (N), Siz)); - Analyze (N); + -- Protect the frontend against cases where the attribute + -- Size_Known_At_Compile_Time is set, but the Esize value + -- is not available (see Einfo.ads). + + if Present (Siz) then + Rewrite (N, Make_Integer_Literal (Sloc (N), Siz)); + Analyze (N); + end if; end; end if; -- 2.42.0