From patchwork Wed Oct 13 19:36:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 46185 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 E1E523858408 for ; Wed, 13 Oct 2021 19:37:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E1E523858408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1634153863; bh=29g8lOcttvzlA0PL/+rTvJzREmq7HZDb4DqEUo4OvAo=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=Kmum5bRWqE/IZqbEfW3JuxI7MeSC88HlvSeaHUsH0JNX6XmEpGTHNRuhLIYt11omM oBxHYVZG9xS0yqZEkUSPZAgwc2QRdNmRUQBKRJl7EOBeJSVFPBdZo4sbM/9CQuGF2p 4CwdchgF/y01DPQNr7hVOOxg4P1+F86FywKdqr5A= 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 DA2E23858430; Wed, 13 Oct 2021 19:36:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DA2E23858430 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.82.18] ([93.207.82.18]) by web-mail.gmx.net (3c-app-gmx-bs17.server.lan [172.19.170.69]) (via HTTP); Wed, 13 Oct 2021 21:36:55 +0200 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/102716 - ICE in gfc_validate_kind(): Got bad kind Date: Wed, 13 Oct 2021 21:36:55 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:MsJNKQHUydgxdTmnvYY0V5TICTmMLTBnS4SdUABsh6GqCqkXSTtLxuL5cpk+F2T+J/cE/ VplhykDgGmnUjiyZEbc76HOtkn9PzD5pfFvIkwq/CiDZAeqv7SJeNGNukHwotYCJAX4s7+QPtnKH dYZhD9LM+v6YcSOet+xSkhFSkVMIPnCkaFT7ji1kXOvyl29ZESLJjvdJusYHUz8JOtn+YE+Z8fN2 j5qFadKXcDl0ueuVeWybkZi+0+qhkbChJeevMnXQL2elPU6koZ+iBW0cvVSphfCIC3Dbpba6q7hc Eg= X-UI-Out-Filterresults: notjunk:1;V03:K0:FJLkKUbsya4=:X5143lbtaiNOBkOW5OHh+8 neDKaX6NblmBb1B833NqFgMp+CcxvqZmAwZR750P8vZr4WelcJ3beCEu6VzRuH5k3c5rf8fwg Zqd6dGEzkOmmKQrfJ+TCzwM3Ex/7oLEd+zqM8dwSPUyfG0X7NJa6EFwpRlvH9Zx77XVIugMw9 YZN0Tu5KakHMtu8cR6DCRZMaEHQDpWFtUnIUitiKFPj71FFaK8L/a8Yy7/SJaXPUttZme7Kr7 82D3Kdrh7zAYIPWuM+DCgYoljB5KMWST8vXEcOAFZpNXz0qLtKQo0JhE1/FfIGyIq8Lgt7bxY wi1Ni8c6MFWODlAOHyH0maC8sNKMQTyyAYXvuCeZXnihAGf5/JimLsIwjVpWuuEIxtr+g5iOE 96so/+QcydN0EvHkpUfclU93TDV2bf8Iac6gUw0LgWMa6zXkSW9FYUeEpXAc61LsIfji1uReL pAdn3hRDFLZ9AGGc/Nd34o+HSN5Sy7PzBATDAVg9Dn9DooR3wwToL/xCsRmIJdlcOaFZLZcxZ 6/lxepAC9ydHo+HqpBSDSYsCo+lmwq12NkzIBLYv/FpPDyoFsjb0TMR0g/3+ePMOfRil21TyY D7VtnA2gj8yDxeeF4BNynNzDUi12+tG+cfaJbtIQDaAm3noqgzXjKScr+NIc8vFntPkMyUtC7 X+rhtQcx4OUzDbZyW+mUioixmmsLojlAme80McrAYG8lTRpcZhLCl1JFbEKIwVONGYsiYGOsL B0qW1yc2vsyjTQmtLwINiXjnlVVqf2ALIRbOxpi9c9Eiu0ErytrM1YgneYR8b89aS9eRvTjSh KOZP6s6 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 Fortranners, another simple and obvious fix: we need to reorder the argument checks to the SHAPE intrinsic so that invalid KIND arguments can be detected. Regtested on x86_64-pc-linux-gnu. OK for mainline? As I consider this a safe fix, I'd like to backport to suitable branches. Thanks, Harald Fortran: fix order of checks for the SHAPE intrinsic gcc/fortran/ChangeLog: PR fortran/102716 * check.c (gfc_check_shape): Reorder checks so that invalid KIND arguments can be detected. gcc/testsuite/ChangeLog: PR fortran/102716 * gfortran.dg/shape_10.f90: New test. diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 677209ee95e..cfaf9d26bbc 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -5086,6 +5086,13 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind) if (gfc_invalid_null_arg (source)) return false; + if (!kind_check (kind, 1, BT_INTEGER)) + return false; + if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic " + "with KIND argument at %L", + gfc_current_intrinsic, &kind->where)) + return false; + if (source->rank == 0 || source->expr_type != EXPR_VARIABLE) return true; @@ -5098,13 +5105,6 @@ gfc_check_shape (gfc_expr *source, gfc_expr *kind) return false; } - if (!kind_check (kind, 1, BT_INTEGER)) - return false; - if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic " - "with KIND argument at %L", - gfc_current_intrinsic, &kind->where)) - return false; - return true; } diff --git a/gcc/testsuite/gfortran.dg/shape_10.f90 b/gcc/testsuite/gfortran.dg/shape_10.f90 new file mode 100644 index 00000000000..4943c21b1d2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/shape_10.f90 @@ -0,0 +1,6 @@ +! { dg-do compile } +! PR fortran/102716 + +program p + integer, parameter :: a(1) = shape([2], [1]) ! { dg-error "must be a scalar" } +end