From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id D10DD3858405 for ; Thu, 28 Oct 2021 15:52:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D10DD3858405 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: NsHaOaxJgyaTPTFJYeZrgf8IpXyh3/YuZteiPjoaVqPOlJOgE/vCAnOaSUQcfl/1jhi6vwf27U m9JnHX6B2QURw4jnGJBXjp5L880kwzAe8bWIYxJo9g7iq0T1lE08g/xrISFm3rBFXtFpPkVkUf LBbtKyDajvQFbmPZu9nAc1ZFO+sGyQPQ+VDNRMUMZC3iV9l/03pz8FA+dX0Bm/p7owWfTXWaRR +1s3nmUar49f7ykFKxaSvgVEVMsU5uRLx2WBMxcVoDMGRk2par4E/8Q2H5h+CNuCy4Cp5omD6+ 0Fq7QVHa1IQKqHVtgOcnRhLR X-IronPort-AV: E=Sophos;i="5.87,190,1631606400"; d="diff'?scan'208";a="67755158" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 28 Oct 2021 07:52:47 -0800 IronPort-SDR: SeZg9ZDu6lc/HbHq3kDjYtJK/I9stdhe8xi4b9ER4GFImBFyFeohaCIpi3i9cTPl/rVlqLfxbO NPcXNzhKNzOmKJNyCRJpcYPV5Umo7JFBt/lKjycsrW6K1v1hGylJbGrJhqEO7NaH11p8/Zkid3 Gmu2WbJKzkHSbw2j+poWxaP+WnlMgzPFRQhnbRyBiKh7pp7ZDcDa7hxLlwu9YNPht4zemmBo1H 0S2Tho/mfPzQuACoAkfPwbecvfpx2/BjnDIJbMwft3J0iIlsVeWsJuGW8PB5Xs0sAhcOcsKhbK EYc= Content-Type: multipart/mixed; boundary="------------01vQH6GDmLlsWJ0k10Y4qMa6" Message-ID: <012cb5da-5255-ac5e-c7dc-f7eb2bd34955@codesourcery.com> Date: Thu, 28 Oct 2021 17:51:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.1 Content-Language: en-US To: gcc-patches , Jakub Jelinek , Joseph Myers , David Malcolm From: Tobias Burnus Subject: [Patch] libcpp: Fix _Pragma expansion [PR102409] X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, 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-List-Received-Date: Thu, 28 Oct 2021 15:52:53 -0000 --------------01vQH6GDmLlsWJ0k10Y4qMa6 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Before this patch, running #define TEST(T) T #define PARALLEL(X) TEST(X) PARALLEL( for (int i =3D 0; i < N; i++) { \ _Pragma("omp ordered") \ S[0] +=3D C[i] + D[i]; \ }) through 'gcc -E' yielded #pragma omp ordered for (int i =3D 0; i < N; i++) { S[0] +=3D C[i] + D[i]; } Note that the '#pragma omp ordered' is now above the loop, i.e. before all macro arguments (and macro expansions). With the patch, the result is the following, which matches Clang and I assume GCC before 4.2 or 4.3, but I have no GCC 4.x available: for (int i =3D 0; i < N; i++) { #pragma omp ordered S[0] +=3D C[i] + D[i]; } The reason seems to be the addition done for PR34692 in r131819, which added code to avoid an ICE with FOO( #pragma GCC diagnostic ) There is a length description in macro.c about what it does and the pragma_buff which is passed around, including to the now modified collect_args. Namely, the comment above enter_macro_context states: If there were additionally any unexpanded deferred #pragma directives among macro arguments, push another context containing the pragma tokens before the yet-to-be-rescanned replacement list and return two. While that seems to work fine with #pragma, it obviously does not do what it should for _Pragma. The solution in the patch was to add a flag to distinguish the CPP_PRAGMA coming from the _Pragma operator (alias BT_PRAGMA) from the CPP_PRAGMA coming from a user's #pragma. OK for mainline? =E2=80=93 It is a long-standing regression, but it hasn't been reported for a while. Thus: how do you feel about backporting? I did test it with a full bootstrap + regtesting. I also tested omptests (cf. PR). Tobias PS: I had the hope that it would fix some of the other _Pragma related PRs (see e.g. refs in this PR102409 or search Bugzilla), but it does not seem to help for those. I do note that most of them are related to diagnostic. In particular, for PR91669, the output of gcc -E is the same for GCC 10, for a patched GCC and for clang-11, which makes the result (issue unaffected by this patch) not that surprising. ----------------- 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 Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------01vQH6GDmLlsWJ0k10Y4qMa6 Content-Type: text/x-patch; charset="UTF-8"; name="fix-pragma.diff" Content-Disposition: attachment; filename="fix-pragma.diff" Content-Transfer-Encoding: base64 bGliY3BwOiBGaXggX1ByYWdtYSBleHBhbnNpb24gW1BSMTAyNDA5XQoKQm90aCAjcHJhZ21h IGFuZCBfUHJhZ21hIGVuZGVkIHVwIGFzIENQUF9QUkFHTUEuIFByZXN1bWFibHkgc2luY2UK cjEzMTgxOSAoMjAwOCwgR0NDIDQuMykgZm9yIFBSMzQ2OTIsIHByYWdtYXMgYXJlIG5vdCBl eHBhbmRlZCBpbgptYWNybyBhcmd1bWVudHMgYnV0IGFyZSBvdXRwdXQgYXMgaXMgYmVmb3Jl LiBGcm9tIHRoZSBvbGQgYnVnIHJlcG9ydCwKdGhhdCB3YXMgdG8gZml4IHVzYWdlIGxpa2UK ICBGT08gKAogICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYwogICkKSG93ZXZlciwgdGhhdCBj aGFuZ2UgYWxzbyBhZmZlY3RlZCBfUHJhZ21hIHN1Y2ggdGhhdAogIEJBUiAoCiAgICAiMSI7 CiAgICBfUHJhZ21hKCJvbXAgLi4uIik7ICkKeWllbGRlZAogICNwcmFnbWEgb21wIC4uLgpm b2xsb3dlZCBieSB3aGF0IEJBUiBleHBhbmRlZCB0b28sIHBvc3NpYmx5IGluY2x1ZGluZyAn IjEiOycuCgpUaGlzIGNvbW1pdCBhZGRzIGEgZmxhZywgUFJBR01BX09QLCB0byB0b2tlbnMg dG8gbWFrZSB0aGUgdHdvCmRpc3Rpbmd1aXNoYWJsZSAtIGFuZCBpbmNsdWRlIGFnYWluIF9Q cmFnbWEgaW4gdGhlIGV4cGFuZGVkIGFyZ3VtZW50cy4KCmxpYmNwcC9DaGFuZ2VMb2c6CgoJ UFIgYysrLzEwMjQwOQoJKiBkaXJlY3RpdmVzLmMgKGRlc3RyaW5naXplX2FuZF9ydW4pOiBB ZGQgUFJBR01BX09QIHRvIHRoZQoJQ1BQX1BSQUdNQSB0b2tlbidzIGZsYWdzIHRvIG1hcmsg aXMgYXMgY29taW5nIGZyb20gX1ByYWdtYS4KCSogaW5jbHVkZS9jcHBsaWIuaCAoUFJBR01B X09QKTogI2RlZmluZSwgdG8gYmUgdXNlZCB3aXRoIHRva2VuIGZsYWdzLgoJKiBtYWNyby5j IChjb2xsZWN0X2FyZ3MpOiBPbmx5IGhhbmRsZSBDUFBfUFJBR01BIHNwZWNpYWwgaWYgUFJB R01BX09QCglpcyBzZXQuCgogbGliY3BwL2RpcmVjdGl2ZXMuYyAgICAgfCAyICsrCiBsaWJj cHAvaW5jbHVkZS9jcHBsaWIuaCB8IDEgKwogbGliY3BwL21hY3JvLmMgICAgICAgICAgfCAy ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL2xpYmNwcC9kaXJlY3RpdmVzLmMgYi9saWJjcHAvZGlyZWN0aXZlcy5j CmluZGV4IGI0YmM4YjRkZjMwLi4zNGY3Njc3ZjcxOCAxMDA2NDQKLS0tIGEvbGliY3BwL2Rp cmVjdGl2ZXMuYworKysgYi9saWJjcHAvZGlyZWN0aXZlcy5jCkBAIC0xOTA3LDYgKzE5MDcs OCBAQCBkZXN0cmluZ2l6ZV9hbmRfcnVuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3Bw X3N0cmluZyAqaW4sCiAgIHNhdmVfZGlyZWN0aXZlID0gcGZpbGUtPmRpcmVjdGl2ZTsKICAg cGZpbGUtPmRpcmVjdGl2ZSA9ICZkdGFibGVbVF9QUkFHTUFdOwogICBkb19wcmFnbWEgKHBm aWxlKTsKKyAgaWYgKHBmaWxlLT5kaXJlY3RpdmVfcmVzdWx0LnR5cGUgPT0gQ1BQX1BSQUdN QSkKKyAgICBwZmlsZS0+ZGlyZWN0aXZlX3Jlc3VsdC5mbGFncyB8PSBQUkFHTUFfT1A7CiAg IGVuZF9kaXJlY3RpdmUgKHBmaWxlLCAxKTsKICAgcGZpbGUtPmRpcmVjdGl2ZSA9IHNhdmVf ZGlyZWN0aXZlOwogCmRpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaCBiL2xp YmNwcC9pbmNsdWRlL2NwcGxpYi5oCmluZGV4IDZlMmZjYjZiMWYyLi41NmIwN2FjYzFkNyAx MDA2NDQKLS0tIGEvbGliY3BwL2luY2x1ZGUvY3BwbGliLmgKKysrIGIvbGliY3BwL2luY2x1 ZGUvY3BwbGliLmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBzdHJ1Y3QgR1RZKCgpKSBjcHBfc3Ry aW5nIHsKIAkJCQkgICAgb3BlcmF0b3IsIG9yIGJlZm9yZSB0aGlzIHRva2VuCiAJCQkJICAg IGFmdGVyIGEgIyBvcGVyYXRvci4gICovCiAjZGVmaW5lIE5PX0VYUEFORAkoMSA8PCAxMCkg LyogRG8gbm90IG1hY3JvLWV4cGFuZCB0aGlzIHRva2VuLiAgKi8KKyNkZWZpbmUgUFJBR01B X09QCSgxIDw8IDExKSAvKiBfUHJhZ21hIHRva2VuLiAgKi8KIAogLyogU3BlY2lmeSB3aGlj aCBmaWVsZCwgaWYgYW55LCBvZiB0aGUgY3BwX3Rva2VuIHVuaW9uIGlzIHVzZWQuICAqLwog CmRpZmYgLS1naXQgYS9saWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCmluZGV4IGYy MTQ1NDhkZTFlLi5iMmY3OTdjYWUzNSAxMDA2NDQKLS0tIGEvbGliY3BwL21hY3JvLmMKKysr IGIvbGliY3BwL21hY3JvLmMKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNvbGxlY3RfYXJncyAo Y3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF9oYXNobm9kZSAqbm9kZSwKIAkgIGVsc2Ug aWYgKHRva2VuLT50eXBlID09IENQUF9FT0YKIAkJICAgfHwgKHRva2VuLT50eXBlID09IENQ UF9IQVNIICYmIHRva2VuLT5mbGFncyAmIEJPTCkpCiAJICAgIGJyZWFrOwotCSAgZWxzZSBp ZiAodG9rZW4tPnR5cGUgPT0gQ1BQX1BSQUdNQSkKKwkgIGVsc2UgaWYgKHRva2VuLT50eXBl ID09IENQUF9QUkFHTUEgJiYgISh0b2tlbi0+ZmxhZ3MgJiBQUkFHTUFfT1ApKQogCSAgICB7 CiAJICAgICAgY3BwX3Rva2VuICpuZXd0b2sgPSBfY3BwX3RlbXBfdG9rZW4gKHBmaWxlKTsK IAo= --------------01vQH6GDmLlsWJ0k10Y4qMa6--