[llvm] [SystemZ][z/OS] Refactor AutoConvert more (PR #143955)
Abhina Sree via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 12:54:10 PDT 2025
https://github.com/abhina-sree created https://github.com/llvm/llvm-project/pull/143955
This patch removes the C++ disablezOSAutoConversion,enablezOSAutoConversion declarations and also updates Path.inc to use the common function.
>From bee758e0d4c8501887af0f905641869d60df0f87 Mon Sep 17 00:00:00 2001
From: Abhina Sreeskantharajan <Abhina.Sreeskantharajan at ibm.com>
Date: Thu, 12 Jun 2025 15:49:36 -0400
Subject: [PATCH] refactor AutoConvert more
---
llvm/include/llvm/Support/AutoConvert.h | 45 +++++++++----------------
llvm/lib/Support/AutoConvert.cpp | 1 -
llvm/lib/Support/Unix/Path.inc | 4 +--
llvm/lib/Support/Unix/Program.inc | 2 +-
4 files changed, 19 insertions(+), 33 deletions(-)
diff --git a/llvm/include/llvm/Support/AutoConvert.h b/llvm/include/llvm/Support/AutoConvert.h
index 56ad91425bcc3..1e6792636e169 100644
--- a/llvm/include/llvm/Support/AutoConvert.h
+++ b/llvm/include/llvm/Support/AutoConvert.h
@@ -18,7 +18,7 @@
#include <_Ccsid.h>
#endif
#ifdef __cplusplus
-#include "llvm/Support/ErrorOr.h"
+#include "llvm/Support/Error.h"
#include <system_error>
#endif /* __cplusplus */
@@ -41,6 +41,21 @@ int restorezOSStdHandleAutoConversion(int FD);
#ifdef __cplusplus
namespace llvm {
+#ifdef __MVS__
+
+/** \brief Set the tag information for a file descriptor. */
+std::error_code setzOSFileTag(int FD, int CCSID, bool Text);
+
+/** \brief Get the the tag ccsid for a file name or a file descriptor. */
+ErrorOr<__ccsid_t> getzOSFileTag(const char *FileName, const int FD = -1);
+
+/** \brief Query the file tag to determine if it needs conversion to UTF-8
+ * codepage.
+ */
+ErrorOr<bool> needzOSConversion(const char *FileName, const int FD = -1);
+
+#endif /* __MVS__*/
+
inline std::error_code disableAutoConversion(int FD) {
#ifdef __MVS__
if (::disablezOSAutoConversion(FD) == -1)
@@ -79,34 +94,6 @@ inline ErrorOr<bool> needConversion(const char *FileName, const int FD = -1) {
return false;
}
-#ifdef __MVS__
-
-/** \brief Disable the z/OS enhanced ASCII auto-conversion for the file
- * descriptor.
- */
-std::error_code disablezOSAutoConversion(int FD);
-
-/** \brief Query the z/OS enhanced ASCII auto-conversion status of a file
- * descriptor and force the conversion if the file is not tagged with a
- * codepage.
- */
-std::error_code enablezOSAutoConversion(int FD);
-
-/** Restore the z/OS enhanced ASCII auto-conversion for the std handle. */
-std::error_code restorezOSStdHandleAutoConversion(int FD);
-
-/** \brief Set the tag information for a file descriptor. */
-std::error_code setzOSFileTag(int FD, int CCSID, bool Text);
-
-/** \brief Get the the tag ccsid for a file name or a file descriptor. */
-ErrorOr<__ccsid_t> getzOSFileTag(const char *FileName, const int FD = -1);
-
-/** \brief Query the file tag to determine if it needs conversion to UTF-8
- * codepage.
- */
-ErrorOr<bool> needzOSConversion(const char *FileName, const int FD = -1);
-
-#endif /* __MVS__*/
} /* namespace llvm */
#endif /* __cplusplus */
diff --git a/llvm/lib/Support/AutoConvert.cpp b/llvm/lib/Support/AutoConvert.cpp
index c69e9a8f97c0e..0b6928e10ef5a 100644
--- a/llvm/lib/Support/AutoConvert.cpp
+++ b/llvm/lib/Support/AutoConvert.cpp
@@ -14,7 +14,6 @@
#ifdef __MVS__
#include "llvm/Support/AutoConvert.h"
-#include "llvm/Support/Error.h"
#include <cassert>
#include <fcntl.h>
#include <sys/stat.h>
diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc
index 0728413f4db6e..277247e3cc236 100644
--- a/llvm/lib/Support/Unix/Path.inc
+++ b/llvm/lib/Support/Unix/Path.inc
@@ -1097,14 +1097,14 @@ std::error_code openFile(const Twine &Name, int &ResultFD,
!Stat.st_tag.ft_txtflag && !Stat.st_tag.ft_ccsid &&
Stat.st_size == 0;
if (Flags & OF_Text) {
- if (auto EC = llvm::enablezOSAutoConversion(ResultFD))
+ if (auto EC = llvm::enableAutoConversion(ResultFD))
return EC;
if (DoSetTag) {
if (auto EC = llvm::setzOSFileTag(ResultFD, CCSID_IBM_1047, true))
return EC;
}
} else {
- if (auto EC = llvm::disablezOSAutoConversion(ResultFD))
+ if (auto EC = llvm::disableAutoConversion(ResultFD))
return EC;
if (DoSetTag) {
if (auto EC = llvm::setzOSFileTag(ResultFD, FT_BINARY, false))
diff --git a/llvm/lib/Support/Unix/Program.inc b/llvm/lib/Support/Unix/Program.inc
index 6d68369ad191c..4f17b2257a756 100644
--- a/llvm/lib/Support/Unix/Program.inc
+++ b/llvm/lib/Support/Unix/Program.inc
@@ -516,7 +516,7 @@ std::error_code llvm::sys::ChangeStdoutMode(fs::OpenFlags Flags) {
std::error_code llvm::sys::ChangeStdinToBinary() {
#ifdef __MVS__
- return disablezOSAutoConversion(STDIN_FILENO);
+ return disableAutoConversion(STDIN_FILENO);
#else
// Do nothing, as Unix doesn't differentiate between text and binary.
return std::error_code();
More information about the llvm-commits
mailing list