[clang] [llvm] Enable fexec-charset option (PR #138895)

Abhina Sree via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 6 08:23:45 PST 2026


================
@@ -7612,12 +7565,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
                                           << value;
   }
 
-  // -fexec_charset=UTF-8 is default. Reject others
-  if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) {
-    StringRef value = execCharset->getValue();
-    if (!value.equals_insensitive("utf-8"))
-      D.Diag(diag::err_drv_invalid_value) << execCharset->getAsString(Args)
-                                          << value;
+  if (Arg *ExecEncoding = Args.getLastArg(options::OPT_fexec_charset_EQ)) {
+    StringRef Value = ExecEncoding->getValue();
+    if (llvm::TextEncodingConverter::isEncodingSupported(Value)) {
+      CmdArgs.push_back("-fexec-charset");
+      CmdArgs.push_back(Args.MakeArgString(Value));
+    } else {
+      D.Diag(diag::err_drv_unsupported_encoding_for_target)
----------------
abhina-sree wrote:

The isKnownEncoding function tries to create the converter to verify if we support it, and since this depends on the iconv/icu library available on the system, I mentioned the target but perhaps that is not entirely accurate. Is there a better way to phrase this diagnostic?

https://github.com/llvm/llvm-project/pull/138895


More information about the cfe-commits mailing list