From patchwork Wed Oct 26 19:15:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 59501 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 AE8DF3885522 for ; Wed, 26 Oct 2022 19:16:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE8DF3885522 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666811781; bh=UeX11FNH0Ndd4WFibFdvhESGfpY9P7+R4prhCzk82hY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=OeR5fYSiorxjj2mELE1VAUJCJO/ZjyqCAVv9BpX673mqam1oTN0kqJm5BNAE4QXM5 ixwAsrZfT5MdrX1BNryl5bbLp3e6swI+b4bOeWApy4z8sLgOpmiW3BICetUZdJCWCD nkGEeVRJelgywZL10CGTZf91P70FcKIL4EVlCdck= 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 A8FC5388550D; Wed, 26 Oct 2022 19:15:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A8FC5388550D X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.85.70] ([93.207.85.70]) by web-mail.gmx.net (3c-app-gmx-bap72.server.lan [172.19.172.172]) (via HTTP); Wed, 26 Oct 2022 21:15:38 +0200 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] Fortran: BOZ literal constants are not compatible to any type [PR103413] Date: Wed, 26 Oct 2022 21:15:38 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:stvW5U0KAABRZrM1OIc2k5uHEswzSAKr/+wYMJjH/pMzG6Zzkle5QvhTu06zZfxT2O+FG GrIgPWc1Qlg+CuFhzxDYhnaJjJmLuuMOuHWKC8cpaOr0bETfDDwo7dBQsybXGlrZmyfJ0PvnKO6w sWSk/qQrGIXRLgmBMfseaxsNTou0jkdMZ7pEL76/e/sWxlUhAE2lxA4Ay8WU3T3gN2Rf/OTyYS+R Nqivbzn/gFTynjTSXuSPPiXV41OCRo6FL6qSnT7fK3EfkMp6Q8IbDE0jbNUP2hUtfriLP1+Tbznk eI= UI-OutboundReport: notjunk:1;M01:P0:SoEivbn0h2M=;sufzZHFzAZ4rLuBeTzuXPtV9nrK teXhwbEGhliEy3SNXb5uhWnVrH6IwaCISU7SZuDbDLfOmas9z1XCv+GLp2rbUVPfu0N5xXR8N XX+5XvIOHNNH0daPnlZVWB9jfMpnohEp2mQW7ggtyGlTshylAPSMBdaTO4IW+P32VbheZDL26 dbtnKiZhCbvLyDvQSyogmZzrsDRkLnq98Mtulg2O3xsWg9Av8Fg7COYDTnDpl4hlFRRXB/1/n CXPs4JPLunhBHQtIiH+gxN/G9c7ekSXoRSMaJsBA20tU7C1x+GsiB9SAe8YcEmuXE5ib8dMFD QTBVuECWBo6aFQKMSjSj+dLfHtsXPeNfwMiDDfM4epdPUZdvbbgWUZDTQ1NGTq5R3dkMHLpjL qEKPS8+RzR1E5BE6XQWvKBXCJYd/9NTFKJwVV5TZDHtXB1HhUdp1SaZ5WDrnQZ12zYkN1WrjY vRSJcoAhUGLiBWQjm7Sh/H6xzjpkp0ENc5U8YozGPteCsipBgeaxWthBcFLe5oQ+IHjNqUKRj fkk0Bsj5rO/tDDDrkKqUHkk06+EI+vd2hXEt1v4yCyq7mih9IakUr5tjysAbg06Q2yUIwkb3R ljGByT7gLKkxhhkngmHycXTGzca5JTyiVe6UjeTmWxAlRNKQfAIqlqe1mk3w4oZwca0wrvFq5 c2NaFOQGnvog5W0BtYWK0q6rd1c8t+wzHPChW9wCJQUE3iSCN6k1GRzmy3RzVKmBu1s82d2Tr Yevjcym9vDATAMqZevVwghrRgSUJY1CwFbdprLLpJ+CXGIFfKBHRaAwakks+36ns6S5x16Hn+ wmFPEg29SnIBZ9uMKkNfPmIcssYDcTzcuwurhEc0iPE9k= X-Spam-Status: No, score=-14.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS 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: 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, a BOZ as source-expression in an ALLOCATE statement could lead to an ICE when the allocate-object was a CLASS variable. Since a BOZ has no type, we can handle it as type incompatible with any type. This is also what the Cray compiler does for the code in the testcase. Regtested on x86_64-pc-linux-gnu. OK for mainline? The PR is marked as a 10/11/12/13 regression, so OK for backports? Thanks, Harald From 986bf9cc5abc51598609b16edc9242a87244571b Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Wed, 26 Oct 2022 21:00:44 +0200 Subject: [PATCH] Fortran: BOZ literal constants are not compatible to any type [PR103413] gcc/fortran/ChangeLog: PR fortran/103413 * symbol.cc (gfc_type_compatible): A boz-literal-constant has no type and thus is not considered compatible to any type. gcc/testsuite/ChangeLog: PR fortran/103413 * gfortran.dg/illegal_boz_arg_4.f90: New test. --- gcc/fortran/symbol.cc | 4 ++++ gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index 6050359d521..49fb37864bd 100644 --- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -5139,6 +5139,10 @@ gfc_type_compatible (gfc_typespec *ts1, gfc_typespec *ts2) bool is_union1 = (ts1->type == BT_UNION); bool is_union2 = (ts2->type == BT_UNION); + /* A boz-literal-constant has no type. */ + if (ts1->type == BT_BOZ || ts2->type == BT_BOZ) + return false; + if (is_class1 && ts1->u.derived->components && ((ts1->u.derived->attr.is_class diff --git a/gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 b/gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 new file mode 100644 index 00000000000..856cfa9211f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-std=f2018" } +! PR fortran/103413 +! Contributed by G.Steinmetz + +program p + type t + class(*), allocatable :: a + end type + type(t) :: x + allocate (x%a, source=z'1') ! { dg-error "type incompatible" } + allocate (x%a, mold=z'1') ! { dg-error "type incompatible" } +end -- 2.35.3