[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. In D105759#4543685 , @hubert.reinterpretcast wrote: > In D105759#4543246 , @aaron.ballman > wrote: > >> I'd recommend we change the diagnostic to be a warning that defaults to an >> er

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-28 Thread Hubert Tong via Phabricator via cfe-commits
hubert.reinterpretcast added a comment. In D105759#4543246 , @aaron.ballman wrote: > I'd recommend we change the diagnostic to be a warning that defaults to an > error so that users who are caught by the changes can still disable the > diagnostic rathe

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-28 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. In D105759#4543184 , @hubert.reinterpretcast wrote: > In D105759#4541813 , @cor3ntin > wrote: > >> In D105759#4540716 , >> @hubert.reinte

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-28 Thread Hubert Tong via Phabricator via cfe-commits
hubert.reinterpretcast added a comment. In D105759#4541813 , @cor3ntin wrote: > In D105759#4540716 , > @hubert.reinterpretcast wrote: > >>> I hope this patch may allow to gather some data on that. >> >> @cor3ntin

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. In D105759#4540716 , @hubert.reinterpretcast wrote: >> I hope this patch may allow to gather some data on that. > > @cor3ntin, I have reports that applications having encoding prefixes in > `static_assert` are failing to build.

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-27 Thread Hubert Tong via Phabricator via cfe-commits
hubert.reinterpretcast added a comment. > I hope this patch may allow to gather some data on that. @cor3ntin, I have reports that applications having encoding prefixes in `static_assert` are failing to build. The committee did not adopt the subject paper as a "DR resolution". Is it possible to

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-08 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. In D105759#4482543 , @barannikov88 wrote: > @cor3ntin > I've been working on pretty much the same functionality in our downstream > fork. I was not aware of the paper, nor of the ongoing work in this > direction, and so I unf

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Sergei Barannikov via Phabricator via cfe-commits
barannikov88 added a comment. @cor3ntin I've been working on pretty much the same functionality in our downstream fork. I was not aware of the paper, nor of the ongoing work in this direction, and so I unfortunately missed the review. Thanks for this patch, it significantly reduces the number o

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/docs/ReleaseNotes.rst:138 - Implemented `P2738R1: constexpr cast from void* `_. +- Partially implemented `P2361R6: constexpr cast from void* `_. + The changes to attributes

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Sergei Barannikov via Phabricator via cfe-commits
barannikov88 added inline comments. Comment at: clang/docs/ReleaseNotes.rst:138 - Implemented `P2738R1: constexpr cast from void* `_. +- Partially implemented `P2361R6: constexpr cast from void* `_. + The changes to attrib

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Corentin Jabot via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG95f50964fbf5: Implement P2361 Unevaluated string literals (authored by cor3ntin). Changed prior to commit: https://reviews.llvm.org/D105759?vs=538

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman accepted this revision. aaron.ballman added a comment. This revision is now accepted and ready to land. LGTM with a minor tweak to the wording on the status page, thank you! Comment at: clang/www/cxx_status.html:118-120 + Clang 17 (Partial) +Attributes don't

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-07 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 538073. cor3ntin added a comment. I removed the changes to attributes. Nothing else changes except cxx_status/ReleaseNotes. Unevaluated strings in attributes will be back (in a separate PR) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-07-05 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a subscriber: clang-vendors. aaron.ballman added a comment. In D105759#4457041 , @cor3ntin wrote: > In D105759#4456864 , @aaron.ballman > wrote: > >> I don't think it's correct to assume that

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. In D105759#4456864 , @aaron.ballman wrote: > I don't think it's correct to assume that all string arguments to attributes > are unevaluated, but it is hard to tell where to draw the line sometimes. > Backing up a step, as I un

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. In D105759#4456864 , @aaron.ballman wrote: > I don't think it's correct to assume that all string arguments to attributes > are unevaluated, but it is hard to tell where to draw the line sometimes. > Backing up a step, as

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. I don't think it's correct to assume that all string arguments to attributes are unevaluated, but it is hard to tell where to draw the line sometimes. Backing up a step, as I understand P2361 , an unevaluated string is one which is

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Sema/SemaDeclAttr.cpp:878 - if (!isIntOrBool(AL.getArgAsExpr(0))) { + Expr *First = AL.getArgAsExpr(0); + if (!isIntOrBool(First)) { erichkeane wrote: > Unrelated change here? What is this for? Some test

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 535373. cor3ntin added a comment. Address Erich's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modern

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added a comment. Just 2 small nits, otherwise this all LGTM. Comment at: clang/lib/Parse/ParseDecl.cpp:430 +} +if (Expr.isInvalid()) { + SawError = true; Please put a newline between unchained 'if' statements... it makes tehse really ha

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 535356. cor3ntin added a comment. revert accidental changes to cmake Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/check

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. Note that I have confirmed that all the change attributes require a StringLiteral and go through `checkStringLiteralArgumentAttr` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 535355. cor3ntin added a comment. Fix tests and handle variadic attributes. - With that all normal attributes are handled. Only attributes with custop parsing code and those specified as an enum are left untouched. Repository: rG LLVM Github Monorepo C

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/include/clang/Basic/Attr.td:3048 }]; + let ParseArgumentsAsUnevaluated = 1; } cor3ntin wrote: > aaron.ballman wrote: > > I don't think we should reuse this flag this way. This flag is for the > > tradit

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/include/clang/Basic/Attr.td:3048 }]; + let ParseArgumentsAsUnevaluated = 1; } aaron.ballman wrote: > I don't think we should reuse this flag this way. This flag is for the > traditional sense of "unevaluated

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman requested changes to this revision. aaron.ballman added a comment. This revision now requires changes to proceed. Clearing the "accepted" status so it's not confusing as to the state of things. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. In D105759#4453440 , @cor3ntin wrote: > Parse attribute as unevaluated string if they > are declare StringLiteralArgument in the Attr.td file. > > WIP > > @aaron.ballman Do we agree on direction before I > fix the remainin

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 535073. cor3ntin added a comment. Herald added a project: LLVM. Herald added a subscriber: llvm-commits. Parse attribute as unevaluated string if they are declare StringLiteralArgument in the Attr.td file. WIP @aaron.ballman Do we agree on direction before

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 534999. cor3ntin added a comment. Add tests for pascal strings (which are not a thing in C++ apparently) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: cla

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Sema/SemaDeclAttr.cpp:878-879 - if (!isIntOrBool(AL.getArgAsExpr(0))) { + Expr *First = AL.getArgAsExpr(0); + if (isa(First) || !isIntOrBool(First)) { S.Diag(AL.getLoc(), diag::err_attribute_argument_n_type)

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/lib/Parse/ParseExpr.cpp:3501-3503 +} else if (!AllowEvaluatedString && tok::isStringLiteral(Tok.getKind())) { + Expr = ParseUnevaluatedStringLiteralExpression(); +} else { cor3ntin wrote: > aaron

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Parse/ParseExpr.cpp:3501-3503 +} else if (!AllowEvaluatedString && tok::isStringLiteral(Tok.getKind())) { + Expr = ParseUnevaluatedStringLiteralExpression(); +} else { aaron.ballman wrote: > cor3n

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/include/clang/Basic/Attr.td:1411 let Documentation = [DeprecatedDocs]; + let ParseArgumentsAsUnevaluated = 1; } cor3ntin wrote: > aaron.ballman wrote: > > What is the plan for non-standard attributes? Ar

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Chuanqi Xu via Phabricator via cfe-commits
ChuanqiXu added inline comments. Comment at: clang/lib/Lex/Pragma.cpp:807 if (Tok.is(tok::string_literal) && !Tok.hasUDSuffix()) { StringLiteralParser Literal(Tok, PP); if (Literal.hadError) aaron.ballman wrote: > aaron.ballman wrote: > > cor3ntin wr

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 534640. cor3ntin marked 2 inline comments as done. cor3ntin added a comment. Address some of Aaron's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files:

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin marked 6 inline comments as done. cor3ntin added inline comments. Comment at: clang/include/clang/Basic/Attr.td:1411 let Documentation = [DeprecatedDocs]; + let ParseArgumentsAsUnevaluated = 1; } aaron.ballman wrote: > What is the plan for non-stand

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin marked 2 inline comments as done. cor3ntin added inline comments. Comment at: clang/lib/AST/Expr.cpp:1140 + case Unevaluated: +return sizeof(char); // Host; +break; aaron.ballman wrote: > shafik wrote: > > Why not grouped w/ `Ordinary` above? >

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a subscriber: ChuanqiXu. aaron.ballman added a comment. This also should update the cxx_status page and have a release note. Comment at: clang/include/clang/Basic/Attr.td:1411 let Documentation = [DeprecatedDocs]; + let ParseArgumentsAsUnevaluated = 1;

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin marked 43 inline comments as done. cor3ntin added inline comments. Comment at: clang/lib/AST/Expr.cpp:1165 +unsigned CharByteWidth = mapCharByteWidth(Ctx.getTargetInfo(), Kind); +unsigned ByteLength = Str.size(); +assert((ByteLength % CharByteWidth == 0) && -

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 534613. cor3ntin added a comment. Rename /EscapeValidInUnevaluatedStringLiteral/IsEscapeValidInUnevaluatedStringLiteral Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D1057

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-26 Thread Shafik Yaghmour via Phabricator via cfe-commits
shafik accepted this revision. shafik added a comment. LGTM but I don't see `asm` covered in the tests. Comment at: clang/lib/AST/Expr.cpp:1140 + case Unevaluated: +return sizeof(char); // Host; +break; Why not grouped w/ `Ordinary` above? ==

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-24 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 534201. cor3ntin added a comment. Address Shafik's comment Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modern

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-23 Thread Shafik Yaghmour via Phabricator via cfe-commits
shafik added inline comments. Comment at: clang/lib/Parse/ParseExpr.cpp:3268 + + return ParseStringLiteralExpression(false, true); +} Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llv

[PATCH] D105759: Implement P2361 Unevaluated string literals

2023-06-22 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 533743. cor3ntin added a comment. Herald added a subscriber: jdoerfert. As approved by CWG Updates to cxx_status / doc will come later :) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://revie