From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1666811739; bh=Tnr6r/iSIQ8YAeLrtbC+diM4vE950mUAHGiNz7dtMyI=; h=X-UI-Sender-Class:From:To:Subject:Date; b=JwaYUagzNE/JBIYy47Ns63KRbkUn98gPHByubNYiOQyoUbds355jqa4pCxuNmWhiS 5ghtyZnZC8GBNgZyw8nq1D+BpHPkH4NE6MOeAsBu3Mu7fIK99u+Z35sTYdDnBCvyB5 YQB58Sdmbu+AhI6vOGfA48y8/1ZuBgJjQ7r+Qb6zWel42zmfX1XzS1MqB7P4F24kjF 18tgb4YOkCIelzYSuRI58I8+BE0+25eD4wIQ5YOPS1xmlVu/d1N3vCvbSihx2wFuCh U/S50XgB9xlsOTDQxLYKoyJ8mL3QGnx5cRFPbyjmalDd1jLTveS8K1oC1z7nYNrFAN oQYE+/UDBRqvQ== 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: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: BOZ literal constants are not compatible to any type [PR103413] Content-Type: multipart/mixed; boundary=sgnirk-284e70a3-cec3-4976-abd4-c5168df0679b 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 List-Id: --sgnirk-284e70a3-cec3-4976-abd4-c5168df0679b Content-Type: text/plain; charset=UTF-8 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 --sgnirk-284e70a3-cec3-4976-abd4-c5168df0679b Content-Type: text/x-patch Content-Disposition: attachment; filename=pr103413.diff Content-Transfer-Encoding: quoted-printable =46rom 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. =2D-- 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 =2D-- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -5139,6 +5139,10 @@ gfc_type_compatible (gfc_typespec *ts1, gfc_typespe= c *ts2) bool is_union1 =3D (ts1->type =3D=3D BT_UNION); bool is_union2 =3D (ts2->type =3D=3D BT_UNION); + /* A boz-literal-constant has no type. */ + if (ts1->type =3D=3D BT_BOZ || ts2->type =3D=3D 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/testsui= te/gfortran.dg/illegal_boz_arg_4.f90 new file mode 100644 index 00000000000..856cfa9211f =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-std=3Df2018" } +! PR fortran/103413 +! Contributed by G.Steinmetz + +program p + type t + class(*), allocatable :: a + end type + type(t) :: x + allocate (x%a, source=3Dz'1') ! { dg-error "type incompatible" } + allocate (x%a, mold=3Dz'1') ! { dg-error "type incompatible" } +end =2D- 2.35.3 --sgnirk-284e70a3-cec3-4976-abd4-c5168df0679b--