[llvm] ba35346 - [TargetParser][NFC] Move Triple comparators out of line (#206032)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 26 05:46:26 PDT 2026
Author: Alexis Engelke
Date: 2026-06-26T14:46:22+02:00
New Revision: ba353465b82509e70ff2d97a1d821ef3934c4abe
URL: https://github.com/llvm/llvm-project/commit/ba353465b82509e70ff2d97a1d821ef3934c4abe
DIFF: https://github.com/llvm/llvm-project/commit/ba353465b82509e70ff2d97a1d821ef3934c4abe.diff
LOG: [TargetParser][NFC] Move Triple comparators out of line (#206032)
These are not performance-critical and especially operator< is expensive
to compile due to the std::tie template instantiation.
Added:
Modified:
llvm/include/llvm/TargetParser/Triple.h
llvm/lib/TargetParser/Triple.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 2fb28cfda053f..852a410be03c0 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -387,21 +387,10 @@ class Triple {
LLVM_ABI Triple(ArchType A, SubArchType SA, VendorType V, OSType OS,
EnvironmentType E, ObjectFormatType OF);
- bool operator==(const Triple &Other) const {
- return Arch == Other.Arch && SubArch == Other.SubArch &&
- Vendor == Other.Vendor && OS == Other.OS &&
- Environment == Other.Environment &&
- ObjectFormat == Other.ObjectFormat;
- }
-
+ LLVM_ABI bool operator==(const Triple &Other) const;
bool operator!=(const Triple &Other) const { return !(*this == Other); }
- bool operator<(const Triple &Other) const {
- return std::tie(Arch, SubArch, Vendor, OS, Environment, ObjectFormat,
- Data) < std::tie(Other.Arch, Other.SubArch, Other.Vendor,
- Other.OS, Other.Environment,
- Other.ObjectFormat, Other.Data);
- }
+ LLVM_ABI bool operator<(const Triple &Other) const;
/// @}
/// @name Normalization
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
index 4cca24b52af94..501cf81c1b031 100644
--- a/llvm/lib/TargetParser/Triple.cpp
+++ b/llvm/lib/TargetParser/Triple.cpp
@@ -21,6 +21,18 @@
#include <cstring>
using namespace llvm;
+bool Triple::operator==(const Triple &Other) const {
+ return Arch == Other.Arch && SubArch == Other.SubArch &&
+ Vendor == Other.Vendor && OS == Other.OS &&
+ Environment == Other.Environment && ObjectFormat == Other.ObjectFormat;
+}
+
+bool Triple::operator<(const Triple &Other) const {
+ return std::tie(Arch, SubArch, Vendor, OS, Environment, ObjectFormat, Data) <
+ std::tie(Other.Arch, Other.SubArch, Other.Vendor, Other.OS,
+ Other.Environment, Other.ObjectFormat, Other.Data);
+}
+
StringRef Triple::getArchTypeName(ArchType Kind) {
switch (Kind) {
case UnknownArch:
More information about the llvm-commits
mailing list