From patchwork Mon Dec 20 21:18:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 49124 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 0B5E2385841D for ; Mon, 20 Dec 2021 21:19:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B5E2385841D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1640035162; bh=W/1GmxUZhYPYp1z4aNp4MNr43XWh9c8EaedaAHlTfHY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=SWfJ9RA94ehkODcSmaU3JAN5LviXz837JUrq2TmD5VjxSoofSUQQQRkFOKaueATAr 0CzGDohhoi2wacw3y6O58BEWqrvdsd13Fvt1dJPXXk0g0YkmUkbD8pDCDk1+YoHB0z r72GsHkTh33dDB0lY1UEQyIZVujKHqtzdoJUVGyE= 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.15.18]) by sourceware.org (Postfix) with ESMTPS id 871733858406; Mon, 20 Dec 2021 21:18:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 871733858406 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.14.138] ([79.251.14.138]) by web-mail.gmx.net (3c-app-gmx-bs55.server.lan [172.19.170.139]) (via HTTP); Mon, 20 Dec 2021 22:18:33 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/103778 - [10/11/12 Regression] ICE: Invalid expression in gfc_element_size Date: Mon, 20 Dec 2021 22:18:33 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:ptNINaCNFCOhSpDw6gCILM55foMndurMxt5ak6912lFgFn1TLFkYcsC+/+W5s6jzGe/ED hDOFk20vQ+J7M7GrN7UMbnbn9DvDQdRJiTxKpJ6pS1GKVjNCbCpQdcFBZOarC3wKB+oaCpUqVSLA V8ZtTKO5T7MKujNSl12hubLDBmhiKjYSmL2tnCC2s3SlX8q4/MEbw7Xkol1gqSXuKqq7Sx8icyFT J6BMf9AP3T5B5TQ9oe0uDkljGGSaP8LCb7aMX9WjGani36yoSStl5Ir+B7/i9nhhpeH4db0ZCmQx iE= X-UI-Out-Filterresults: notjunk:1;V03:K0:yw9w9PrhsmE=:bhH4ecwp1LLqmYFV2Af9Jg IP6vYPT1p/o9xRMBsShdZmtV0cYlrdd2XxpzBLKKY3V51pVIg93zZiDbnq+2jdhJzre/pfrZq zMaG8QfxidTWc3jV1pzzDCpwxWsM1jv0yeu1AFXhNrDSAcZOkN9kw5wbemLALr7wK8mdNS1Fy 4yOc6swVK+zLmBsRuKeUeS/sT3Qw7H1s2Nxq4Is+Mt+zOsLPpIh0LAqQp8eW8cdFYSAkEzIIq VtNg9LIWsWvd73DpycanSR/94n7VISUH16D7clejX9Z1wVCXF19/1+zHCtTF/0eRxq0CZSeHr UYU4iupKmRt8TeqiedhzNIpbKXtMhz6ymrmxACrpjnm3QVeDuAAGMlhsplC8FdTq1RZUpAlj2 gRT8fbLpBxOO1NvgjRBDocbeZxIMTPtQO9ih/mnuddwTIYitXR/mNE79jvmGPBzziWXP+oMRz /T+bPvM/+DhXCuU+1i77444ycAQ1pO+kw+D/S5pE3psrIVFMq+THBVLyMRh+gQ8OsLprdLCZ+ Zrfwxfp1FgOf01WhyFJjwwSGyc0MKMudZKL/m3nRPr8rkKLvRSaJc9Km2Uz7XDz2npbLtziT5 z1/ytv7KhL/VIqWqsMqxrphgD57a7chQ0svNVA82pY7Mq999r4WchRDicD9GlawS3/FTDxrJ/ us1UcbyDYDEKesmzC32rS4oGFj34LGoFNBcj+qKuPCcjZjBZ1uzgHyYkcAdmDBvE5AndqHiat SnMsDfhOgXUQ32wouWSwdbZNkpno7XdyXwhIz6X5fIxGETSmJYk5wJpeKZRsx6PFXPnDTlXib GKFsEOi X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, 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 all, again found by Gerhard: using a BOZ literal constant in situations where an interoperable object is expected can lead to an ICE. But obviously a BOZ in not interoperable. Obvious patch, regtested on x86_64-pc-linux-gnu. Will commit within 48h unless there are objections or better suggestions. Thanks, Harald From 2e6c83fbddda3215faf111263ebfc754bc07096c Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Mon, 20 Dec 2021 22:12:33 +0100 Subject: [PATCH] Fortran: BOZ literal constants are not interoperable gcc/fortran/ChangeLog: PR fortran/103778 * check.c (is_c_interoperable): A BOZ literal constant is not interoperable. gcc/testsuite/ChangeLog: PR fortran/103778 * gfortran.dg/illegal_boz_arg_3.f90: New test. --- gcc/fortran/check.c | 6 ++++++ gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 625473c90d1..b4db9337e9f 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -5185,6 +5185,12 @@ is_c_interoperable (gfc_expr *expr, const char **msg, bool c_loc, bool c_f_ptr) return false; } + if (expr->ts.type == BT_BOZ) + { + *msg = "BOZ literal constant"; + return false; + } + if (expr->ts.type == BT_CLASS) { *msg = "Expression is polymorphic"; diff --git a/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 b/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 new file mode 100644 index 00000000000..59fefa90971 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR fortran/103778 + +program p + use iso_c_binding, only : c_sizeof + integer, parameter :: a = c_sizeof(z'1') ! { dg-error "cannot appear" } +end -- 2.26.2