[llvm] [llvm] Add NodeMetadata::optUnsafeEdges (NFC) (PR #137539)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 27 13:05:26 PDT 2025


https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/137539

>From 5643a676619e0bf8f2b788786a7c3c4675dd3ad0 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 27 Apr 2025 10:31:58 -0700
Subject: [PATCH 1/2] [llvm] Add NodeMetadata::optUnsafeEdges (NFC)

NodeMetadata::optUnsafeEdges returns ArrayRef, packaging
OptUnsafeEdges and NumOpts.  This in turn allows use of llvm::copy and
llvm::is_contained elsewhere in the class.
---
 llvm/include/llvm/CodeGen/RegAllocPBQP.h | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/RegAllocPBQP.h b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
index 234f1c6ff115a..c161f2ebd69ee 100644
--- a/llvm/include/llvm/CodeGen/RegAllocPBQP.h
+++ b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
@@ -15,6 +15,7 @@
 #ifndef LLVM_CODEGEN_REGALLOCPBQP_H
 #define LLVM_CODEGEN_REGALLOCPBQP_H
 
+#include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/Hashing.h"
 #include "llvm/CodeGen/PBQP/CostAllocator.h"
@@ -191,10 +192,8 @@ class NodeMetadata {
         everConservativelyAllocatable(Other.everConservativelyAllocatable)
 #endif
   {
-    if (NumOpts > 0) {
-      std::copy(&Other.OptUnsafeEdges[0], &Other.OptUnsafeEdges[NumOpts],
-                &OptUnsafeEdges[0]);
-    }
+    if (NumOpts > 0)
+      llvm::copy(Other.optUnsafeEdges(), &OptUnsafeEdges[0]);
   }
 
   NodeMetadata(NodeMetadata &&) = default;
@@ -243,9 +242,7 @@ class NodeMetadata {
   }
 
   bool isConservativelyAllocatable() const {
-    return (DeniedOpts < NumOpts) ||
-      (std::find(&OptUnsafeEdges[0], &OptUnsafeEdges[NumOpts], 0) !=
-       &OptUnsafeEdges[NumOpts]);
+    return (DeniedOpts < NumOpts) || llvm::is_contained(optUnsafeEdges(), 0);
   }
 
 #if LLVM_ENABLE_ABI_BREAKING_CHECKS
@@ -262,6 +259,10 @@ class NodeMetadata {
   Register VReg;
   GraphMetadata::AllowedRegVecRef AllowedRegs;
 
+  ArrayRef<unsigned> optUnsafeEdges() const {
+    return ArrayRef<unsigned>(OptUnsafeEdges.get(), NumOpts);
+  }
+
 #if LLVM_ENABLE_ABI_BREAKING_CHECKS
   bool everConservativelyAllocatable = false;
 #endif

>From 61a2c2d0a31dfe262ef01e5177e897bda898a738 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 27 Apr 2025 13:05:06 -0700
Subject: [PATCH 2/2] Address a comment.

---
 llvm/include/llvm/CodeGen/RegAllocPBQP.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/RegAllocPBQP.h b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
index c161f2ebd69ee..8578423ea5667 100644
--- a/llvm/include/llvm/CodeGen/RegAllocPBQP.h
+++ b/llvm/include/llvm/CodeGen/RegAllocPBQP.h
@@ -192,8 +192,7 @@ class NodeMetadata {
         everConservativelyAllocatable(Other.everConservativelyAllocatable)
 #endif
   {
-    if (NumOpts > 0)
-      llvm::copy(Other.optUnsafeEdges(), &OptUnsafeEdges[0]);
+    llvm::copy(Other.optUnsafeEdges(), &OptUnsafeEdges[0]);
   }
 
   NodeMetadata(NodeMetadata &&) = default;



More information about the llvm-commits mailing list