From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24190 invoked by alias); 22 Jul 2015 20:58:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 24179 invoked by uid 89); 22 Jul 2015 20:58:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.3 required=5.0 tests=AWL,BAYES_00,KAM_ASCII_DIVIDERS,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: aserp1040.oracle.com Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com) (141.146.126.69) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 22 Jul 2015 20:58:05 +0000 Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id t6MKw3H0023373 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 22 Jul 2015 20:58:03 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserv0021.oracle.com (8.13.8/8.13.8) with ESMTP id t6MKw2br011402 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 22 Jul 2015 20:58:03 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userv0121.oracle.com (8.13.8/8.13.8) with ESMTP id t6MKw2kf032320; Wed, 22 Jul 2015 20:58:02 GMT Received: from [192.168.1.4] (/87.18.233.120) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 22 Jul 2015 13:58:02 -0700 To: "gcc-patches@gcc.gnu.org" Cc: Jason Merrill From: Paolo Carlini Subject: [C++ Patch] PR 52987 Message-ID: <55B003D7.1070205@oracle.com> Date: Wed, 22 Jul 2015 22:19:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070805030206090509020805" X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg01892.txt.bz2 This is a multi-part message in MIME format. --------------070805030206090509020805 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-length: 964 Hi, this bug is purely about error recovery. A while ago I fixed the first half, but for, eg: int foo(x a) { } we still emit the pointless: 52987_2.C:1:14: error: expected ‘,’ or ‘;’ before ‘{’ token In fact, we *already* have code helping error recovery in cp_parser_simple_declaration: /* If we have already issued an error message we don't need to issue another one. */ if (decl != error_mark_node || cp_parser_uncommitted_to_tentative_parse_p (parser)) cp_parser_error (parser, "expected %<,%> or %<;%>"); but it doesn't trigger in such cases, because the decl is in fact != error_mark_node, trace of the error can be found only in its DECL_INITIAL (I noticed that only today ;) Thus the below, which so far appears to work well for me, passes testing on x86_64-linux (g++.old-deja/g++.law/init7.C included, which blocks even simpler solutions). Thanks, Paolo. //////////////////////// --------------070805030206090509020805 Content-Type: text/plain; charset=UTF-8; name="CL_52987" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="CL_52987" Content-length: 432 L2NwCjIwMTUtMDctMjMgIFBhb2xvIENhcmxpbmkgIDxwYW9sby5jYXJsaW5p QG9yYWNsZS5jb20+CgoJUFIgYysrLzUyOTg3CgkqIHBhcnNlci5jIChjcF9w YXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9uKTogUm9idXN0aWZ5IGNoZWNrIGF2 b2lkaW5nCglkdXBsaWNhdGVkIGVycm9yIG1lc3NhZ2VzLgoKL3Rlc3RzdWl0 ZQoyMDE1LTA3LTIzICBQYW9sbyBDYXJsaW5pICA8cGFvbG8uY2FybGluaUBv cmFjbGUuY29tPgoKCVBSIGMrKy81Mjk4NwoJKiBnKysuZGcvcGFyc2UvZXJy b3I1Ny5DOiBOZXcuCgkqIGcrKy5kZy9leHByL3N0cmluZy0yLkM6IFVwZGF0 ZS4K --------------070805030206090509020805 Content-Type: text/plain; charset=UTF-8; name="patch_52987" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch_52987" Content-length: 1761 SW5kZXg6IGNwL3BhcnNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGNwL3BhcnNlci5jCShyZXZpc2lvbiAyMjYwNzUpCisrKyBjcC9wYXJzZXIu Ywkod29ya2luZyBjb3B5KQpAQCAtMTE2NjAsNyArMTE2NjAsOCBAQCBjcF9w YXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9uIChjcF9wYXJzZXIqIHBhcnNlciwK IAl7CiAJICAvKiBJZiB3ZSBoYXZlIGFscmVhZHkgaXNzdWVkIGFuIGVycm9y IG1lc3NhZ2Ugd2UgZG9uJ3QgbmVlZAogCSAgICAgdG8gaXNzdWUgYW5vdGhl ciBvbmUuICAqLwotCSAgaWYgKGRlY2wgIT0gZXJyb3JfbWFya19ub2RlCisJ ICBpZiAoKGRlY2wgIT0gZXJyb3JfbWFya19ub2RlCisJICAgICAgICYmIERF Q0xfSU5JVElBTCAoZGVjbCkgIT0gZXJyb3JfbWFya19ub2RlKQogCSAgICAg IHx8IGNwX3BhcnNlcl91bmNvbW1pdHRlZF90b190ZW50YXRpdmVfcGFyc2Vf cCAocGFyc2VyKSkKIAkgICAgY3BfcGFyc2VyX2Vycm9yIChwYXJzZXIsICJl eHBlY3RlZCAlPCwlPiBvciAlPDslPiIpOwogCSAgLyogU2tpcCB0b2tlbnMg dW50aWwgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgc3RhdGVtZW50LiAgKi8K SW5kZXg6IHRlc3RzdWl0ZS9nKysuZGcvZXhwci9zdHJpbmctMi5DCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcvZXhwci9z dHJpbmctMi5DCShyZXZpc2lvbiAyMjYwNzUpCisrKyB0ZXN0c3VpdGUvZysr LmRnL2V4cHIvc3RyaW5nLTIuQwkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0 LDcgQEAKIGNoYXIgYVsxXTsKIAogaW50IGZvbyhhID0gIiIpIC8vIHsgZGct ZXJyb3IgImludmFsaWQgYXJyYXkgYXNzaWdubWVudCIgfQoteyAvLyB7IGRn LWVycm9yICIiIH0KK3sKICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IHRlc3Rz dWl0ZS9nKysuZGcvcGFyc2UvZXJyb3I1Ny5DCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcvcGFyc2UvZXJyb3I1Ny5DCShy ZXZpc2lvbiAwKQorKysgdGVzdHN1aXRlL2crKy5kZy9wYXJzZS9lcnJvcjU3 LkMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisvLyBQUiBjKysv NTI5ODcKKworaW50IGZvbyh4IGEpIHsgIC8vIHsgZGctZXJyb3IgIjk6J3gn IHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZSIgfQorfQo= --------------070805030206090509020805--