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 D1392384DA47 for ; Tue, 30 May 2023 07:21:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1392384DA47 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-3f6dfc4dffaso27624515e9.0 for ; Tue, 30 May 2023 00:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1685431290; x=1688023290; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8YJI7+fRUOR51yv4B+XaUn5i//LhbJEDvwthhWxvrJo=; b=VigvniKcOWc/kF+p/sXSdnT6gdZB+Xsd90d7SmC9FV4JYsfFdGikWXDS3HMthgm+B4 1lHc2659KS/siiR6V1+lYSksGZBGOlYkYaX44OdwnmKFVTW3nvmU6hLxpqGWWCMcfy6A jcj+hN0WnYlCAaKBFvpYHFDhp7rmaARqABnHQ8X6HMJbapAzI2R45LG5vQRXFQwJQNe3 kDAGrAsm2G+YYhu0SbqUfncV3JG+S3Ytpidc5Oqmk66YAdSOmaIj+PIddTLKqPtcK0Vd ByV2GSYsEqmsRzP1rsxOa2KKPMGe8cEgiI9QzdIxaxIWw7gn4J2bEyasaqXLiiZ974Tc CBQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685431290; x=1688023290; 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=8YJI7+fRUOR51yv4B+XaUn5i//LhbJEDvwthhWxvrJo=; b=KMuo1kb7nNRJGaFhuWfj9SpKbnSzk5c2SxXXHhYY/Ypbau0TDc/T4Evc7k3ADxopMw ByfMzrz2CbDpg5F42QTDyW6qtjGZ/VzaGqIpE9jfKX/Np+Qaxuu/6ypRpzK5vfLZ/yHO pHaIir306EVnyV16YOO5tSfc+h1ZtOsiLW4ka6bEI39xlMCfrbjryB1u2qPgPCJWQrnm n2+A+laYXCogwwsiYY4lzn+2pGPfvD5aYj1bAbRKciG3Vo50uAUpnZjFhQrQ9aou529P souJzWBNf7T3IN7qXwF6unrHn88QxceJ0K6hZcf22R2MIdH2zbohr9OpNbXisn3oFnKs MmUQ== X-Gm-Message-State: AC+VfDw3EnoruiHbfMzrU+gMVm4HXDNTe9zzGI8df36uL5xOaTw7mtV/ k7Ya7xQ/vxnNaJHt0cNrfZqCTDeIC6Jwj5skuAwtww== X-Google-Smtp-Source: ACHHUZ7WLhA7AEuGMGFCpxZ4PygXq+RL1e5G4nCowbDWNtvh93qw1NFjnw8b0iUEZc4BCLIiRhwbmA== X-Received: by 2002:a7b:cc8d:0:b0:3f7:5e3:c1f2 with SMTP id p13-20020a7bcc8d000000b003f705e3c1f2mr881056wma.8.1685431290606; Tue, 30 May 2023 00:21:30 -0700 (PDT) Received: from localhost.localdomain ([2001:861:3382:1a90:7733:a608:a415:6b2a]) by smtp.gmail.com with ESMTPSA id u20-20020a05600c211400b003f4ebeaa970sm16456626wml.25.2023.05.30.00.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 00:21:30 -0700 (PDT) From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= To: gcc-patches@gcc.gnu.org Cc: Eric Botcazou Subject: [COMMITTED] ada: Fix wrong access for qualified aggregate with storage model Date: Tue, 30 May 2023 09:21:28 +0200 Message-Id: <20230530072128.2501074-1-poulhies@adacore.com> X-Mailer: git-send-email 2.40.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,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 List-Id: From: Eric Botcazou The previous fix to get_storage_model_access was incomplete and needs to be extended to the node itself. gcc/ada/ * gcc-interface/trans.cc (get_storage_model_access): Also strip any type conversion in the node when unwinding the components. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/gcc-interface/trans.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc index 2e8d979831f..ddc7b6dde1e 100644 --- a/gcc/ada/gcc-interface/trans.cc +++ b/gcc/ada/gcc-interface/trans.cc @@ -4438,12 +4438,15 @@ get_storage_model_access (Node_Id gnat_node, Entity_Id *gnat_smo) && Prefix (Parent (gnat_parent)) == gnat_parent)) return; - /* Now strip any type conversion from GNAT_NODE. */ + /* Find the innermost prefix in GNAT_NODE, stripping any type conversion. */ if (node_is_type_conversion (gnat_node)) gnat_node = Expression (gnat_node); - while (node_is_component (gnat_node)) - gnat_node = Prefix (gnat_node); + { + gnat_node = Prefix (gnat_node); + if (node_is_type_conversion (gnat_node)) + gnat_node = Expression (gnat_node); + } *gnat_smo = get_storage_model (gnat_node); } -- 2.40.0