From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 43839 invoked by alias); 1 Jul 2015 20:30:42 -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 43826 invoked by uid 89); 1 Jul 2015 20:30:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,KAM_ASCII_DIVIDERS,RP_MATCHES_RCVD,SPF_PASS autolearn=no version=3.3.2 X-HELO: userp1040.oracle.com Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 01 Jul 2015 20:30:39 +0000 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id t61KUbTe003410 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 1 Jul 2015 20:30:37 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0022.oracle.com (8.13.8/8.13.8) with ESMTP id t61KUbFt019809 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 1 Jul 2015 20:30:37 GMT Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by userv0121.oracle.com (8.13.8/8.13.8) with ESMTP id t61KUaCc003422; Wed, 1 Jul 2015 20:30:36 GMT Received: from [192.168.1.4] (/87.19.223.167) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 01 Jul 2015 13:30:36 -0700 Message-ID: <55944DE8.9030800@oracle.com> Date: Wed, 01 Jul 2015 20:30:00 -0000 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: Jason Merrill , Tom Tromey Subject: [C++/preprocessor Patch] PR c++/53690 Content-Type: multipart/mixed; boundary="------------030603070800090406050102" X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg00079.txt.bz2 This is a multi-part message in MIME format. --------------030603070800090406050102 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1465 Hi, this issue isn't a regression but it's getting a lot of attention and duplicates. Essentially, due to the lines at the very end of _cpp_valid_ucn: if (result == 0) result = 1; return result; } we can't possibly get the encoding of \U00000000 right in C++, that is zero, even after Jason's r152614 which added the following special case for C++ earlier in the function: else if ((result < 0xa0 && !CPP_OPTION (pfile, cplusplus) && (result != 0x24 && result != 0x40 && result != 0x60)) || (result & 0x80000000) || (result >= 0xD800 && result <= 0xDFFF)) { cpp_error (pfile, CPP_DL_ERROR, "%.*s is not a valid universal character", (int) (str - base), base); result = 1; } thus letting result == 0 thru until the very end of the function. Now, fixing the problem seems easy: just change the return type of the function to int, thus return zero for success; add a cppchar_t* parameter cp where *cp is computed exactly like the current return value *without* the final reset to one. Note that this is supposed to have *no* effects whatsoever outside C++ because currently, for all those languages, the final reset never triggers: in the second conditional above, a result == 0 triggers a cpp_error and result becomes == 1, thus the final conditional never sees result == 0. Thus I'm finishing testing the below... Thanks! Paolo. //////////////////////// --------------030603070800090406050102 Content-Type: text/plain; charset=UTF-8; name="CL_53690" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="CL_53690" Content-length: 610 L2xpYmNwcAoyMDE1LTA3LTAxICBQYW9sbyBDYXJsaW5pICA8cGFvbG8uY2Fy bGluaUBvcmFjbGUuY29tPgoKCVBSIGMrKy81MzY5MAoJKiBjaGFyc2V0LmMg KF9jcHBfdmFsaWRfdWNuKTogQWRkIGNwcGNoYXJfdCAqIHBhcmFtZXRlciBh bmQgY2hhbmdlCglyZXR1cm4gdHlwZSB0byBpbnQuICBGaXggZW5jb2Rpbmcg b2YgXHUwMDAwIGFuZCBcVTAwMDAwMDAwIGluIEMrKy4KCShjb252ZXJ0X3Vj bik6IEFkanVzdCBjYWxsLgoJKiBsZXguYyAoZm9ybXNfaWRlbnRpZmllcl9w KTogTGlrZXdpc2UuCgkqIGludGVybmFsLmggKF9jcHBfdmFsaWRfdWNuKTog QWRqdXN0IGRlY2xhcmF0aW9uLgoKL2djYy90ZXN0c3VpdGUKMjAxNS0wNy0w MSAgUGFvbG8gQ2FybGluaSAgPHBhb2xvLmNhcmxpbmlAb3JhY2xlLmNvbT4K CglQUiBjKysvNTM2OTAKCSogZysrLmRnL2NwcC9wcjUzNjkwLkM6IE5ldy4K --------------030603070800090406050102 Content-Type: text/plain; charset=UTF-8; name="patch_53690" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch_53690" Content-length: 5645 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcC9wcjUzNjkwLkMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwL3ByNTM2OTAuQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUv ZysrLmRnL2NwcC9wcjUzNjkwLkMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr MSw3IEBACisvLyBQUiBjKysvNTM2OTAKKy8vIHsgZGctZG8gY29tcGlsZSB7 IHRhcmdldCBjKysxMSB9IH0KKworaW50IGFycmF5MVtVJ1xVMDAwMDAwMDAn ID09IDAgPyAxIDogLTFdOworaW50IGFycmF5MltVJ1x1MDAwMCcgPT0gMCA/ IDEgOiAtMV07CitpbnQgYXJyYXkzW3UnXFUwMDAwMDAwMCcgPT0gMCA/IDEg OiAtMV07CitpbnQgYXJyYXk0W3UnXHUwMDAwJyA9PSAwID8gMSA6IC0xXTsK SW5kZXg6IGxpYmNwcC9jaGFyc2V0LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gbGliY3BwL2NoYXJzZXQuYwkocmV2aXNpb24gMjI1MjY1KQorKysg bGliY3BwL2NoYXJzZXQuYwkod29ya2luZyBjb3B5KQpAQCAtOTcyLDIxICs5 NzIsMjAgQEAgdWNuX3ZhbGlkX2luX2lkZW50aWZpZXIgKGNwcF9yZWFkZXIg KnBmaWxlLCBjcHBjaGEKICAgIG9yIDAwNjAgKGApLCBub3Igb25lIGluIHRo ZSByYW5nZSBEODAwIHRocm91Z2ggREZGRiBpbmNsdXNpdmUuCiAKICAgICpQ U1RSIG11c3QgYmUgcHJlY2VkZWQgYnkgIlx1IiBvciAiXFUiOyBpdCBpcyBh c3N1bWVkIHRoYXQgdGhlCi0gICBidWZmZXIgZW5kIGlzIGRlbGltaXRlZCBi eSBhIG5vbi1oZXggZGlnaXQuICBSZXR1cm5zIHplcm8gaWYgdGhlCi0gICBV Q04gaGFzIG5vdCBiZWVuIGNvbnN1bWVkLgorICAgYnVmZmVyIGVuZCBpcyBk ZWxpbWl0ZWQgYnkgYSBub24taGV4IGRpZ2l0LiAgUmV0dXJucyBvbmUgaWYg dGhlCisgICBVQ04gaGFzIG5vdCBiZWVuIGNvbnN1bWVkLCB6ZXJvIG90aGVy d2lzZS4KIAotICAgT3RoZXJ3aXNlIHRoZSBub256ZXJvIHZhbHVlIG9mIHRo ZSBVQ04sIHdoZXRoZXIgdmFsaWQgb3IgaW52YWxpZCwKLSAgIGlzIHJldHVy bmVkLiAgRGlhZ25vc3RpY3MgYXJlIGVtaXR0ZWQgZm9yIGludmFsaWQgdmFs dWVzLiAgUFNUUgotICAgaXMgdXBkYXRlZCB0byBwb2ludCBvbmUgYmV5b25k IHRoZSBVQ04sIG9yIHRvIHRoZSBzeW50YWN0aWNhbGx5Ci0gICBpbnZhbGlk IGNoYXJhY3Rlci4KKyAgIFRoZSB2YWx1ZSBvZiB0aGUgVUNOLCB3aGV0aGVy IHZhbGlkIG9yIGludmFsaWQsIGlzIHJldHVybmVkIGluICpDUC4KKyAgIERp YWdub3N0aWNzIGFyZSBlbWl0dGVkIGZvciBpbnZhbGlkIHZhbHVlcy4gIFBT VFIgaXMgdXBkYXRlZCB0byBwb2ludAorICAgb25lIGJleW9uZCB0aGUgVUNO LCBvciB0byB0aGUgc3ludGFjdGljYWxseSBpbnZhbGlkIGNoYXJhY3Rlci4K IAogICAgSURFTlRJRklFUl9QT1MgaXMgMCB3aGVuIG5vdCBpbiBhbiBpZGVu dGlmaWVyLCAxIGZvciB0aGUgc3RhcnQgb2YKICAgIGFuIGlkZW50aWZpZXIs IG9yIDIgb3RoZXJ3aXNlLiAgKi8KIAotY3BwY2hhcl90CitpbnQKIF9jcHBf dmFsaWRfdWNuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgdWNoYXIgKipw c3RyLAogCQljb25zdCB1Y2hhciAqbGltaXQsIGludCBpZGVudGlmaWVyX3Bv cywKLQkJc3RydWN0IG5vcm1hbGl6ZV9zdGF0ZSAqbnN0KQorCQlzdHJ1Y3Qg bm9ybWFsaXplX3N0YXRlICpuc3QsIGNwcGNoYXJfdCAqY3ApCiB7CiAgIGNw cGNoYXJfdCByZXN1bHQsIGM7CiAgIHVuc2lnbmVkIGludCBsZW5ndGg7CkBA IC0xMDMwLDggKzEwMjksMTEgQEAgX2NwcF92YWxpZF91Y24gKGNwcF9yZWFk ZXIgKnBmaWxlLCBjb25zdCB1Y2hhciAqKnAKICAgICAgbXVsdGlwbGUgdG9r ZW5zIGluIGlkZW50aWZpZXJzLCBzbyB3ZSBjYW4ndCBnaXZlIGEgaGVscGZ1 bAogICAgICBlcnJvciBtZXNzYWdlIGluIHRoYXQgY2FzZS4gICovCiAgIGlm IChsZW5ndGggJiYgaWRlbnRpZmllcl9wb3MpCi0gICAgcmV0dXJuIDA7Ci0g IAorICAgIHsKKyAgICAgICpjcCA9IDA7CisgICAgICByZXR1cm4gMTsKKyAg ICB9CisKICAgKnBzdHIgPSBzdHI7CiAgIGlmIChsZW5ndGgpCiAgICAgewpA QCAtMTA3OSwxMCArMTA4MSw4IEBAIF9jcHBfdmFsaWRfdWNuIChjcHBfcmVh ZGVyICpwZmlsZSwgY29uc3QgdWNoYXIgKipwCiAJCSAgIChpbnQpIChzdHIg LSBiYXNlKSwgYmFzZSk7CiAgICAgfQogCi0gIGlmIChyZXN1bHQgPT0gMCkK LSAgICByZXN1bHQgPSAxOwotCi0gIHJldHVybiByZXN1bHQ7CisgICpjcCA9 IHJlc3VsdDsKKyAgcmV0dXJuIDA7CiB9CiAKIC8qIENvbnZlcnQgYW4gVUNO LCBwb2ludGVkIHRvIGJ5IEZST00sIHRvIFVURi04IGVuY29kaW5nLCB0aGVu IHRyYW5zbGF0ZQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgY29udmVydF91Y24g KGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCB1Y2hhciAqZnJvbSwKICAgc3Ry dWN0IG5vcm1hbGl6ZV9zdGF0ZSBuc3QgPSBJTklUSUFMX05PUk1BTElaRV9T VEFURTsKIAogICBmcm9tKys7ICAvKiBTa2lwIHUvVS4gICovCi0gIHVjbiA9 IF9jcHBfdmFsaWRfdWNuIChwZmlsZSwgJmZyb20sIGxpbWl0LCAwLCAmbnN0 KTsKKyAgX2NwcF92YWxpZF91Y24gKHBmaWxlLCAmZnJvbSwgbGltaXQsIDAs ICZuc3QsICZ1Y24pOwogCiAgIHJ2YWwgPSBvbmVfY3BwY2hhcl90b191dGY4 ICh1Y24sICZidWZwLCAmYnl0ZXNsZWZ0KTsKICAgaWYgKHJ2YWwpCkluZGV4 OiBsaWJjcHAvaW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBsaWJjcHAvaW50ZXJuYWwuaAkocmV2aXNpb24gMjI1MjY1KQorKysgbGli Y3BwL2ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw5ICs3NDQs MTAgQEAgc3RydWN0IG5vcm1hbGl6ZV9zdGF0ZQogI2RlZmluZSBOT1JNQUxJ WkVfU1RBVEVfVVBEQVRFX0lETlVNKHN0LCBjKQlcCiAgICgoc3QpLT5wcmV2 aW91cyA9IChjKSwgKHN0KS0+cHJldl9jbGFzcyA9IDApCiAKLWV4dGVybiBj cHBjaGFyX3QgX2NwcF92YWxpZF91Y24gKGNwcF9yZWFkZXIgKiwgY29uc3Qg dW5zaWduZWQgY2hhciAqKiwKLQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAq LCBpbnQsCi0JCQkJIHN0cnVjdCBub3JtYWxpemVfc3RhdGUgKnN0YXRlKTsK K2V4dGVybiBpbnQgX2NwcF92YWxpZF91Y24gKGNwcF9yZWFkZXIgKiwgY29u c3QgdW5zaWduZWQgY2hhciAqKiwKKwkJCSAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKiwgaW50LAorCQkJICAgc3RydWN0IG5vcm1hbGl6ZV9zdGF0ZSAqc3Rh dGUsCisJCQkgICBjcHBjaGFyX3QgKik7CiBleHRlcm4gdm9pZCBfY3BwX2Rl c3Ryb3lfaWNvbnYgKGNwcF9yZWFkZXIgKik7CiBleHRlcm4gdW5zaWduZWQg Y2hhciAqX2NwcF9jb252ZXJ0X2lucHV0IChjcHBfcmVhZGVyICosIGNvbnN0 IGNoYXIgKiwKIAkJCQkJICB1bnNpZ25lZCBjaGFyICosIHNpemVfdCwgc2l6 ZV90LApJbmRleDogbGliY3BwL2xleC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpYmNwcC9sZXguYwkocmV2aXNpb24gMjI1MjY1KQorKysgbGli Y3BwL2xleC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ0LDkgKzEyNDQsMTAg QEAgZm9ybXNfaWRlbnRpZmllcl9wIChjcHBfcmVhZGVyICpwZmlsZSwgaW50 IGZpcnN0LAogICAgICAgJiYgKmJ1ZmZlci0+Y3VyID09ICdcXCcKICAgICAg ICYmIChidWZmZXItPmN1clsxXSA9PSAndScgfHwgYnVmZmVyLT5jdXJbMV0g PT0gJ1UnKSkKICAgICB7CisgICAgICBjcHBjaGFyX3QgczsKICAgICAgIGJ1 ZmZlci0+Y3VyICs9IDI7Ci0gICAgICBpZiAoX2NwcF92YWxpZF91Y24gKHBm aWxlLCAmYnVmZmVyLT5jdXIsIGJ1ZmZlci0+cmxpbWl0LCAxICsgIWZpcnN0 LAotCQkJICBzdGF0ZSkpCisgICAgICBpZiAoIV9jcHBfdmFsaWRfdWNuIChw ZmlsZSwgJmJ1ZmZlci0+Y3VyLCBidWZmZXItPnJsaW1pdCwgMSArICFmaXJz dCwKKwkJCSAgIHN0YXRlLCAmcykpCiAJcmV0dXJuIHRydWU7CiAgICAgICBi dWZmZXItPmN1ciAtPSAyOwogICAgIH0K --------------030603070800090406050102--