From patchwork Tue Nov 23 20:46:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 48042 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 2681D3858415 for ; Tue, 23 Nov 2021 20:47:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2681D3858415 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1637700460; bh=mgcT5nUXIWl1/HDV3BAZdMhPyANPzgmq/iM0CzuRjQs=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=tEX/ySoTFvdjLNgevuiq6TzqyT7aElLeM6T5rQ/YQGBA7IKyYWH2D4jWT4LIWVTfA PNfVkUMRcv4ObeEwKlHt9pZfLNMvVjZJnWuJYagk2wCRt2+EDX7tNPARtazAzpCxaI p/wSMTCBLXRjWB5zvlTwaQJWDJ2J59Zby4mONqXw= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by sourceware.org (Postfix) with ESMTPS id 79CA73858C2C; Tue, 23 Nov 2021 20:46:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 79CA73858C2C X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.10.89] ([79.251.10.89]) by web-mail.gmx.net (3c-app-gmx-bs40.server.lan [172.19.170.92]) (via HTTP); Tue, 23 Nov 2021 21:46:49 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/103392 - [9/10/11/12 Regression] ICE in simplify_bound, at fortran/simplify.c:4273 Date: Tue, 23 Nov 2021 21:46:49 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:UaaYBBLWhO5HF2NUTXobp4xt+XJOQqznbRPRF4PLXbdm77dr4HCabOfJFWchQu2Gj5fBW AZzlo8QwIugB3zjJE74wUFV/c352pBsc/5mS9Vv+0kc4mDQ17D5ws/jsm+F6hsiTDKQuu/yMPP+j wKcmqGuk5Jl9c/+xrFop6ETeyB2R8Ph3gQ7dUvypEu3Ows+6UkD1mv0C+/773DjtQBovx9pa88Rv rL0L//PpTVrrgAGVyYSJPzj06AkNNf4ajiSAOB7cesoRP4NOwQgBAP7IN8GQCdGE/AD3iVbZUCX4 7s= X-UI-Out-Filterresults: notjunk:1;V03:K0:vFpfLcOAoSE=:U1L80j7gDbXV8ciheJlbn9 AGmvpbeAyyIZm7Q40zFeg/074Td3kPD7k4K9s8ZsYLsZ04i5rC0WWOroO8dTGY2GlbFTXE1R3 92JuW8rlw5tFCOsAxWkuzBp8V/7V7fY9R9z8fIKEOknm4Pv5Pq+9qXbVKqRgJjd6eGZESlxLw cAViwaOY6fLtBYHMdM5kcLCQXgkQnUl5eyCarqtfR41G88q3ZaFd2i0I8WswF4j4x2EorVOLG 0fA54YAAVewmT6S4ZoX1YyHk1N/FlN75fLtsOEC+4ZBtbaRtUOeMP5UBli1a9YPA2sX66f3C6 Nz78KHSWzT8D7g8phTpZZ5waqPqly23vc+oRhAdbVKfqt3uN3uq0l3gCGzg30fLl1OOm+0iSI S8FJcchvm95oyiOMCfc1qU22L8VEuDBvKfBpa3tF7FOY/m4u1zPed3aMwVExSMp4jfJuR3Hi5 JGsClNMHO+Zbwl7p8BE/+NfFtrrNFdAmY649kbZ0sd2KStF03dyPJaM+agX4JqJr9qwJQaP0l +k43Vzf68/HSH2e8Vuydck40372bKK7jocFHTzwOWrcbGRHHSNg+giGGE4DEAD7+9DFbKWguw RVd8SN/HW5jFr5/pf16D+LvAmg/xxEIrS8ZaogwDHeyPFDPl6U5FIb7F7sHUweeLZ1hJ0mkcw SsM3QZcWJacarPGpkzWViiNQ8iaH28wSMfwxIzEIpUesS421zu2q4QyUP6pletnch/xF3ygJm y8U85mtJFOvuO03JPLWOXLyWe9wEvqsBsmxtOUBcAruOPYvH0qAPB444up9EWAYD+sIMv841N wqudbin X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Dear all, in simplify_bound we did hit an assert when trying to simplify LBOUND/UBOUND for arrays with allocatable or pointer attribute. We cannot do that. Terminate simplification in that situation. Regtested on x86_64-pc-linux-gnu. OK for mainline/affected branches? Thanks, Harald From 82c5d7ab299ad4bce98b53cc9bba223c29b34e66 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Tue, 23 Nov 2021 21:39:36 +0100 Subject: [PATCH] Fortran: do not attempt simplification of [LU]BOUND for pointer/allocatable gcc/fortran/ChangeLog: PR fortran/103392 * simplify.c (simplify_bound): Do not try to simplify LBOUND/UBOUND for arrays with POINTER or ALLOCATABLE attribute. gcc/testsuite/ChangeLog: PR fortran/103392 * gfortran.dg/bound_simplification_7.f90: New test. --- gcc/fortran/simplify.c | 6 ++++++ .../gfortran.dg/bound_simplification_7.f90 | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/bound_simplification_7.f90 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 6a6b3fbd037..c9e13b59da9 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -4266,6 +4266,12 @@ simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper) || (as->type == AS_ASSUMED_SHAPE && upper))) return NULL; + /* 'array' shall not be an unallocated allocatable variable or a pointer that + is not associated. */ + if (array->expr_type == EXPR_VARIABLE + && (gfc_expr_attr (array).allocatable || gfc_expr_attr (array).pointer)) + return NULL; + gcc_assert (!as || (as->type != AS_DEFERRED && array->expr_type == EXPR_VARIABLE diff --git a/gcc/testsuite/gfortran.dg/bound_simplification_7.f90 b/gcc/testsuite/gfortran.dg/bound_simplification_7.f90 new file mode 100644 index 00000000000..3efecdff769 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/bound_simplification_7.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR fortran/103392 - ICE in simplify_bound + +program p + integer, allocatable :: a(1:1) ! { dg-error "deferred shape or assumed rank" } + integer :: b(1) = lbound(a) ! { dg-error "does not reduce" } + integer :: c(1) = ubound(a) ! { dg-error "does not reduce" } +end + +subroutine s(x, y) + type t + integer :: i(3) + end type t + type(t), pointer :: x(:) + type(t), allocatable :: y(:) + integer, parameter :: m(1) = ubound (x(1)% i) + integer :: n(1) = ubound (y(1)% i) +end subroutine s -- 2.26.2