[clang] [clang][AArch64] Use structured bindings in feature parsing code (PR #197689)

via cfe-commits cfe-commits at lists.llvm.org
Thu May 14 07:11:16 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: David Spickett (DavidSpickett)

<details>
<summary>Changes</summary>

Clearer than having to know that first is a CPU and second is the feature list.

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


1 Files Affected:

- (modified) clang/lib/Driver/ToolChains/Arch/AArch64.cpp (+10-11) 


``````````diff
diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index 7ed4002e53420..12f7e382cc99a 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -180,8 +180,7 @@ static bool DecodeAArch64HostFeatures(llvm::AArch64::ExtensionSet &Extensions) {
 static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu,
                               llvm::AArch64::ExtensionSet &Extensions,
                               std::optional<std::string> &InvalidArg) {
-  std::pair<StringRef, StringRef> Split = Mcpu.split("+");
-  StringRef CPU = Split.first;
+  auto [CPU, features] = Mcpu.split("+");
   const bool IsNative = CPU == "native";
 
   if (IsNative)
@@ -190,7 +189,7 @@ static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu,
   const std::optional<llvm::AArch64::CpuInfo> CpuInfo =
       llvm::AArch64::parseCpu(CPU);
   if (!CpuInfo) {
-    InvalidArg.emplace(Split.first.str());
+    InvalidArg.emplace(CPU.str());
     return false;
   }
 
@@ -199,8 +198,8 @@ static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu,
   if (IsNative && !DecodeAArch64HostFeatures(Extensions))
     return false;
 
-  if (Split.second.size() &&
-      !DecodeAArch64Features(D, Split.second, Extensions, InvalidArg))
+  if (features.size() &&
+      !DecodeAArch64Features(D, features, Extensions, InvalidArg))
     return false;
 
   return true;
@@ -212,22 +211,22 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March,
                                 llvm::AArch64::ExtensionSet &Extensions,
                                 std::optional<std::string> &InvalidArg) {
   std::string MarchLowerCase = March.lower();
-  std::pair<StringRef, StringRef> Split = StringRef(MarchLowerCase).split("+");
+  auto [CPU, features] = StringRef(MarchLowerCase).split("+");
 
-  if (Split.first == "native")
+  if (CPU == "native")
     return DecodeAArch64Mcpu(D, MarchLowerCase, Extensions, InvalidArg);
 
   const llvm::AArch64::ArchInfo *ArchInfo =
-      llvm::AArch64::parseArch(Split.first);
+      llvm::AArch64::parseArch(CPU);
   if (!ArchInfo) {
-    InvalidArg.emplace(Split.first.str());
+    InvalidArg.emplace(CPU.str());
     return false;
   }
 
   Extensions.addArchDefaults(*ArchInfo);
 
-  if ((Split.second.size() &&
-       !DecodeAArch64Features(D, Split.second, Extensions, InvalidArg)))
+  if ((features.size() &&
+       !DecodeAArch64Features(D, features, Extensions, InvalidArg)))
     return false;
 
   return true;

``````````

</details>


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


More information about the cfe-commits mailing list