From patchwork Mon May 16 08:43:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre-Marie de Rodat X-Patchwork-Id: 54021 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 859373858C50 for ; Mon, 16 May 2022 09:06:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 859373858C50 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1652691990; bh=YYJIgconzyxUCk6nfW6RMXclGVbqoSRys1+SVPDZFjk=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=TvcD5I+W7J9lJf6P3xWDQkjm1WAlv7JIkh5A9ZUJtARX9f2NYxAcNqNWUeZ7rYO5x 8cVJ5rpWf6mcuzEnDrmBCPOntiZ7dpikBoMMR8BhRRYtEJV5ztu+9mcSQofvXPn/CA X9ov92EyS7b7RhkBKhwdKtXp9FNIC38IhhOlU4uk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by sourceware.org (Postfix) with ESMTPS id 125353857823 for ; Mon, 16 May 2022 08:43:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 125353857823 Received: by mail-wm1-x333.google.com with SMTP id o12-20020a1c4d0c000000b00393fbe2973dso10442194wmh.2 for ; Mon, 16 May 2022 01:43:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=YYJIgconzyxUCk6nfW6RMXclGVbqoSRys1+SVPDZFjk=; b=VS/T/tzWnWzroNMXtiGIQFsA1B2JFRsXrk6pvbrS+KpP6iPXjffGn9Eg1PQ0jh0+9G lSXLd2rpySzafbEnUnW7AiUZjK7whABpSuIkfSCs5SF+mDxTlYd3smXG9eaWGIkMVzpu p/v7bDFEoK0B2TeoX0o6AaTwmi+fpogMkFs0YJzr+Ey/i/jMEvO3bGGGjc4ynPDbXp39 10BWtz7VgN0a0mx2dBK3yeDrANTZkRg1lM0U/5gpFpBC+T9rccTqCYBR6CZQOAr4PirD A/LMsUWO3Pgcoz6gmMRiiJTMpuQCxcIGkGW61Bus6kahbUEPuQKiRLQswVWsVV27Wtsr 1XpA== X-Gm-Message-State: AOAM530fwdMFSwuknsZ2j6Qoz3yZmgzGBvtS8NgUr1jd5ivFfpknGzTy vrT5J0gpxFqlItxxa0NJwtaLo3hVZAEjOw== X-Google-Smtp-Source: ABdhPJwHSQ9KBz1Boij59D5oUkdhoXBmqPC4RPAQ21yCNmZHp/C3TdCfnMAIqFem+elqetavc4toMQ== X-Received: by 2002:a05:600c:3b9d:b0:394:70a0:12d2 with SMTP id n29-20020a05600c3b9d00b0039470a012d2mr26544086wms.64.1652690599624; Mon, 16 May 2022 01:43:19 -0700 (PDT) Received: from adacore.com ([45.147.211.82]) by smtp.gmail.com with ESMTPSA id k20-20020a05600c1c9400b003942a244f38sm13580426wms.17.2022.05.16.01.43.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 May 2022 01:43:19 -0700 (PDT) Date: Mon, 16 May 2022 08:43:18 +0000 To: gcc-patches@gcc.gnu.org Subject: [Ada] Freeze target type on qualified expression expansion Message-ID: <20220516084318.GA3843784@adacore.com> MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-13.2 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Pierre-Marie de Rodat via Gcc-patches From: Pierre-Marie de Rodat Reply-To: Pierre-Marie de Rodat Cc: Etienne Servais Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" An object declaration (other than a deferred constant declaration) causes freezing where it occurs (13.14(6)), which means every name occurring within it causes freezing (13.14(4/1)), and when the name in a subtype_mark causes freezing, the denoted subtype is frozen (13.14(11)). Hence, one needs to freeze the target type when expanding a qualified expression. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * exp_ch4.adb (Expand_N_Qualified_Expression): Freeze Target_Type. diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -10776,6 +10776,8 @@ package body Exp_Ch4 is Ensure_Valid (Operand); end if; + Freeze_Before (Operand, Target_Type); + -- Apply possible constraint check Apply_Constraint_Check (Operand, Target_Type, No_Sliding => True);