[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-26 Thread Tom Honermann via Phabricator via cfe-commits
tahonermann added inline comments. Comment at: clang/include/clang/AST/Expr.h:1846-1871 + std::string getStringAsChar() const { +assert(getCharByteWidth() == 1 && + "This function is used in places that assume strings use char"); +return

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-25 Thread Tom Honermann via Phabricator via cfe-commits
tahonermann added inline comments. Comment at: clang/lib/AST/Type.cpp:1962 +bool Type::isType(const std::string TypeName) const { + QualType Desugar = this->getLocallyUnqualifiedSingleStepDesugaredType(); MarcusJohnson91 wrote: > efriedma wrote: > >

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-25 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 marked 5 inline comments as done. MarcusJohnson91 added inline comments. Comment at: clang/lib/AST/Expr.cpp:1091 + if (llvm::convertUTF32ToUTF8String(AR, Output)) { +CString = new char[Output.size() + 1]; +memcpy(CString, Output.c_str(),

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-24 Thread Eli Friedman via Phabricator via cfe-commits
efriedma added a comment. This should split into three patches: 1. The ConvertUTFWrapper patch. 2. The patch to add format warnings for wprintf/wscanf/etc. 3. The patch to add the %l16/%l32 format modifiers. Comment at: clang/lib/AST/Expr.cpp:1091 + if

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-24 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 361466. MarcusJohnson91 added a comment. Full context diff after squashing all the commits together CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/ https://reviews.llvm.org/D103426 Files:

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-23 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 361414. MarcusJohnson91 added a comment. Getting weird crashes all over the place in code I didn't touch, no idea what's going on CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/ https://reviews.llvm.org/D103426 Files:

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-23 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 361410. MarcusJohnson91 added a comment. Rebased on main CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/ https://reviews.llvm.org/D103426 Files: clang/lib/AST/OSLog.cpp clang/lib/Sema/SemaChecking.cpp

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-23 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added inline comments. Comment at: clang/lib/AST/TemplateBase.cpp:77-80 + const Decl *D = nullptr; + if (T->isTypedefNameType()) { +D = T->getAs()->getDecl(); + } aaron.ballman wrote: > This approach seems fragile for getting access to an

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-23 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 361409. MarcusJohnson91 marked an inline comment as done. MarcusJohnson91 added a comment. #1: Moved a comment to the top, so it's brettier  #2: Moved all the ugly StringLiteral conversion code to StringLiteral::getStrDataAsChar and forwarded that

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-23 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 361405. MarcusJohnson91 marked an inline comment as done. MarcusJohnson91 added a comment. Just implemented the change Aaron requested in TemplateBase.cpp CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-19 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 359704. MarcusJohnson91 added a comment. Herald added subscribers: llvm-commits, dexonsmith, hiraditya. Herald added a project: LLVM. Few tweaks since last time, nothing big CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-17 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 updated this revision to Diff 359590. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/ https://reviews.llvm.org/D103426 Files: clang/include/clang/AST/Expr.h clang/include/clang/AST/FormatString.h clang/include/clang/AST/Type.h clang/lib/AST/Expr.cpp

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-17 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added inline comments. Comment at: clang/include/clang/AST/Expr.h:1846-1871 + std::string getStringAsChar() const { +assert(getCharByteWidth() == 1 && + "This function is used in places that assume strings use char"); +return

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-07-01 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/lib/AST/OSLog.cpp:212 + } else if (Lit->isUTF16()) { +std::wstring_convert, char16_t> Convert; +std::u16string U16 = Lit->getStringAsChar16(); MarcusJohnson91 wrote: > aaron.ballman wrote: > >

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-29 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added inline comments. Comment at: clang/lib/AST/OSLog.cpp:212 + } else if (Lit->isUTF16()) { +std::wstring_convert, char16_t> Convert; +std::u16string U16 = Lit->getStringAsChar16(); aaron.ballman wrote: > cor3ntin wrote: > > I'm not

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-21 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/lib/AST/OSLog.cpp:212 + } else if (Lit->isUTF16()) { +std::wstring_convert, char16_t> Convert; +std::u16string U16 = Lit->getStringAsChar16(); cor3ntin wrote: > I'm not sure I have a better

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-21 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/AST/OSLog.cpp:214 +std::u16string U16 = Lit->getStringAsChar16(); +String = Convert.to_bytes(U16); // u"char16_t String" + } else if (Lit->isUTF32()) { If `getStringAsChar16` contains the string

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-21 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added subscribers: cor3ntin, tahonermann. aaron.ballman added a comment. Adding some subscribers from WG21 SG16 who know far more about character encodings and their APIs than I do, as they may have feedback on the design aspects of this. Repository: rG LLVM Github Monorepo

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-21 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. I had some time to look into this a bit more today. My review still isn't complete, but there's enough here to warrant some discussion. Comment at: clang/include/clang/AST/Expr.h:1846-1871 + std::string getStringAsChar() const { +

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-18 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added a comment. Ping Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103426/new/ https://reviews.llvm.org/D103426 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-09 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added a comment. In D103426#2807860 , @aaron.ballman wrote: > In D103426#2807245 , > @MarcusJohnson91 wrote: > >> In D103426#2806391 , >>

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-09 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added inline comments. Comment at: clang/lib/AST/Type.cpp:1980-2002 +bool Type::isChar16Type(const LangOptions ) const { if (const auto *BT = dyn_cast(CanonicalType)) -return BT->getKind() == BuiltinType::Char16; - return false; -} - -bool

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-09 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. In D103426#2807245 , @MarcusJohnson91 wrote: > In D103426#2806391 , @aaron.ballman > wrote: > >> Do you have a reference to the WG14 paper proposing these conversion >>

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-09 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 added a comment. In D103426#2806391 , @aaron.ballman wrote: > Do you have a reference to the WG14 paper proposing these conversion > specifiers? I've previously written up the proposal, which you actually helped with (thank you for

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-06-08 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. I haven't had the chance to give this a thorough review yet, but I do have some high level questions. > Also added support for the %l16(c|s) and %l32(c|s) conversion specifier for > char16_t and char32_t types in C and C++, which should soon be accepted by > ISO

[PATCH] D103426: Clang: Extend format string checking to wprintf/wscanf

2021-05-31 Thread Marcus Johnson via Phabricator via cfe-commits
MarcusJohnson91 created this revision. MarcusJohnson91 created this object with visibility "All Users". MarcusJohnson91 added a project: clang. Herald added a subscriber: martong. Herald added a reviewer: aaron.ballman. MarcusJohnson91 requested review of this revision. Herald added a project: