[flang-commits] [clang] [flang] [llvm] CodeGen: Remove TargetOptions::EABIVersion (PR #222672)
Matt Arsenault via flang-commits
flang-commits at lists.llvm.org
Tue Sep 15 03:22:08 PDT 2026
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/222672
>From d37cbd4afaca7fe59a2c5511ecd6e2bea4bc3220 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Thu, 3 Sep 2026 00:49:57 +0200
Subject: [PATCH] CodeGen: Remove TargetOptions::EABIVersion
The field's only effect was gating the __aeabi_mem*[4|8] libcalls via the
IsEABI4/IsEABI5 predicates. That distinction is derivable from the triple's
environment, so replace the two predicates with a single
triple-derived IsEABIVersion and delete the field.
The clang -meabi option and clang::TargetOptions::EABIVersion are
retained (now codegen-inert); the llc/opt -meabi flag is removed. -meabi
now only takes effect on triples with a bare-EABI/GNU environment pair
(arm-none-eabi <-> gnueabi), which is the only case with a triple
representation.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
---
clang/lib/Basic/Targets/AArch64.cpp | 6 +---
clang/lib/Basic/Targets/ARM.cpp | 5 +--
clang/lib/CodeGen/BackendUtil.cpp | 3 --
clang/lib/Driver/ToolChain.cpp | 1 +
clang/lib/Driver/ToolChains/Arch/ARM.cpp | 32 +++++++++++++++++++
clang/lib/Driver/ToolChains/Arch/ARM.h | 2 ++
clang/lib/Driver/ToolChains/Clang.cpp | 10 ++++--
clang/test/CodeGen/arm-eabi.c | 6 ++--
clang/test/Driver/eabi.c | 19 +++++++----
flang/lib/Frontend/FrontendActions.cpp | 7 ++--
llvm/docs/ReleaseNotes.md | 4 +++
.../llvm/Analysis/RuntimeLibcallInfo.h | 7 ++--
llvm/include/llvm/CodeGen/CommandFlags.h | 2 --
llvm/include/llvm/IR/RuntimeLibcalls.h | 18 ++++-------
llvm/include/llvm/IR/RuntimeLibcalls.td | 8 +++--
llvm/include/llvm/Target/TargetOptions.h | 3 --
llvm/lib/Analysis/RuntimeLibcallInfo.cpp | 8 ++---
llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp | 5 ++-
llvm/lib/CodeGen/CommandFlags.cpp | 12 -------
llvm/lib/CodeGen/TargetLoweringBase.cpp | 1 -
llvm/lib/IR/RuntimeLibcalls.cpp | 14 ++++----
llvm/lib/LTO/LTOBackend.cpp | 4 +--
llvm/lib/Passes/RunCodeGen.cpp | 5 ++-
llvm/lib/Target/ARM/ARMTargetMachine.cpp | 17 ----------
llvm/test/CodeGen/ARM/arm-eabi.ll | 25 +++------------
llvm/test/CodeGen/ARM/float-helpers.ll | 8 ++---
.../RuntimeLibcallEmitter-calling-conv.td | 2 +-
.../RuntimeLibcallEmitter-library-dispatch.td | 6 ++--
.../RuntimeLibcallEmitter-library-grouping.td | 4 +--
...untimeLibcallEmitter-library-name-merge.td | 4 +--
llvm/test/TableGen/RuntimeLibcallEmitter.td | 2 +-
.../codegen-opt-flags.ll | 2 +-
llvm/tools/llc/lib/NewPMDriver.cpp | 2 +-
llvm/tools/llc/lib/llcdriver.cpp | 6 ++--
llvm/tools/opt/NewPMDriver.cpp | 5 ++-
llvm/tools/opt/optdriver.cpp | 10 +++---
.../TableGen/Basic/RuntimeLibcallsEmitter.cpp | 8 ++---
37 files changed, 128 insertions(+), 155 deletions(-)
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index 0f36f87806e43..a4841514be35e 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -204,11 +204,7 @@ AArch64TargetInfo::AArch64TargetInfo(const llvm::Triple &Triple,
if (Triple.getOS() == llvm::Triple::Linux)
this->MCountName = "\01_mcount";
else if (Triple.getOS() == llvm::Triple::UnknownOS)
- this->MCountName =
- (Opts.EABIVersion == llvm::EABI::GNU ||
- (Opts.EABIVersion == llvm::EABI::Default && Triple.isGNUEnvironment()))
- ? "\01_mcount"
- : "mcount";
+ this->MCountName = Triple.isGNUEnvironment() ? "\01_mcount" : "mcount";
}
StringRef AArch64TargetInfo::getABI() const { return ABI; }
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 2df1837aa0621..0e424d031700b 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -326,10 +326,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm::Triple &Triple,
if (Triple.getOS() == llvm::Triple::Linux ||
Triple.getOS() == llvm::Triple::UnknownOS)
this->MCountName =
- (Opts.EABIVersion == llvm::EABI::GNU ||
- (Opts.EABIVersion == llvm::EABI::Default && Triple.isGNUEnvironment()))
- ? "llvm.arm.gnu.eabi.mcount"
- : "\01mcount";
+ Triple.isGNUEnvironment() ? "llvm.arm.gnu.eabi.mcount" : "\01mcount";
SoftFloatABI = llvm::is_contained(Opts.FeaturesAsWritten, "+soft-float-abi");
}
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 9ee7e3e3b8f89..8bae40a96e6e4 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -385,9 +385,6 @@ static bool initTargetOptions(const CompilerInstance &CI,
Options.UseInitArray = CodeGenOpts.UseInitArray;
Options.MCOptions.DisableIntegratedAS = CodeGenOpts.DisableIntegratedAS;
- // Set EABI version.
- Options.EABIVersion = TargetOpts.EABIVersion;
-
if (CodeGenOpts.hasSjLjExceptions())
Options.ExceptionModel = llvm::ExceptionHandling::SjLj;
if (CodeGenOpts.hasSEHExceptions())
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 4b194b5b70534..c1c3504d831b4 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -1533,6 +1533,7 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args, BoundArch BA,
llvm::Triple Triple = getTriple();
tools::arm::setArchNameInTriple(getDriver(), Args, InputType, Triple);
tools::arm::setFloatABIInTriple(getDriver(), Args, Triple);
+ tools::arm::setEABIInTriple(getDriver(), Args, Triple);
return Triple.getTriple();
}
}
diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.cpp b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
index 7d9c1f0bd3d40..f06483880358f 100644
--- a/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
@@ -400,6 +400,38 @@ void arm::setFloatABIInTriple(const Driver &D, const ArgList &Args,
}
}
+void arm::setEABIInTriple(const Driver &D, const ArgList &Args,
+ llvm::Triple &Triple) {
+ Arg *A = Args.getLastArg(options::OPT_meabi);
+ if (!A)
+ return;
+
+ StringRef Value = A->getValue();
+ if (Value == "gnu") {
+ switch (Triple.getEnvironment()) {
+ case llvm::Triple::EABI:
+ Triple.setEnvironment(llvm::Triple::GNUEABI);
+ break;
+ case llvm::Triple::EABIHF:
+ Triple.setEnvironment(llvm::Triple::GNUEABIHF);
+ break;
+ default:
+ break;
+ }
+ } else if (Value == "4" || Value == "5") {
+ switch (Triple.getEnvironment()) {
+ case llvm::Triple::GNUEABI:
+ Triple.setEnvironment(llvm::Triple::EABI);
+ break;
+ case llvm::Triple::GNUEABIHF:
+ Triple.setEnvironment(llvm::Triple::EABIHF);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
arm::FloatABI arm::getARMFloatABI(const ToolChain &TC, const ArgList &Args) {
return arm::getARMFloatABI(TC.getDriver(), TC.getEffectiveTriple(), Args);
}
diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.h b/clang/lib/Driver/ToolChains/Arch/ARM.h
index a23a8793a89e2..180db7612a488 100644
--- a/clang/lib/Driver/ToolChains/Arch/ARM.h
+++ b/clang/lib/Driver/ToolChains/Arch/ARM.h
@@ -56,6 +56,8 @@ FloatABI getARMFloatABI(const Driver &D, const llvm::Triple &Triple,
const llvm::opt::ArgList &Args);
void setFloatABIInTriple(const Driver &D, const llvm::opt::ArgList &Args,
llvm::Triple &triple);
+void setEABIInTriple(const Driver &D, const llvm::opt::ArgList &Args,
+ llvm::Triple &triple);
bool isHardTPSupported(const llvm::Triple &Triple);
ReadTPMode getReadTPMode(const Driver &D, const llvm::opt::ArgList &Args,
const llvm::Triple &Triple, bool ForAS);
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index df6022c204425..6636a5fd6e655 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -1361,7 +1361,6 @@ namespace {
void RenderARMABI(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args, ArgStringList &CmdArgs) {
// Select the ABI to use.
- // FIXME: Support -meabi.
// FIXME: Parts of this are duplicated in the backend, unify this somehow.
const char *ABIName = nullptr;
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
@@ -5960,9 +5959,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
RelocationModel == llvm::Reloc::ROPI_RWPI)
CmdArgs.push_back("-frwpi");
+ // -meabi=gnu/5 are encoded in the cc1 -triple environment; forward only other
+ // values (e.g. 4, which has no triple representation, and invalid values).
if (Arg *A = Args.getLastArg(options::OPT_meabi)) {
- CmdArgs.push_back("-meabi");
- CmdArgs.push_back(A->getValue());
+ StringRef Value = A->getValue();
+ if (Value != "gnu" && Value != "5") {
+ CmdArgs.push_back("-meabi");
+ CmdArgs.push_back(A->getValue());
+ }
}
// -fsemantic-interposition is forwarded to CC1: set the
diff --git a/clang/test/CodeGen/arm-eabi.c b/clang/test/CodeGen/arm-eabi.c
index 3a651feafbccd..9653717926c0a 100644
--- a/clang/test/CodeGen/arm-eabi.c
+++ b/clang/test/CodeGen/arm-eabi.c
@@ -9,12 +9,10 @@
// RUN: %clang -target arm-none-gnueabihf -S -meabi 5 -o - %s | FileCheck -check-prefix=CHECK-EABI %s
// RUN: %clang -target arm-none-musleabi -S -o - %s \
// RUN: | FileCheck -check-prefix=CHECK-GNUEABI %s
-// RUN: %clang -target arm-none-musleabi -S -o - %s -meabi 5 \
-// RUN: | FileCheck -check-prefix=CHECK-EABI %s
// RUN: %clang -target arm-none-musleabihf -S -o - %s \
// RUN: | FileCheck -check-prefix=CHECK-GNUEABI %s
-// RUN: %clang -target arm-none-musleabihf -S -o - %s -meabi 5 \
-// RUN: | FileCheck -check-prefix=CHECK-EABI %s
+
+// Musl has no bare-EABI triple environment, so -meabi=5 has no effect there.
struct my_s {
unsigned long a[18];
diff --git a/clang/test/Driver/eabi.c b/clang/test/Driver/eabi.c
index 4fd8ee8344e6c..c77fb76c4cc29 100644
--- a/clang/test/Driver/eabi.c
+++ b/clang/test/Driver/eabi.c
@@ -1,13 +1,20 @@
-// RUN: %clang %s -meabi 4 -### 2>&1 \
+// -meabi=4 has no triple environment, so it is forwarded to cc1.
+// RUN: %clang %s -target arm-none-eabi -meabi 4 -### 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-EABI4 %s
-// RUN: %clang %s -meabi 5 -### 2>&1 \
-// RUN: | FileCheck -check-prefix=CHECK-EABI5 %s
-// RUN: %clang %s -meabi gnu -### 2>&1 \
+
+// -meabi=gnu/5 are encoded in the cc1 -triple environment, not forwarded.
+// RUN: %clang %s -target arm-none-eabi -meabi gnu -### 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-GNUEABI %s
+// RUN: %clang %s -target arm-none-gnueabi -meabi 5 -### 2>&1 \
+// RUN: | FileCheck -check-prefix=CHECK-EABI5 %s
+
// RUN: not %clang %s -meabi unknown 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-UNKNOWN %s
+// CHECK-EABI4: "-triple" "armv{{.*}}-unknown-none-eabi"
// CHECK-EABI4: "-meabi" "4"
-// CHECK-EABI5: "-meabi" "5"
-// CHECK-GNUEABI: "-meabi" "gnu"
+// CHECK-GNUEABI: "-triple" "armv{{.*}}-unknown-none-gnueabi"
+// CHECK-GNUEABI-NOT: "-meabi"
+// CHECK-EABI5: "-triple" "armv{{.*}}-unknown-none-eabi"
+// CHECK-EABI5-NOT: "-meabi"
// CHECK-UNKNOWN: error: invalid value 'unknown' in '-meabi unknown'
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index 969485b029257..9da6b451bb2bd 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -1032,7 +1032,6 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
mam.registerPass([&] {
return llvm::RuntimeLibraryAnalysis(
targetMachine->Options.ExceptionModel,
- targetMachine->Options.EABIVersion,
targetMachine->Options.MCOptions.ABIName,
targetMachine->Options.VecLib);
});
@@ -1083,9 +1082,9 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
os, /*ShouldPreserveUseListOrder=*/false, emitSummary));
}
} else if (action == BackendActionTy::Backend_EmitLL) {
- mpm.addPass(llvm::PrintModulePass(
- os, /*Banner=*/"", /*ShouldPreserveUseListOrder=*/false, emitSummary,
- /*ShouldRenumberMetadata=*/true));
+ mpm.addPass(llvm::PrintModulePass(os, /*Banner=*/"",
+ /*ShouldPreserveUseListOrder=*/false,
+ emitSummary));
}
}
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index 4acfcaf3204a7..df06a66a8f337 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -164,6 +164,10 @@ Makes programs 10x faster by doing Special New Thing.
* Removed `TargetOptions::FloatABIType`. The soft float ABI should be
controlled by setting the `"float-abi"` module flag.
+* Removed `TargetOptions::EABIVersion` and the `llc`/`opt` `-meabi` flag. The
+ GNU-vs-EABI distinction is now derived entirely from the target triple's
+ environment (e.g. `arm-none-gnueabi` vs `arm-none-eabi`).
+
### Changes to building LLVM
* The DirectX backend is now an official target and has moved from
diff --git a/llvm/include/llvm/Analysis/RuntimeLibcallInfo.h b/llvm/include/llvm/Analysis/RuntimeLibcallInfo.h
index f4d81b2f1e057..2742e5ba4a348 100644
--- a/llvm/include/llvm/Analysis/RuntimeLibcallInfo.h
+++ b/llvm/include/llvm/Analysis/RuntimeLibcallInfo.h
@@ -23,11 +23,10 @@ class LLVM_ABI RuntimeLibraryAnalysis
RuntimeLibraryAnalysis() = default;
RuntimeLibraryAnalysis(ExceptionHandling ExceptionModel,
- EABI EABIVersion = EABI::Default,
StringRef ABIName = "",
VectorLibrary VecLib = VectorLibrary::NoLibrary)
- : ExceptionModel(ExceptionModel), EABIVersion(EABIVersion),
- ABIName(ABIName.str()), VecLib(VecLib) {}
+ : ExceptionModel(ExceptionModel), ABIName(ABIName.str()), VecLib(VecLib) {
+ }
RTLIB::RuntimeLibcallsInfo run(const Module &M, ModuleAnalysisManager &);
@@ -39,7 +38,6 @@ class LLVM_ABI RuntimeLibraryAnalysis
// IR, copied here so run() can forward them to the RuntimeLibcallsInfo Module
// constructor. Delete each one as they are migrated to module flags.
ExceptionHandling ExceptionModel = ExceptionHandling::None;
- EABI EABIVersion = EABI::Default;
std::string ABIName;
VectorLibrary VecLib = VectorLibrary::NoLibrary;
};
@@ -52,7 +50,6 @@ class LLVM_ABI RuntimeLibraryInfoWrapper : public ImmutablePass {
static char ID;
RuntimeLibraryInfoWrapper();
RuntimeLibraryInfoWrapper(ExceptionHandling ExceptionModel,
- EABI EABIVersion = EABI::Default,
StringRef ABIName = "",
VectorLibrary VecLib = VectorLibrary::NoLibrary);
diff --git a/llvm/include/llvm/CodeGen/CommandFlags.h b/llvm/include/llvm/CodeGen/CommandFlags.h
index 767c59c1a262a..1a5d44570430f 100644
--- a/llvm/include/llvm/CodeGen/CommandFlags.h
+++ b/llvm/include/llvm/CodeGen/CommandFlags.h
@@ -105,8 +105,6 @@ LLVM_ABI bool getUniqueBasicBlockSectionNames();
LLVM_ABI bool getSeparateNamedSections();
-LLVM_ABI llvm::EABI getEABIVersion();
-
LLVM_ABI llvm::DebuggerKind getDebuggerTuningOpt();
LLVM_ABI llvm::VectorLibrary getVectorLibrary();
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.h b/llvm/include/llvm/IR/RuntimeLibcalls.h
index b864e68611337..4d119c5494b43 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.h
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.h
@@ -88,20 +88,17 @@ struct RuntimeLibcallsInfo {
LLVM_ABI explicit RuntimeLibcallsInfo(
const Triple &TT,
ExceptionHandling ExceptionModel = ExceptionHandling::None,
- FloatABI::ABIType FloatABI = FloatABI::Default,
- EABI EABIVersion = EABI::Default, StringRef ABIName = "",
+ FloatABI::ABIType FloatABI = FloatABI::Default, StringRef ABIName = "",
VectorLibrary VecLib = VectorLibrary::NoLibrary);
// FIXME: The floating-point ABI is read from the "float-abi" module flag, but
- // the ExceptionModel/EABIVersion/ABIName/VecLib parameters are still
- // TargetOptions values that are not yet represented in the IR. Delete these
- // parameters (and build everything from the Module) once those fields are
- // migrated to module flags.
+ // the ExceptionModel/ABIName/VecLib parameters are still TargetOptions values
+ // that are not yet represented in the IR. Delete these parameters (and build
+ // everything from the Module) once those fields are migrated to module flags.
LLVM_ABI explicit RuntimeLibcallsInfo(
const Module &M,
ExceptionHandling ExceptionModel = ExceptionHandling::None,
- EABI EABIVersion = EABI::Default, StringRef ABIName = "",
- VectorLibrary VecLib = VectorLibrary::NoLibrary);
+ StringRef ABIName = "", VectorLibrary VecLib = VectorLibrary::NoLibrary);
LLVM_ABI bool invalidate(Module &M, const PreservedAnalyses &PA,
ModuleAnalysisManager::Invalidator &);
@@ -246,15 +243,14 @@ struct RuntimeLibcallsInfo {
/// Generated by tablegen.
void setTargetRuntimeLibcallSets(const Triple &TT,
ExceptionHandling ExceptionModel,
- FloatABI::ABIType FloatABI, EABI ABIType,
+ FloatABI::ABIType FloatABI,
StringRef ABIName,
LongDoubleFormat LongDoubleFormat);
/// Set default libcall names. If a target wants to opt-out of a libcall it
/// should be placed here.
LLVM_ABI void initLibcalls(const Triple &TT, ExceptionHandling ExceptionModel,
- FloatABI::ABIType FloatABI, EABI ABIType,
- StringRef ABIName,
+ FloatABI::ABIType FloatABI, StringRef ABIName,
LongDoubleFormat LongDoubleFormat);
};
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td
index 14dda6baf5a53..46b9aba86ddd6 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.td
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.td
@@ -56,8 +56,10 @@ class OSVersionAtLeast<int major, int minor>
# [{, }] # !cast<string>(minor) # [{)}]>;
def IsAAPCS_ABI : LibcallPredicate<[{isAAPCS_ABI(TT, ABIName)}]>;
-def IsEABI4 : LibcallPredicate<[{EABIVersion == EABI::EABI4}]>;
-def IsEABI5 : LibcallPredicate<[{EABIVersion == EABI::EABI5}]>;
+
+// A numbered EABI (4/5) rather than GNU, i.e. not GNU/Musl AEABI.
+def IsEABIVersion
+ : LibcallPredicate<[{!TT.isTargetGNUAEABI() && !TT.isTargetMuslAEABI()}]>;
def IsLongDoubleF128 : LibcallPredicate<[{LongDoubleFormat == LongDoubleFormat::IEEEquad}]>;
def IsLongDoubleX87 : LibcallPredicate<[{LongDoubleFormat == LongDoubleFormat::X87DoubleExtended}]>;
@@ -2722,7 +2724,7 @@ def AEABI45MemCalls : LibcallImpls<
__aeabi_memset, __aeabi_memset4, __aeabi_memset8,
__aeabi_memclr, __aeabi_memclr4, __aeabi_memclr8),
RuntimeLibcallAvailability<
- (all_of (any_of IsEABI4, IsEABI5),
+ (all_of IsEABIVersion,
(any_of IsTargetAEABI, IsTargetGNUAEABI, IsTargetMuslAEABI,
IsOSFuchsia, IsAndroid),
IsAAPCS_ABI)>> {
diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h
index 78ad27a00e4f9..f76d3770ccd0d 100644
--- a/llvm/include/llvm/Target/TargetOptions.h
+++ b/llvm/include/llvm/Target/TargetOptions.h
@@ -300,9 +300,6 @@ class TargetOptions {
/// If greater than 0, override TargetLoweringBase::PrefLoopAlignment.
unsigned LoopAlignment = 0;
- /// EABIVersion - This flag specifies the EABI version
- EABI EABIVersion = EABI::Default;
-
/// Which debugger to tune for.
DebuggerKind DebuggerTuning = DebuggerKind::Default;
diff --git a/llvm/lib/Analysis/RuntimeLibcallInfo.cpp b/llvm/lib/Analysis/RuntimeLibcallInfo.cpp
index 23dca93c4d884..ce79008539ca3 100644
--- a/llvm/lib/Analysis/RuntimeLibcallInfo.cpp
+++ b/llvm/lib/Analysis/RuntimeLibcallInfo.cpp
@@ -15,8 +15,7 @@ AnalysisKey RuntimeLibraryAnalysis::Key;
RTLIB::RuntimeLibcallsInfo
RuntimeLibraryAnalysis::run(const Module &M, ModuleAnalysisManager &) {
- return RTLIB::RuntimeLibcallsInfo(M, ExceptionModel, EABIVersion, ABIName,
- VecLib);
+ return RTLIB::RuntimeLibcallsInfo(M, ExceptionModel, ABIName, VecLib);
}
INITIALIZE_PASS(RuntimeLibraryInfoWrapper, "runtime-library-info",
@@ -25,9 +24,8 @@ INITIALIZE_PASS(RuntimeLibraryInfoWrapper, "runtime-library-info",
RuntimeLibraryInfoWrapper::RuntimeLibraryInfoWrapper() : ImmutablePass(ID) {}
RuntimeLibraryInfoWrapper::RuntimeLibraryInfoWrapper(
- ExceptionHandling ExceptionModel, EABI EABIVersion, StringRef ABIName,
- VectorLibrary VecLib)
- : ImmutablePass(ID), RTLA(ExceptionModel, EABIVersion, ABIName, VecLib) {}
+ ExceptionHandling ExceptionModel, StringRef ABIName, VectorLibrary VecLib)
+ : ImmutablePass(ID), RTLA(ExceptionModel, ABIName, VecLib) {}
char RuntimeLibraryInfoWrapper::ID = 0;
diff --git a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
index 94e0dbeac6f35..b1657a9ea5583 100644
--- a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+++ b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
@@ -126,9 +126,8 @@ addPassesToGenerateCode(CodeGenTargetMachineImpl &TM, PassManagerBase &PM,
const TargetOptions &Options = TM.Options;
TargetLibraryInfoImpl TLII(TM.getTargetTriple(), Options.VecLib);
PM.add(new TargetLibraryInfoWrapperPass(TLII));
- PM.add(
- new RuntimeLibraryInfoWrapper(Options.ExceptionModel, Options.EABIVersion,
- Options.MCOptions.ABIName, Options.VecLib));
+ PM.add(new RuntimeLibraryInfoWrapper(
+ Options.ExceptionModel, Options.MCOptions.ABIName, Options.VecLib));
invokeGlobalTargetPassConfigCallbacks(TM, PM, PassConfig);
diff --git a/llvm/lib/CodeGen/CommandFlags.cpp b/llvm/lib/CodeGen/CommandFlags.cpp
index bf53b28c13a82..c6758789a4874 100644
--- a/llvm/lib/CodeGen/CommandFlags.cpp
+++ b/llvm/lib/CodeGen/CommandFlags.cpp
@@ -98,7 +98,6 @@ CGOPT_EXP(bool, EnableTLSDESC)
CGOPT(bool, UniqueSectionNames)
CGOPT(bool, UniqueBasicBlockSectionNames)
CGOPT(bool, SeparateNamedSections)
-CGOPT(EABI, EABIVersion)
CGOPT(DebuggerKind, DebuggerTuningOpt)
CGOPT(VectorLibrary, VectorLibrary)
CGOPT(bool, EnableStackSizeSection)
@@ -371,16 +370,6 @@ codegen::RegisterCodeGenFlags::RegisterCodeGenFlags() {
cl::init(false));
CGBINDOPT(SeparateNamedSections);
- static cl::opt<EABI> EABIVersion(
- "meabi", cl::desc("Set EABI type (default depends on triple):"),
- cl::init(EABI::Default),
- cl::values(
- clEnumValN(EABI::Default, "default", "Triple default EABI version"),
- clEnumValN(EABI::EABI4, "4", "EABI version 4"),
- clEnumValN(EABI::EABI5, "5", "EABI version 5"),
- clEnumValN(EABI::GNU, "gnu", "EABI GNU")));
- CGBINDOPT(EABIVersion);
-
static cl::opt<DebuggerKind> DebuggerTuningOpt(
"debugger-tune", cl::desc("Tune debug info for a particular debugger"),
cl::init(DebuggerKind::Default),
@@ -575,7 +564,6 @@ codegen::InitTargetOptionsFromCodeGenFlags(const Triple &TheTriple) {
Options.MCOptions = mc::InitMCTargetOptionsFromFlags();
- Options.EABIVersion = getEABIVersion();
Options.DebuggerTuning = getDebuggerTuningOpt();
Options.SwiftAsyncFramePointer = getSwiftAsyncFramePointer();
return Options;
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp
index 2cd7bc1d442cb..f852f7551ce16 100644
--- a/llvm/lib/CodeGen/TargetLoweringBase.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp
@@ -719,7 +719,6 @@ TargetLoweringBase::TargetLoweringBase(const TargetMachine &tm,
: TM(tm),
RuntimeLibcallInfo(TM.getTargetTriple(), TM.Options.ExceptionModel,
TM.getTargetTriple().getDefaultFloatABI(),
- TM.Options.EABIVersion,
TM.Options.MCOptions.getABIName(), TM.Options.VecLib),
Libcalls(RuntimeLibcallInfo, [&STI](LibcallLoweringInfo &Info) {
STI.initLibcallLoweringInfo(Info);
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp
index 89a5a929bec01..92872ac738dfe 100644
--- a/llvm/lib/IR/RuntimeLibcalls.cpp
+++ b/llvm/lib/IR/RuntimeLibcalls.cpp
@@ -29,7 +29,7 @@ using namespace RTLIB;
RuntimeLibcallsInfo::RuntimeLibcallsInfo(const Triple &TT,
ExceptionHandling ExceptionModel,
FloatABI::ABIType FloatABI,
- EABI EABIVersion, StringRef ABIName,
+ StringRef ABIName,
VectorLibrary VecLib) {
// FIXME: The ExceptionModel parameter is to handle the field in
// TargetOptions. This interface fails to distinguish the forced disable
@@ -38,7 +38,7 @@ RuntimeLibcallsInfo::RuntimeLibcallsInfo(const Triple &TT,
if (ExceptionModel == ExceptionHandling::None)
ExceptionModel = TT.getDefaultExceptionHandling();
- initLibcalls(TT, ExceptionModel, FloatABI, EABIVersion, ABIName,
+ initLibcalls(TT, ExceptionModel, FloatABI, ABIName,
TT.getDefaultLongDoubleFormat());
// TODO: Tablegen should generate these sets
@@ -105,10 +105,10 @@ RuntimeLibcallsInfo::RuntimeLibcallsInfo(const Triple &TT,
// TODO: Consider the remaining module flags.
RuntimeLibcallsInfo::RuntimeLibcallsInfo(const Module &M,
ExceptionHandling ExceptionModel,
- EABI EABIVersion, StringRef ABIName,
+ StringRef ABIName,
VectorLibrary VecLib)
: RuntimeLibcallsInfo(M.getTargetTriple(), ExceptionModel, M.getFloatABI(),
- EABIVersion, ABIName, VecLib) {}
+ ABIName, VecLib) {}
bool RuntimeLibcallsInfo::isLibraryAvailable(StringRef LibraryName) const {
// TODO: Drive this from module-level state (e.g. the linked runtime). For now
@@ -121,10 +121,10 @@ bool RuntimeLibcallsInfo::isLibraryAvailable(StringRef LibraryName) const {
void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
ExceptionHandling ExceptionModel,
FloatABI::ABIType FloatABI,
- EABI EABIVersion, StringRef ABIName,
+ StringRef ABIName,
LongDoubleFormat LongDoubleFormat) {
- setTargetRuntimeLibcallSets(TT, ExceptionModel, FloatABI, EABIVersion,
- ABIName, LongDoubleFormat);
+ setTargetRuntimeLibcallSets(TT, ExceptionModel, FloatABI, ABIName,
+ LongDoubleFormat);
}
LLVM_ATTRIBUTE_ALWAYS_INLINE
diff --git a/llvm/lib/LTO/LTOBackend.cpp b/llvm/lib/LTO/LTOBackend.cpp
index 69bc3fdae6c57..11c9b2f61988b 100644
--- a/llvm/lib/LTO/LTOBackend.cpp
+++ b/llvm/lib/LTO/LTOBackend.cpp
@@ -485,8 +485,8 @@ static void codegen(const Config &Conf, TargetMachine *TM,
TargetLibraryInfoImpl TLII(Mod.getTargetTriple(), TM->Options.VecLib);
CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
CodeGenPasses.add(new RuntimeLibraryInfoWrapper(
- TM->Options.ExceptionModel, TM->Options.EABIVersion,
- TM->Options.MCOptions.ABIName, TM->Options.VecLib));
+ TM->Options.ExceptionModel, TM->Options.MCOptions.ABIName,
+ TM->Options.VecLib));
// No need to make index available if the module is empty.
// In theory these passes should not use the index for an empty
diff --git a/llvm/lib/Passes/RunCodeGen.cpp b/llvm/lib/Passes/RunCodeGen.cpp
index adcebe0d6ad20..aae30c47389c2 100644
--- a/llvm/lib/Passes/RunCodeGen.cpp
+++ b/llvm/lib/Passes/RunCodeGen.cpp
@@ -46,9 +46,8 @@ runCodeGenPipelineLegacy(TargetMachine &TM, Module &M, raw_pwrite_stream &OS,
CodeGenPasses.add(new TargetLibraryInfoWrapperPass(TLII));
const TargetOptions &Options = TM.Options;
- CodeGenPasses.add(
- new RuntimeLibraryInfoWrapper(Options.ExceptionModel, Options.EABIVersion,
- Options.MCOptions.ABIName, Options.VecLib));
+ CodeGenPasses.add(new RuntimeLibraryInfoWrapper(
+ Options.ExceptionModel, Options.MCOptions.ABIName, Options.VecLib));
if (TM.addPassesToEmitFile(CodeGenPasses, OS, DwoOS ? &DwoOS->os() : nullptr,
CGFT, DisableVerify))
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
index 66c6c09b4b27b..7e82cb14c6616 100644
--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
@@ -159,23 +159,6 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, const Triple &TT,
TargetABI(ARM::computeTargetABI(TT, Options.MCOptions.ABIName)),
TLOF(createTLOF(getTargetTriple())), isLittle(TT.isLittleEndian()) {
- // Default to triple-appropriate EABI
- if (Options.EABIVersion == EABI::Default ||
- Options.EABIVersion == EABI::Unknown) {
- // musl is compatible with glibc with regard to EABI version
- if ((TargetTriple.getEnvironment() == Triple::GNUEABI ||
- TargetTriple.getEnvironment() == Triple::GNUEABIT64 ||
- TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
- TargetTriple.getEnvironment() == Triple::GNUEABIHFT64 ||
- TargetTriple.getEnvironment() == Triple::MuslEABI ||
- TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
- TargetTriple.getEnvironment() == Triple::OpenHOS) &&
- !(TargetTriple.isOSWindows() || TargetTriple.isOSDarwin()))
- this->Options.EABIVersion = EABI::GNU;
- else
- this->Options.EABIVersion = EABI::EABI5;
- }
-
if (TT.isOSBinFormatMachO()) {
this->Options.TrapUnreachable = true;
this->Options.NoTrapAfterNoreturn = true;
diff --git a/llvm/test/CodeGen/ARM/arm-eabi.ll b/llvm/test/CodeGen/ARM/arm-eabi.ll
index b2972ba97469e..48d592206cbba 100644
--- a/llvm/test/CodeGen/ARM/arm-eabi.ll
+++ b/llvm/test/CodeGen/ARM/arm-eabi.ll
@@ -5,27 +5,10 @@
; RUN: llc < %s -mtriple=arm-none-gnueabihf -mattr=+vfp2 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
; RUN: llc < %s -mtriple=arm-none-musleabi -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
; RUN: llc < %s -mtriple=arm-none-musleabihf -mattr=+vfp2 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-eabi -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-eabihf -mattr=+vfp2 -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-androideabi -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-gnueabi -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-gnueabihf -mattr=+vfp2 -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-musleabi -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-musleabihf -mattr=+vfp2 -meabi=gnu -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-GNUEABI
-; RUN: llc < %s -mtriple=arm-none-eabi -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-eabihf -mattr=+vfp2 -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-androideabi -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-gnueabi -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-gnueabihf -mattr=+vfp2 -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-musleabi -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-musleabihf -mattr=+vfp2 -meabi=4 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-eabi -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-eabihf -mattr=+vfp2 -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-androideabi -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-gnueabi -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-gnueabihf -mattr=+vfp2 -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-musleabi -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
-; RUN: llc < %s -mtriple=arm-none-musleabihf -mattr=+vfp2 -meabi=5 -disable-post-ra -o - | FileCheck %s --check-prefix=CHECK-EABI
+
+; The EABI version (numbered EABI vs GNU) is derived entirely from the triple
+; environment. The clang driver rewrites -meabi=gnu/5 into the triple, so the
+; matrix above already covers every case the old llc -meabi flag exercised.
%struct.my_s = type { [18 x i32] }
diff --git a/llvm/test/CodeGen/ARM/float-helpers.ll b/llvm/test/CodeGen/ARM/float-helpers.ll
index 1225b4c999f16..afca9936e05e2 100644
--- a/llvm/test/CodeGen/ARM/float-helpers.ll
+++ b/llvm/test/CodeGen/ARM/float-helpers.ll
@@ -1,12 +1,12 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -asm-verbose=false -mattr=-vfp2 -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-SOFT
-; RUN: llc -asm-verbose=false -mattr=-vfp2 -mtriple=arm-eabi -meabi=gnu < %s | FileCheck %s -check-prefix=CHECK-SOFT
+; RUN: llc -asm-verbose=false -mattr=-vfp2 -mtriple=arm-gnueabi < %s | FileCheck %s -check-prefix=CHECK-SOFT
; RUN: llc -asm-verbose=false -mattr=+vfp3 -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-SOFTFP
-; RUN: llc -asm-verbose=false -mattr=+vfp3 -meabi=gnu -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-SOFTFP
+; RUN: llc -asm-verbose=false -mattr=+vfp3 -mtriple=arm-gnueabi < %s | FileCheck %s -check-prefix=CHECK-SOFTFP
; RUN: llc -asm-verbose=false -mattr=+vfp3 -float-abi=hard -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-DP
-; RUN: llc -asm-verbose=false -mattr=+vfp3 -float-abi=hard -meabi=gnu -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-DP
+; RUN: llc -asm-verbose=false -mattr=+vfp3 -float-abi=hard -mtriple=arm-gnueabi < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-DP
; RUN: llc -asm-verbose=false -mattr=+vfp3,-fp64 -float-abi=hard -mtriple=arm-eabi < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-SPONLY
-; RUN: llc -asm-verbose=false -mattr=+vfp3,-fp64 -float-abi=hard -mtriple=arm-eabi -meabi=gnu < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-SPONLY
+; RUN: llc -asm-verbose=false -mattr=+vfp3,-fp64 -float-abi=hard -mtriple=arm-gnueabi < %s | FileCheck %s -check-prefix=CHECK-HARDFP-SP -check-prefix=CHECK-HARDFP-SPONLY
; The Runtime ABI for the ARM Architecture IHI0043 section 4.1.2 The
; floating-point helper functions to always use the base AAPCS (soft-float)
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
index cd1f59067c7ba..250ef6c9e75fc 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
@@ -46,7 +46,7 @@ def MSP430LibraryWithCondCC : SystemRuntimeLibrary<isMSP430,
>;
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK: if (TT.getArch() == Triple::avr && TT.isOSHurd()) {
// CHECK-NEXT: const CallingConv::ID DefaultCC = isFoo() ? CallingConv::Fast : CallingConv::GHC;
// CHECK-NEXT: for (CallingConv::ID &Entry : LibcallImplCallingConvs) {
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-library-dispatch.td b/llvm/test/TableGen/RuntimeLibcallEmitter-library-dispatch.td
index 87c6acc9493ac..05d641a091b43 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-library-dispatch.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-library-dispatch.td
@@ -32,15 +32,15 @@ def X86System : SystemRuntimeLibrary<isX86, (add Libc, Libm, extra)>;
// The driver dispatches to each named library under its presence guard, then
// emits the bare member (extra) inline.
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK: if (TT.isX86()) {
// CHECK-NEXT: static constexpr LibcallImplBitset SystemAvailableImpls({
// CHECK: AvailableLibcallImpls = SystemAvailableImpls;
// CHECK-EMPTY:
// CHECK-NEXT: if (isLibraryAvailable("libc"))
-// CHECK-NEXT: setAvailableLibFuncs_libc(TT, ExceptionModel, FloatABI, EABIVersion, ABIName, LongDoubleFormat);
+// CHECK-NEXT: setAvailableLibFuncs_libc(TT, ExceptionModel, FloatABI, ABIName, LongDoubleFormat);
// CHECK-NEXT: if (isLibraryAvailable("libm"))
-// CHECK-NEXT: setAvailableLibFuncs_libm(TT, ExceptionModel, FloatABI, EABIVersion, ABIName, LongDoubleFormat);
+// CHECK-NEXT: setAvailableLibFuncs_libm(TT, ExceptionModel, FloatABI, ABIName, LongDoubleFormat);
// CHECK-EMPTY:
// CHECK-NEXT: static const RTLIB::LibcallImpl LibraryCalls[] = {
// CHECK-NEXT: RTLIB::impl_extra, // extra
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-library-grouping.td b/llvm/test/TableGen/RuntimeLibcallEmitter-library-grouping.td
index 59d864f195906..e5cad3206a430 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-library-grouping.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-library-grouping.td
@@ -31,7 +31,7 @@ def Libm : LibcallLibrary<"libm", (add sqrt,
// One standalone implementation function is emitted per LibcallLibrary.
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libc(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libc(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK-NEXT: {
// CHECK-NEXT: static const RTLIB::LibcallImpl LibraryCalls[] = {
// CHECK-NEXT: RTLIB::impl_memcpy, // memcpy
@@ -55,7 +55,7 @@ def Libm : LibcallLibrary<"libm", (add sqrt,
// CHECK-NEXT: }
// CHECK-NEXT: }
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libm(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libm(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK-NEXT: {
// CHECK-NEXT: static const RTLIB::LibcallImpl LibraryCalls[] = {
// CHECK-NEXT: RTLIB::impl_sqrt, // sqrt
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter-library-name-merge.td b/llvm/test/TableGen/RuntimeLibcallEmitter-library-name-merge.td
index f44ae67e62d38..692fa2475b6aa 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter-library-name-merge.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter-library-name-merge.td
@@ -42,7 +42,7 @@ def DarwinLibm : LibcallLibrary<"libm", (add sqrt)> { let Pred = isDarwin; }
// The shared core (memcpy, memset) is emitted once and unguarded; each variant's
// guarded block carries only its own extras (bzero for Darwin, stpcpy for GNU).
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libc(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libc(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK-NEXT: static const RTLIB::LibcallImpl LibraryCalls[] = {
// CHECK-NEXT: RTLIB::impl_memcpy, // memcpy
// CHECK-NEXT: RTLIB::impl_memset, // memset
@@ -77,7 +77,7 @@ def DarwinLibm : LibcallLibrary<"libm", (add sqrt)> { let Pred = isDarwin; }
// sqrt differs in calling convention between the two libm variants, so it stays
// per-variant: no shared-core hoist, and the GNU variant keeps its ARM_AAPCS.
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libm(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setAvailableLibFuncs_libm(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK-NEXT: if (TT.isOSDarwin()) {
// CHECK-NEXT: static const RTLIB::LibcallImpl LibraryCalls[] = {
// CHECK-NEXT: RTLIB::impl_sqrt, // sqrt
diff --git a/llvm/test/TableGen/RuntimeLibcallEmitter.td b/llvm/test/TableGen/RuntimeLibcallEmitter.td
index 51c3e02885f4b..b3ed43f26c10e 100644
--- a/llvm/test/TableGen/RuntimeLibcallEmitter.td
+++ b/llvm/test/TableGen/RuntimeLibcallEmitter.td
@@ -210,7 +210,7 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
// CHECK: return enum_seq(RTLIB::Unsupported, RTLIB::Unsupported);
// CHECK-NEXT: }
-// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
+// CHECK: void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets(const llvm::Triple &TT, ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, StringRef ABIName, LongDoubleFormat LongDoubleFormat) {
// CHECK-EMPTY:
// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
// CHECK-NEXT: static constexpr LibcallImplBitset SystemAvailableImpls({
diff --git a/llvm/test/Transforms/Util/DeclareRuntimeLibcalls/codegen-opt-flags.ll b/llvm/test/Transforms/Util/DeclareRuntimeLibcalls/codegen-opt-flags.ll
index a5da90da6a74a..b20760b535bed 100644
--- a/llvm/test/Transforms/Util/DeclareRuntimeLibcalls/codegen-opt-flags.ll
+++ b/llvm/test/Transforms/Util/DeclareRuntimeLibcalls/codegen-opt-flags.ll
@@ -1,7 +1,7 @@
; REQUIRES: arm-registered-target
; Make sure that codegen flags work to change the set of libcalls
-; RUN: opt -S -passes=declare-runtime-libcalls -mtriple=arm-none-linux-gnueabi -float-abi=hard -exception-model=sjlj -meabi=4 < %s | FileCheck %s
+; RUN: opt -S -passes=declare-runtime-libcalls -mtriple=arm-none-eabi -float-abi=hard -exception-model=sjlj < %s | FileCheck %s
; Depends on -exception-model
; CHECK: declare arm_aapcs_vfpcc void @_Unwind_SjLj_Register(...)
diff --git a/llvm/tools/llc/lib/NewPMDriver.cpp b/llvm/tools/llc/lib/NewPMDriver.cpp
index fc637b3e27aee..475608de5500a 100644
--- a/llvm/tools/llc/lib/NewPMDriver.cpp
+++ b/llvm/tools/llc/lib/NewPMDriver.cpp
@@ -137,7 +137,7 @@ int llvm::compileModuleWithNewPM(
MAM.registerPass([&] {
const TargetOptions &Options = Target->Options;
- return RuntimeLibraryAnalysis(Options.ExceptionModel, Options.EABIVersion,
+ return RuntimeLibraryAnalysis(Options.ExceptionModel,
Options.MCOptions.ABIName, Options.VecLib);
});
diff --git a/llvm/tools/llc/lib/llcdriver.cpp b/llvm/tools/llc/lib/llcdriver.cpp
index a41a728ad6650..94d204ed1424a 100644
--- a/llvm/tools/llc/lib/llcdriver.cpp
+++ b/llvm/tools/llc/lib/llcdriver.cpp
@@ -754,9 +754,9 @@ static int compileModule(char **argv, SmallVectorImpl<PassPlugin> &PluginList,
// Build up all of the passes that we want to do to the module.
legacy::PassManager PM;
PM.add(new TargetLibraryInfoWrapperPass(TLII));
- PM.add(new RuntimeLibraryInfoWrapper(
- Target->Options.ExceptionModel, Target->Options.EABIVersion,
- Options.MCOptions.ABIName, Target->Options.VecLib));
+ PM.add(new RuntimeLibraryInfoWrapper(Target->Options.ExceptionModel,
+ Options.MCOptions.ABIName,
+ Target->Options.VecLib));
{
raw_pwrite_stream *OS = &Out->os();
diff --git a/llvm/tools/opt/NewPMDriver.cpp b/llvm/tools/opt/NewPMDriver.cpp
index 730ee097b2d1d..11b19e65994ea 100644
--- a/llvm/tools/opt/NewPMDriver.cpp
+++ b/llvm/tools/opt/NewPMDriver.cpp
@@ -452,7 +452,7 @@ bool llvm::runPassPipeline(
MAM.registerPass([&] {
const TargetOptions &Options = TM->Options;
- return RuntimeLibraryAnalysis(Options.ExceptionModel, Options.EABIVersion,
+ return RuntimeLibraryAnalysis(Options.ExceptionModel,
Options.MCOptions.ABIName, Options.VecLib);
});
}
@@ -558,8 +558,7 @@ bool llvm::runPassPipeline(
MPM.addPass(AssignGUIDPass());
}
MPM.addPass(PrintModulePass(
- Out->os(), "", ShouldPreserveAssemblyUseListOrder, EmitSummaryIndex,
- /*ShouldRenumberMetadata=*/true));
+ Out->os(), "", ShouldPreserveAssemblyUseListOrder, EmitSummaryIndex));
break;
case OK_OutputBitcode:
if (EmitSummaryIndex) {
diff --git a/llvm/tools/opt/optdriver.cpp b/llvm/tools/opt/optdriver.cpp
index 2a9b567ee7b6d..d745725d36806 100644
--- a/llvm/tools/opt/optdriver.cpp
+++ b/llvm/tools/opt/optdriver.cpp
@@ -848,8 +848,7 @@ optMain(int argc, char **argv,
Passes.add(new TargetLibraryInfoWrapperPass(TLII));
Passes.add(new RuntimeLibraryInfoWrapper(
- Options->ExceptionModel, Options->EABIVersion, Options->MCOptions.ABIName,
- Options->VecLib));
+ Options->ExceptionModel, Options->MCOptions.ABIName, Options->VecLib));
// Add internal analysis passes from the target machine.
Passes.add(createTargetTransformInfoWrapperPass(TM ? TM->getTargetIRAnalysis()
@@ -927,11 +926,10 @@ optMain(int argc, char **argv,
BOS = std::make_unique<raw_svector_ostream>(Buffer);
OS = BOS.get();
}
- if (OutputAssembly) {
+ if (OutputAssembly)
Passes.add(createPrintModulePass(
- *OS, "", /*ShouldPreserveAssemblyUseListOrder=*/false,
- /*ShouldRenumberMetadata=*/true));
- } else
+ *OS, "", /* ShouldPreserveAssemblyUseListOrder */ false));
+ else
Passes.add(createBitcodeWriterPass(
*OS, /* ShouldPreserveBitcodeUseListOrder */ true));
}
diff --git a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
index 3724b37e50101..690e9da5805b2 100644
--- a/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+++ b/llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
@@ -499,7 +499,7 @@ void RuntimeLibcallEmitter::emitLibraryFunction(
emitLibFuncSuffix(OS, Name);
OS << "(const llvm::Triple &TT, "
"ExceptionHandling ExceptionModel, FloatABI::ABIType FloatABI, "
- "EABI EABIVersion, StringRef ABIName, "
+ "StringRef ABIName, "
"LongDoubleFormat LongDoubleFormat) {\n";
// Per-variant expansion. Unconditional impls are tracked separately for
@@ -630,7 +630,7 @@ void RuntimeLibcallEmitter::emitRuntimeLibcallsInfoMemberDecls(
OS << "void setAvailableLibFuncs_";
emitLibFuncSuffix(OS, Name);
OS << "(const llvm::Triple &TT, ExceptionHandling ExceptionModel, "
- "FloatABI::ABIType FloatABI, EABI EABIVersion, StringRef ABIName, "
+ "FloatABI::ABIType FloatABI, StringRef ABIName, "
"LongDoubleFormat LongDoubleFormat);\n";
}
}
@@ -646,7 +646,7 @@ void RuntimeLibcallEmitter::emitSystemRuntimeLibrarySetCalls(
OS << "void llvm::RTLIB::RuntimeLibcallsInfo::setTargetRuntimeLibcallSets("
"const llvm::Triple &TT, ExceptionHandling ExceptionModel, "
- "FloatABI::ABIType FloatABI, EABI EABIVersion, "
+ "FloatABI::ABIType FloatABI, "
"StringRef ABIName, LongDoubleFormat LongDoubleFormat) {\n";
for (const Record *R : AllLibs) {
@@ -773,7 +773,7 @@ void RuntimeLibcallEmitter::emitSystemRuntimeLibrarySetCalls(
OS << indent(4) << "if (isLibraryAvailable(\"" << LibName << "\"))\n"
<< indent(6) << "setAvailableLibFuncs_";
emitLibFuncSuffix(OS, LibName);
- OS << "(TT, ExceptionModel, FloatABI, EABIVersion, ABIName, "
+ OS << "(TT, ExceptionModel, FloatABI, ABIName, "
"LongDoubleFormat);\n";
}
if (!DispatchLibs.empty())
More information about the flang-commits
mailing list