[llvm] Revert "[OHOS] Add support for OpenHarmony" (PR #141198)

via llvm-commits llvm-commits at lists.llvm.org
Thu May 22 21:58:49 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-binary-utilities

@llvm/pr-subscribers-backend-arm

Author: cqwrteur (trcrsired)

<details>
<summary>Changes</summary>

This reverts commit c417b7a695704d5bc3be23f34d1bfa505f5172de.

Huawei is currently under U.S. government sanctions. Additionally, their approach to PC restrictions contradicts the principles of open-source software, particularly in relation to LLVM. By promoting a locked-down ecosystem on PC, they undermine the fundamental openness that LLVM aims to support.

The 23,999 CNY (3,333.46 USD) and 29,999 CNY (4,166.86) PCs appear to restrict users to an app store environment, preventing installation of alternative operating systems, running executables, and sideloading applications. This level of control limits user freedom and is inconsistent with the core philosophy of open-source software. The pricing is excessively high without offering hardware value that justifies the cost, seemingly catering more to materialism, extreme nationalism (capitalism imperialism, fascism) and profit-driven motives rather than genuine innovation or user benefit.

They market their OS as "open," but in practice, it does not prioritize openness for end users. Instead, the term appears to be more of a promotional slogan rather than a true commitment to open-source principles or user freedom.

Furthermore, Huawei representatives have engaged in discussions on GitHub without actively contributing patches, including within the Microsoft VSCode project. Given that VSCode does not support locked-down operating systems such as iOS, the relevance of their involvement is questionable—especially considering that Huawei Next is a locked-down PC incapable of running independent programs.
A development environment should enable programmers to execute the code they write.

https://github.com/microsoft/vscode/issues/249326

The Chinese open-source community, generally speaking, does not support Huawei’s approach in this regard.
As a response, this patch removes support for Huawei OpenHarmony and its variants, as well as Harmony Next (a walled-garden OS), from the LLVM upstream repository.

---
Full diff: https://github.com/llvm/llvm-project/pull/141198.diff


9 Files Affected:

- (modified) llvm/include/llvm/BinaryFormat/MinidumpConstants.def (-1) 
- (modified) llvm/include/llvm/TargetParser/Triple.h (+2-14) 
- (modified) llvm/lib/Target/ARM/ARMSubtarget.h (+1-2) 
- (modified) llvm/lib/Target/ARM/ARMTargetMachine.cpp (+1-2) 
- (modified) llvm/lib/TargetParser/AArch64TargetParser.cpp (+1-1) 
- (modified) llvm/lib/TargetParser/ARMTargetParser.cpp (+1-2) 
- (modified) llvm/lib/TargetParser/Triple.cpp (-4) 
- (modified) llvm/test/CodeGen/AArch64/arm64-platform-reg.ll (-1) 
- (modified) llvm/unittests/TargetParser/TripleTest.cpp (-12) 


``````````diff
diff --git a/llvm/include/llvm/BinaryFormat/MinidumpConstants.def b/llvm/include/llvm/BinaryFormat/MinidumpConstants.def
index 722a70ff67a9d..0999c9931fe0f 100644
--- a/llvm/include/llvm/BinaryFormat/MinidumpConstants.def
+++ b/llvm/include/llvm/BinaryFormat/MinidumpConstants.def
@@ -119,7 +119,6 @@ HANDLE_MDMP_PLATFORM(0x8202, Solaris) // Solaris
 HANDLE_MDMP_PLATFORM(0x8203, Android) // Android
 HANDLE_MDMP_PLATFORM(0x8204, PS3) // PS3
 HANDLE_MDMP_PLATFORM(0x8205, NaCl) // Native Client (NaCl)
-HANDLE_MDMP_PLATFORM(0x8206, OpenHOS) // OpenHarmony OS
 
 HANDLE_MDMP_PROTECT(0x01, NoAccess, PAGE_NO_ACCESS)
 HANDLE_MDMP_PROTECT(0x02, ReadOnly, PAGE_READ_ONLY)
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 7fd5278f1ed53..9a29525719455 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -237,7 +237,6 @@ class Triple {
     WASI,       // Experimental WebAssembly OS
     Emscripten,
     ShaderModel, // DirectX ShaderModel
-    LiteOS,
     Serenity,
     Vulkan, // Vulkan SPIR-V
     LastOSType = Vulkan
@@ -299,7 +298,6 @@ class Triple {
     Mesh,
     Amplification,
     OpenCL,
-    OpenHOS,
     Mlibc,
 
     PAuthTest,
@@ -825,18 +823,9 @@ class Triple {
            getEnvironment() == Triple::MuslEABIHF ||
            getEnvironment() == Triple::MuslF32 ||
            getEnvironment() == Triple::MuslSF ||
-           getEnvironment() == Triple::MuslX32 ||
-           getEnvironment() == Triple::OpenHOS || isOSLiteOS();
+           getEnvironment() == Triple::MuslX32;
   }
 
-  /// Tests whether the target is OHOS
-  /// LiteOS default enviroment is also OHOS, but omited on triple.
-  bool isOHOSFamily() const { return isOpenHOS() || isOSLiteOS(); }
-
-  bool isOpenHOS() const { return getEnvironment() == Triple::OpenHOS; }
-
-  bool isOSLiteOS() const { return getOS() == Triple::LiteOS; }
-
   /// Tests whether the target is DXIL.
   bool isDXIL() const {
     return getArch() == Triple::dxil;
@@ -911,8 +900,7 @@ class Triple {
             getEnvironment() == Triple::MuslEABI ||
             getEnvironment() == Triple::EABIHF ||
             getEnvironment() == Triple::GNUEABIHF ||
-            getEnvironment() == Triple::GNUEABIHFT64 ||
-            getEnvironment() == Triple::OpenHOS ||
+            getEnvironment() == Triple::GNUEABIHFT64
             getEnvironment() == Triple::MuslEABIHF || isAndroid()) &&
            isOSBinFormatELF();
   }
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h
index 7329d3f2055f0..ed558f3e215d5 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.h
+++ b/llvm/lib/Target/ARM/ARMSubtarget.h
@@ -369,8 +369,7 @@ class ARMSubtarget : public ARMGenSubtargetInfo {
   }
   bool isTargetMuslAEABI() const {
     return (TargetTriple.getEnvironment() == Triple::MuslEABI ||
-            TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
-            TargetTriple.getEnvironment() == Triple::OpenHOS) &&
+            TargetTriple.getEnvironment() == Triple::MuslEABIHF) &&
            !isTargetDarwin() && !isTargetWindows();
   }
 
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
index 80a1e77a305c7..92f0a438a1fa7 100644
--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
@@ -245,8 +245,7 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, const Triple &TT,
          TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
          TargetTriple.getEnvironment() == Triple::GNUEABIHFT64 ||
          TargetTriple.getEnvironment() == Triple::MuslEABI ||
-         TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
-         TargetTriple.getEnvironment() == Triple::OpenHOS) &&
+         TargetTriple.getEnvironment() == Triple::MuslEABIHF) &&
         !(TargetTriple.isOSWindows() || TargetTriple.isOSDarwin()))
       this->Options.EABIVersion = EABI::GNU;
     else
diff --git a/llvm/lib/TargetParser/AArch64TargetParser.cpp b/llvm/lib/TargetParser/AArch64TargetParser.cpp
index e13c6e6d28c2b..c687d66f52531 100644
--- a/llvm/lib/TargetParser/AArch64TargetParser.cpp
+++ b/llvm/lib/TargetParser/AArch64TargetParser.cpp
@@ -138,7 +138,7 @@ void AArch64::fillValidCPUArchList(SmallVectorImpl<StringRef> &Values) {
 
 bool AArch64::isX18ReservedByDefault(const Triple &TT) {
   return TT.isAndroid() || TT.isOSDarwin() || TT.isOSFuchsia() ||
-         TT.isOSWindows() || TT.isOHOSFamily();
+         TT.isOSWindows();
 }
 
 // Allows partial match, ex. "v8a" matches "armv8a".
diff --git a/llvm/lib/TargetParser/ARMTargetParser.cpp b/llvm/lib/TargetParser/ARMTargetParser.cpp
index a7a895d872668..1828344b37c07 100644
--- a/llvm/lib/TargetParser/ARMTargetParser.cpp
+++ b/llvm/lib/TargetParser/ARMTargetParser.cpp
@@ -568,8 +568,7 @@ StringRef ARM::computeDefaultTargetABI(const Triple &TT, StringRef CPU) {
   default:
     if (TT.isOSNetBSD())
       return "apcs-gnu";
-    if (TT.isOSFreeBSD() || TT.isOSOpenBSD() || TT.isOSHaiku() ||
-        TT.isOHOSFamily())
+    if (TT.isOSFreeBSD() || TT.isOSOpenBSD() || TT.isOSHaiku())
       return "aapcs-linux";
     return "aapcs";
   }
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
index 6a559ff023caa..c2b5346fbc34b 100644
--- a/llvm/lib/TargetParser/Triple.cpp
+++ b/llvm/lib/TargetParser/Triple.cpp
@@ -318,7 +318,6 @@ StringRef Triple::getOSTypeName(OSType Kind) {
   case Win32: return "windows";
   case ZOS: return "zos";
   case ShaderModel: return "shadermodel";
-  case LiteOS: return "liteos";
   case XROS: return "xros";
   case Vulkan: return "vulkan";
   }
@@ -381,7 +380,6 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
   case Amplification: return "amplification";
   case OpenCL:
     return "opencl";
-  case OpenHOS: return "ohos";
   case PAuthTest:
     return "pauthtest";
   case LLVM:
@@ -713,7 +711,6 @@ static Triple::OSType parseOS(StringRef OSName) {
     .StartsWith("wasi", Triple::WASI)
     .StartsWith("emscripten", Triple::Emscripten)
     .StartsWith("shadermodel", Triple::ShaderModel)
-    .StartsWith("liteos", Triple::LiteOS)
     .StartsWith("serenity", Triple::Serenity)
     .StartsWith("vulkan", Triple::Vulkan)
     .Default(Triple::UnknownOS);
@@ -768,7 +765,6 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
       .StartsWith("mesh", Triple::Mesh)
       .StartsWith("amplification", Triple::Amplification)
       .StartsWith("opencl", Triple::OpenCL)
-      .StartsWith("ohos", Triple::OpenHOS)
       .StartsWith("pauthtest", Triple::PAuthTest)
       .StartsWith("llvm", Triple::LLVM)
       .StartsWith("mlibc", Triple::Mlibc)
diff --git a/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll b/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll
index eefc858db2752..f7bd14ff9637e 100644
--- a/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll
+++ b/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll
@@ -2,7 +2,6 @@
 ; RUN: llc -mtriple=arm64-freebsd-gnu -mattr=+reserve-x18 -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18
 ; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s
 ; RUN: llc -mtriple=aarch64-linux-android -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18
-; RUN: llc -mtriple=aarch64-linux-ohos -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18
 ; RUN: llc -mtriple=aarch64-fuchsia -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18
 ; RUN: llc -mtriple=aarch64-windows -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18
 
diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp
index bbd12e6d0e412..ca321fba62485 100644
--- a/llvm/unittests/TargetParser/TripleTest.cpp
+++ b/llvm/unittests/TargetParser/TripleTest.cpp
@@ -1289,18 +1289,6 @@ TEST(TripleTest, ParsedIDs) {
   EXPECT_EQ(Triple::UnknownOS, T.getOS());
   EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
 
-  T = Triple("arm-unknown-linux-ohos");
-  EXPECT_EQ(Triple::arm, T.getArch());
-  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
-  EXPECT_EQ(Triple::Linux, T.getOS());
-  EXPECT_EQ(Triple::OpenHOS, T.getEnvironment());
-
-  T = Triple("arm-unknown-liteos");
-  EXPECT_EQ(Triple::arm, T.getArch());
-  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
-  EXPECT_EQ(Triple::LiteOS, T.getOS());
-  EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
-
   T = Triple("x86_64-pc-serenity");
   EXPECT_EQ(Triple::x86_64, T.getArch());
   EXPECT_EQ(Triple::PC, T.getVendor());

``````````

</details>


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


More information about the llvm-commits mailing list