[clang] [llvm] Enable fexec-charset option (PR #138895)
Sergei Barannikov via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 30 07:51:13 PDT 2026
================
@@ -2239,24 +2321,32 @@ void StringLiteralParser::init(ArrayRef<Token> StringToks){
// Copy the character span over.
if (CopyStringFragment(StringToks[i], ThisTokBegin,
- StringRef(InStart, ThisTokBuf - InStart)))
+ StringRef(InStart, ThisTokBuf - InStart),
+ Converter))
hadError = true;
continue;
}
// Is this a Universal Character Name escape?
if (ThisTokBuf[1] == 'u' || ThisTokBuf[1] == 'U' ||
ThisTokBuf[1] == 'N') {
- EncodeUCNEscape(ThisTokBegin, ThisTokBuf, ThisTokEnd,
- ResultPtr, hadError,
+ char *Cp = ResultPtr;
+ EncodeUCNEscape(ThisTokBegin, ThisTokBuf, ThisTokEnd, ResultPtr,
+ hadError,
FullSourceLoc(StringToks[i].getLocation(), SM),
CharByteWidth, Diags, Features);
+ if (!hadError && Converter) {
+ SmallString<8> CpConv;
+ Converter->convert(StringRef(Cp), CpConv);
+ memcpy(Cp, CpConv.data(), CpConv.size());
+ ResultPtr = Cp + CpConv.size();
+ }
----------------
s-barannikov wrote:
Likewise, this conversion should happen inside EncodeUCNEscape, ideally avoiding intermediate conversion to UTF-8.
https://github.com/llvm/llvm-project/pull/138895
More information about the cfe-commits
mailing list