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 <[email protected]> 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 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
