[clang] [clang][RISCV] Remove some of the bits added with RISC-V big endian support (PR #192903)
Brad Smith via cfe-commits
cfe-commits at lists.llvm.org
Tue May 5 16:53:03 PDT 2026
https://github.com/brad0 updated https://github.com/llvm/llvm-project/pull/192903
>From 9d3e8504e03b8f70d398db5ca9900979cae4550b Mon Sep 17 00:00:00 2001
From: Brad Smith <brad at comstyle.com>
Date: Mon, 20 Apr 2026 01:04:27 -0400
Subject: [PATCH] [clang][RISCV] Remove some of the bits added with RISC-V big
endian support
- FreeBSD will not have any new 32-bit archs
- *BSD's are unlikely to touch BE RISC-V
- Keep the BE and LE targets separate
---
clang/lib/Basic/Targets.cpp | 18 ++++++++++++++++--
clang/lib/Basic/Targets/OSTargets.h | 2 --
clang/lib/Driver/ToolChains/FreeBSD.cpp | 8 --------
clang/test/Driver/freebsd.c | 3 +++
4 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index d9cac93fd2906..4ee4f86fc844c 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -437,7 +437,6 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
return std::make_unique<AMDGPUTargetInfo>(Triple, Opts);
case llvm::Triple::riscv32:
- case llvm::Triple::riscv32be:
switch (os) {
case llvm::Triple::NetBSD:
return std::make_unique<NetBSDTargetInfo<RISCV32TargetInfo>>(Triple,
@@ -448,8 +447,15 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
return std::make_unique<RISCV32TargetInfo>(Triple, Opts);
}
+ case llvm::Triple::riscv32be:
+ switch (os) {
+ case llvm::Triple::Linux:
+ return std::make_unique<LinuxTargetInfo<RISCV32TargetInfo>>(Triple, Opts);
+ default:
+ return std::make_unique<RISCV32TargetInfo>(Triple, Opts);
+ }
+
case llvm::Triple::riscv64:
- case llvm::Triple::riscv64be:
switch (os) {
case llvm::Triple::FreeBSD:
return std::make_unique<FreeBSDTargetInfo<RISCV64TargetInfo>>(Triple,
@@ -488,6 +494,14 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
return std::make_unique<RISCV64TargetInfo>(Triple, Opts);
}
+ case llvm::Triple::riscv64be:
+ switch (os) {
+ case llvm::Triple::Linux:
+ return std::make_unique<LinuxTargetInfo<RISCV64TargetInfo>>(Triple, Opts);
+ default:
+ return std::make_unique<RISCV64TargetInfo>(Triple, Opts);
+ }
+
case llvm::Triple::sparc:
switch (os) {
case llvm::Triple::Linux:
diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h
index c89104e2cd02b..235004d69c5cc 100644
--- a/clang/lib/Basic/Targets/OSTargets.h
+++ b/clang/lib/Basic/Targets/OSTargets.h
@@ -255,7 +255,6 @@ class LLVM_LIBRARY_VISIBILITY FreeBSDTargetInfo : public OSTargetInfo<Target> {
break;
case llvm::Triple::loongarch64:
case llvm::Triple::riscv64:
- case llvm::Triple::riscv64be:
break;
}
}
@@ -520,7 +519,6 @@ class LLVM_LIBRARY_VISIBILITY OpenBSDTargetInfo : public OSTargetInfo<Target> {
break;
case llvm::Triple::loongarch64:
case llvm::Triple::riscv64:
- case llvm::Triple::riscv64be:
break;
}
}
diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp
index cf6ad385d949a..70e66a2f5c3e7 100644
--- a/clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -212,14 +212,6 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-m");
CmdArgs.push_back("elf64lriscv");
break;
- case llvm::Triple::riscv32be:
- CmdArgs.push_back("-m");
- CmdArgs.push_back("elf32briscv");
- break;
- case llvm::Triple::riscv64be:
- CmdArgs.push_back("-m");
- CmdArgs.push_back("elf64briscv");
- break;
case llvm::Triple::loongarch64:
CmdArgs.push_back("-m");
CmdArgs.push_back("elf64loongarch");
diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c
index 77310bed4c30f..62ded2336199b 100644
--- a/clang/test/Driver/freebsd.c
+++ b/clang/test/Driver/freebsd.c
@@ -226,3 +226,6 @@
// PASS: "--eh-frame-hdr"
// PASS-SAME: "-export-dynamic"
// PASS-SAME: "-s" "-t" "-T" "a.lds"
+
+// RUN: %clang -target riscv32be-unknown-freebsd -### -c %s 2>&1 | FileCheck %s --check-prefix=RV32BE
+// RV32BE-NOT: elf32briscv
More information about the cfe-commits
mailing list