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 4065A385C41C; Wed, 24 Aug 2022 18:51:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4065A385C41C 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.net; s=badeba3b8450; t=1661367060; bh=ayA5AOA7KKdQWLS0krcfyagFSp3jbVZaJvk1N0JYTDg=; h=X-UI-Sender-Class:Date:Subject:To:References:From:In-Reply-To; b=A22gWCEYhuz3N3bQfGs6Xv6dOyTN32SSr65tMCHWDjKSrxMNaPOGWI6EukPmos0J5 hfvoMxhjF6zU0gwS1psBpWCljFcEadcyWln4sd8VGPkqfa/dQ2eNMiCHA5ic0jNKgE L+CBX0ljmMxyL35r93Uoayn1TJOyqdjS/ecmAn0g= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.178.29] ([79.251.14.247]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N9Mtg-1pTqOO26Wi-015MW5; Wed, 24 Aug 2022 20:51:00 +0200 Message-ID: <92c309c2-e962-91c1-ea87-88a3d0cf62d7@gmx.de> Date: Wed, 24 Aug 2022 20:50:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Re: [Patch] Fortran/OpenMP: Fix strictly structured blocks parsing Content-Language: en-US To: Tobias Burnus , gcc-patches , fortran , Jakub Jelinek Newsgroups: gmane.comp.gcc.fortran,gmane.comp.gcc.patches References: From: Harald Anlauf In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:K0yPoZRuoSVW6BpTnOFT6vSsSU6MhvWUyhvyaghfMVtedO+Us7l fU7nPdo3NS0rrGpqJiHSIxycGxBNupukqQbsn4l/YDm9RV7BZ9FfRfteykiF/Fo+gz8fQuh Gmiar8jZhTdJcEwaxwZudpgpBe1P792NqPYMwy7Dwd/qXj2Rdz2pme0P6esjzPaN0Nrqr/5 OnIQubtHfwTdA4WrmxVIA== X-UI-Out-Filterresults: notjunk:1;V03:K0:TvSFh3AM020=:9JBnVELiZtjOqjvtGVy1IZ 4vaRA7TCdvLogMMB1bbCcRRbN3I81F+t26U4FWpv30m/DFfe4diyVGHFAGakWhl/q3mxEyCZm vdhuhCh0V805AMqbDAOq2Z7/zL4YXr39eyjcaSxvTWCNORDeynzpDDxanrdHmFYbymHazC9SV tWTtuA/vGaukunxCAGUCdBKQNzTUb6tHg0lO+e4bxZplpCL4u0a1AZD0gLffLvcagjIZmvshY 9IfZ7o02aHpAWg/I8QsKg2Mq4sKBWsrOo6D7EznNg7UkJFVG/Iow9rdPV8ALSVBd3pxLOGfTE J/GUQBqhgZ+XsnAA2r5Z0TQv4xj3OjK7O9rJoh4LxUkhfMbzmWlrb2hxnjJbTLYmMg04xeT7L lDcPUtz3+TQWjVdmyailHNNzcnedGU4CdCS8SVbcKomdSt16MZ6sUc+P3tWClwaH1hvgMvsEq xkAXYAoYoORrISieSpIxwfg2zTrMMcb9f4U9NRtdeCgMwsBxqKENwWBZZz4ahmhsd7qG0Q/ku qOuhYaHYqD+5rGJ1H3MAiwsuLVzjmhP81vsXESwBghCB8mb07Et4L/1lqijfdhuuDpbLN5tBu KaJyFVIdwSpv+CG0dMqvjHVNJoNB/5tie9zlLtZiMeKKO0xb1Ce+jrNbmyd+YYI43zcwjit+Y N8sbiInrkVTR9UsH/WBmkf3aMEiDrPfJkfD3W6QD8YSO/A2nmkuQa3kzBY1FTcg/sR6V4gKWf iz7VeWi9f9ZvDT/Hm68IE8yf5yGcL6eTOTMvEyUbEKFfGUWTdJ4sKDYjQ8U6xrkPksIyZjpA0 kIzSXs8rqNpgstl/KBFgDXszOnLW54vQhK4sASiTTaeaGOmSiuAvoor3SNRGYTjkF1h7DIT2M Zz9n3HRYAkAQlP8eUb3pbLlV3wK6o9k7+A0LAZ3NkmwawA4SdZQydSDfOrW4XCkDnvvVloNUM /Vy2WIoXldwCyxjn2OETrKRF2Jg1LcKRDzHZ3tNveODGfqljpkzTIQzfTi69dKlio+e8nOKCp hCMSMjiWLNCliLZV4GamT7/KJDwBug8g90DcsK1PkFChSXqcyJhwC4Dz5hWPbQJFh9Qpt8uYc oWNdAR1CmZbtMffc/1UFzVX/YUlYdxs0wYa5822aSrqQKifO4RoImzCRg== X-Spam-Status: No, score=-3.3 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: Message-ID: <20220824185058._F1AUuDWMCOiAIIxIME90QW1Jl_m8pzVvWi3GxncL8g@z> Hi Tobias, Am 24.08.22 um 19:47 schrieb Tobias Burnus: > This patch is about error diagnostic + an ICE for invalid code. [...] > (So far, so good, but then the parsing-code did run into a bug.) > > For the blocks, the following applies. OpenMP permits either > * strictly structured blocks (with optional END_ST =3D=3D 'end target') > =C2=A0!$omp target > =C2=A0=C2=A0 block > =C2=A0=C2=A0=C2=A0=C2=A0 ... > =C2=A0=C2=A0 end block > =C2=A0!$omp end target=C2=A0 ! << this line is optional > * loosely structured block > =C2=A0!$omp target > =C2=A0=C2=A0=C2=A0 ... ! may not start with 'block' (and hence cannot e= nd with 'end > block') > =C2=A0!$omp end target=C2=A0 ! << required > > > The parsing issue is in the following code, > which first takes care of the 'strictly':=C2=A0 'end block' + optional '= end > target' > and then of the 'loosely structured' case with just:=C2=A0 'end target': > > =C2=A0=C2=A0=C2=A0=C2=A0 else if (block_construct && st =3D=3D ST_END_B= LOCK) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ... > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 st =3D next_statement = (); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (st =3D=3D omp_end_= st) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 accept_statement (st); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ... > =C2=A0=C2=A0=C2=A0=C2=A0 else if (st !=3D omp_end_st) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 { > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unexpected_statement (= st); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 st =3D next_statement = (); > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } > > The fix is to change the second if condition to: > =C2=A0=C2=A0=C2=A0=C2=A0 else if (st !=3D omp_end_st || (block_construc= t && st =3D=3D omp_end_st)) > > or rather to the following equivalent code: > =C2=A0=C2=A0=C2=A0=C2=A0 else if (st !=3D omp_end_st || block_construct= ) LGTM. > OK for mainline and GCC 12?* Yes for both. Thanks for the patch! Harald > Tobias > > *strictly structured blocks were added in r12-4592. > > > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe = 201, > 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: > Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaft: M=C3=BCnchen; > Registergericht M=C3=BCnchen, HRB 106955