From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ciao.gmane.io (ciao.gmane.io [116.202.254.214]) by sourceware.org (Postfix) with ESMTPS id 57AD2384D196 for ; Fri, 29 Jul 2022 19:59:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 57AD2384D196 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1oHW8n-0008Li-3O for fortran@gcc.gnu.org; Fri, 29 Jul 2022 21:59:21 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: fortran@gcc.gnu.org From: Harald Anlauf Subject: [PATCH, v2] Fortran: detect blanks within literal constants in free-form mode [PR92805] Date: Fri, 29 Jul 2022 21:59:13 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------aFIQZTpDn07Uat20tP0tPHlI" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Content-Language: en-US In-Reply-To: Cc: gcc-patches@gcc.gnu.org X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jul 2022 19:59:24 -0000 Message-ID: <20220729195913.mJIPBRjk86Csy75-m1ewXjCE6tZRvxvT2U78KPEKjtk@z> This is a multi-part message in MIME format. --------------aFIQZTpDn07Uat20tP0tPHlI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Mikael, Am 29.07.22 um 13:11 schrieb Mikael Morin: > Hello, > > Le 28/07/2022 à 22:11, Harald Anlauf via Fortran a écrit : >> Dear all, >> >> in free-form mode, blanks are significant, so they cannot appear >> in literal constants, especially not before or after the "_" that >> separates the literal and the kind specifier. >> >> The initial patch from Steve addressed numerical literals, which >> I completed by adjusting the parsing of string literals. >> >> Regtested on x86_64-pc-linux-gnu.  OK for mainline? >> > It looks correct, but I think we should continue to have the free vs > fixed form abstracted away from the parsing code. yes, that makes sense. > So, I suggest instead to remove the calls to gfc_gobble_whitespace in > match_string_constant, Indeed, removing these simplifies the function and indeed works! > and use gfc_next_char instead of gfc_match_char > in get_kind. There is one important functionality in gfc_match_char(): it manages the locus. We would need then to add this explicitly to get_kind, which does not look to me like a big improvement over the present solution. Otherwise I get test regressions. > Mikael > I've attached a revised version with improved match_string_constant(). What do you think? Thanks, Harald --------------aFIQZTpDn07Uat20tP0tPHlI Content-Type: text/x-patch; charset=UTF-8; name="pr92805-v2.diff" Content-Disposition: attachment; filename="pr92805-v2.diff" Content-Transfer-Encoding: base64 RnJvbSBmOGU3YzI5N2I3YzllNWEyYjIyMTg1YzdlMGQ2Mzg3NjRjMzNhYTcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBUaHUsIDI4IEp1bCAyMDIyIDIyOjA3OjAyICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogZGV0ZWN0IGJsYW5rcyB3aXRoaW4gbGl0ZXJhbCBjb25zdGFudHMgaW4gZnJl ZS1mb3JtCiBtb2RlIFtQUjkyODA1XQoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCVBSIGZv cnRyYW4vOTI4MDUKCSogcHJpbWFyeS5jYyAoZ2V0X2tpbmQpOiBEbyBub3Qgc2tpcCBvdmVy IGJsYW5rcyBpbiBmcmVlLWZvcm0gbW9kZS4KCShtYXRjaF9zdHJpbmdfY29uc3RhbnQpOiBM aWtld2lzZS4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vOTI4MDUK CSogZ2ZvcnRyYW4uZGcvbGl0ZXJhbF9jb25zdGFudHMuZjogTmV3IHRlc3QuCgkqIGdmb3J0 cmFuLmRnL2xpdGVyYWxfY29uc3RhbnRzLmY5MDogTmV3IHRlc3QuCgpDby1hdXRob3JlZC1i eTogU3RldmVuIEcuIEthcmdsIDxrYXJnbEBnY2MuZ251Lm9yZz4KLS0tCiBnY2MvZm9ydHJh bi9wcmltYXJ5LmNjICAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrLS0tLS0t LS0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbGl0ZXJhbF9jb25zdGFudHMuZiB8IDIw ICsrKysrKysrKysrKysrKysKIC4uLi9nZm9ydHJhbi5kZy9saXRlcmFsX2NvbnN0YW50cy5m OTAgICAgICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg NTMgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9saXRlcmFsX2NvbnN0YW50cy5mCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9saXRlcmFsX2NvbnN0YW50 cy5mOTAKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9wcmltYXJ5LmNjIGIvZ2NjL2ZvcnRy YW4vcHJpbWFyeS5jYwppbmRleCAzZjAxZjY3Y2Q0OS4uNjA0Zjk4YThkZDkgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3ByaW1hcnkuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcHJpbWFyeS5j YwpAQCAtOTIsMTQgKzkyLDIxIEBAIGdldF9raW5kIChpbnQgKmlzX2lzb19jKQogewogICBp bnQga2luZDsKICAgbWF0Y2ggbTsKKyAgY2hhciBjOwogCiAgICppc19pc29fYyA9IDA7CiAK KyAgYyA9IGdmY19wZWVrX2FzY2lpX2NoYXIgKCk7CisgIGlmIChnZmNfY3VycmVudF9mb3Jt ID09IEZPUk1fRlJFRSAmJiBnZmNfaXNfd2hpdGVzcGFjZSAoYykpCisgICAgcmV0dXJuIC0y OworCiAgIGlmIChnZmNfbWF0Y2hfY2hhciAoJ18nKSAhPSBNQVRDSF9ZRVMpCiAgICAgcmV0 dXJuIC0yOwogCi0gIG0gPSBtYXRjaF9raW5kX3BhcmFtICgma2luZCwgaXNfaXNvX2MpOwot ICBpZiAobSA9PSBNQVRDSF9OTykKKyAgbSA9IE1BVENIX05POworICBjID0gZ2ZjX3BlZWtf YXNjaWlfY2hhciAoKTsKKyAgaWYgKChnZmNfY3VycmVudF9mb3JtID09IEZPUk1fRlJFRSAm JiBnZmNfaXNfd2hpdGVzcGFjZSAoYykpCisgICAgICB8fCAobSA9IG1hdGNoX2tpbmRfcGFy YW0gKCZraW5kLCBpc19pc29fYykpID09IE1BVENIX05PKQogICAgIGdmY19lcnJvciAoIk1p c3Npbmcga2luZC1wYXJhbWV0ZXIgYXQgJUMiKTsKIAogICByZXR1cm4gKG0gPT0gTUFUQ0hf WUVTKSA/IGtpbmQgOiAtMTsKQEAgLTEwNzQsMTcgKzEwODEsOSBAQCBtYXRjaF9zdHJpbmdf Y29uc3RhbnQgKGdmY19leHByICoqcmVzdWx0KQogICAgICAgYyA9IGdmY19uZXh0X2NoYXIg KCk7CiAgICAgfQogCi0gIGlmIChjID09ICcgJykKLSAgICB7Ci0gICAgICBnZmNfZ29iYmxl X3doaXRlc3BhY2UgKCk7Ci0gICAgICBjID0gZ2ZjX25leHRfY2hhciAoKTsKLSAgICB9Ci0K ICAgaWYgKGMgIT0gJ18nKQogICAgIGdvdG8gbm9fbWF0Y2g7CiAKLSAgZ2ZjX2dvYmJsZV93 aGl0ZXNwYWNlICgpOwotCiAgIGMgPSBnZmNfbmV4dF9jaGFyICgpOwogICBpZiAoYyAhPSAn XCcnICYmIGMgIT0gJyInKQogICAgIGdvdG8gbm9fbWF0Y2g7CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2xpdGVyYWxfY29uc3RhbnRzLmYgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2xpdGVyYWxfY29uc3RhbnRzLmYKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRkMWYxYjdlYjRjCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9saXRlcmFsX2NvbnN0YW50cy5mCkBAIC0wLDAg KzEsMjAgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItZmZpeGVk LWZvcm0iIH0KKyEgUFIgZm9ydHJhbi85MjgwNSAtIGJsYW5rcyB3aXRoaW4gbGl0ZXJhbCBj b25zdGFudHMgaW4gZml4ZWQtZm9ybSBtb2RlCisKKyAgICAgIGltcGxpY2l0IG5vbmUKKyAg ICAgIGludGVnZXIsIHBhcmFtZXRlciA6OiBjayA9IGtpbmQgKCJhIikgICEgZGVmYXVsdCBj aGFyYWN0ZXIga2luZAorICAgICAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IHJrID0ga2luZCAo MS4wKSAgISBkZWZhdWx0IHJlYWwga2luZAorICAgICAgcHJpbnQgKiwgMV8iYWJjIgorICAg ICAgcHJpbnQgKiwgMSBfImFiYyIKKyAgICAgIHByaW50ICosIDFfICJhYmMiCisgICAgICBw cmludCAqLCBja18iYSIKKyAgICAgIHByaW50ICosIGNrIF8iYWIiCisgICAgICBwcmludCAq LCBja18gImFiIgorICAgICAgcHJpbnQgKiwgMy4xNDE1XzQKKyAgICAgIHByaW50ICosIDMu MTQxNSBfNAorICAgICAgcHJpbnQgKiwgMy4xNDE1XyA0CisgICAgICBwcmludCAqLCAzLjE0 MTVfcmsKKyAgICAgIHByaW50ICosIDMuMTQxNSBfcmsKKyAgICAgIHByaW50ICosIDMuMTQx NV8gcmsKKyAgICAgIGVuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9saXRlcmFsX2NvbnN0YW50cy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2xp dGVyYWxfY29uc3RhbnRzLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZjg5MDhmOWFkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2xpdGVyYWxfY29uc3RhbnRzLmY5MApAQCAtMCwwICsxLDI0IEBACishIHsg ZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZmcmVlLWZvcm0iIH0KKyEgUFIg Zm9ydHJhbi85MjgwNSAtIGJsYW5rcyB3aXRoaW4gbGl0ZXJhbCBjb25zdGFudHMgaW4gZnJl ZS1mb3JtIG1vZGUKKworICAgICAgaW1wbGljaXQgbm9uZQorICAgICAgaW50ZWdlciwgcGFy YW1ldGVyIDo6IGNrID0ga2luZCAoImEiKSAgISBkZWZhdWx0IGNoYXJhY3RlciBraW5kCisg ICAgICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogcmsgPSBraW5kICgxLjApICAhIGRlZmF1bHQg cmVhbCBraW5kCisgICAgICBwcmludCAqLCAxXyJhYmMiCisgICAgICBwcmludCAqLCAxIF8i YWJjIiAgICEgeyBkZy1lcnJvciAiU3ludGF4IGVycm9yIiB9CisgICAgICBwcmludCAqLCAx XyAiYWJjIiAgICEgeyBkZy1lcnJvciAiTWlzc2luZyBraW5kLXBhcmFtZXRlciIgfQorICAg ICAgcHJpbnQgKiwgMSBfICJhYmMiICAhIHsgZGctZXJyb3IgIlN5bnRheCBlcnJvciIgfQor ICAgICAgcHJpbnQgKiwgY2tfImEiCisgICAgICBwcmludCAqLCBjayBfImFiIiAgICEgeyBk Zy1lcnJvciAiU3ludGF4IGVycm9yIiB9CisgICAgICBwcmludCAqLCBja18gImFiIiAgICEg eyBkZy1lcnJvciAiU3ludGF4IGVycm9yIiB9CisgICAgICBwcmludCAqLCBjayBfICJhYiIg ICEgeyBkZy1lcnJvciAiU3ludGF4IGVycm9yIiB9CisgICAgICBwcmludCAqLCAzLjE0MTVf NAorICAgICAgcHJpbnQgKiwgMy4xNDE1IF80ICAhIHsgZGctZXJyb3IgIlN5bnRheCBlcnJv ciIgfQorICAgICAgcHJpbnQgKiwgMy4xNDE1XyA0ICAhIHsgZGctZXJyb3IgIk1pc3Npbmcg a2luZC1wYXJhbWV0ZXIiIH0KKyAgICAgIHByaW50ICosIDMuMTQxNSBfIDQgISB7IGRnLWVy cm9yICJTeW50YXggZXJyb3IiIH0KKyAgICAgIHByaW50ICosIDMuMTQxNV9yaworICAgICAg cHJpbnQgKiwgMy4xNDE1IF9yayAhIHsgZGctZXJyb3IgIlN5bnRheCBlcnJvciIgfQorICAg ICAgcHJpbnQgKiwgMy4xNDE1XyByayAhIHsgZGctZXJyb3IgIk1pc3Npbmcga2luZC1wYXJh bWV0ZXIiIH0KKyAgICAgIHByaW50ICosIDMuMTQxIF8gcmsgISB7IGRnLWVycm9yICJTeW50 YXggZXJyb3IiIH0KKyAgICAgIGVuZAotLSAKMi4zNS4zCgo= --------------aFIQZTpDn07Uat20tP0tPHlI--