[clang] [llvm] Enable fexec-charset option (PR #138895)
Abhina Sree via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 8 11:49:22 PDT 2026
================
@@ -1854,23 +1892,60 @@ CharLiteralParser::CharLiteralParser(const char *begin, const char *end,
HadError = true;
PP.Diag(Loc, diag::err_character_too_large);
}
+ if (!HadError && Converter) {
+ assert(isOrdinary() && "Only ordinary characters are supported");
+ std::string UTF8String;
+ convertUTF32ToUTF8String(
+ ArrayRef<char>(reinterpret_cast<const char *>(tmp_out_start),
+ 4),
+ UTF8String);
+ auto ErrorOrChar = convertCharacter(UTF8String, *Converter);
+ if (ErrorOrChar) {
+ *tmp_out_start = *ErrorOrChar;
+ } else {
+ HadError = true;
+ PP.Diag(Loc, diag::err_exec_charset_conversion_failed)
+ << ErrorOrChar.getError().message();
+ }
----------------
abhina-sree wrote:
Please see the latest commit, I removed the conversion from utf32 to utf8 but I added another for loop to copy the converted string, character by character
https://github.com/llvm/llvm-project/pull/138895
More information about the cfe-commits
mailing list