[llvm] Fix: Changed parameter to const reference instead of pass-by-value (PR #150928)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 28 04:34:00 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-ir

Author: None (arrowten)

<details>
<summary>Changes</summary>



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


2 Files Affected:

- (modified) llvm/include/llvm/IR/Metadata.h (+1-1) 
- (modified) llvm/unittests/IR/MetadataTest.cpp (+25) 


``````````diff
diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h
index af252aa24567a..9cd8533069c21 100644
--- a/llvm/include/llvm/IR/Metadata.h
+++ b/llvm/include/llvm/IR/Metadata.h
@@ -237,7 +237,7 @@ class DebugValueUser {
   /// `resetDebugValue(Idx, NewDebugValue)` should be used instead.
   LLVM_ABI void handleChangedValue(void *Old, Metadata *NewDebugValue);
   DebugValueUser() = default;
-  explicit DebugValueUser(std::array<Metadata *, 3> DebugValues)
+  explicit DebugValueUser(const std::array<Metadata *, 3> &DebugValues)
       : DebugValues(DebugValues) {
     trackDebugValues();
   }
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp
index ba8367f4a396e..0e8e0831ac9d6 100644
--- a/llvm/unittests/IR/MetadataTest.cpp
+++ b/llvm/unittests/IR/MetadataTest.cpp
@@ -5497,4 +5497,29 @@ TEST_F(MDTupleAllocationDeathTest, ResizeRejected) {
 }
 #endif
 
+typedef MetadataTest DebugValueUserTest;
+
+namespace {
+struct DebugValueUserTestHelper: public llvm::DebugValueUser {
+  using llvm::DebugValueUser::DebugValueUser;
+  using llvm::DebugValueUser::getDebugValues;
+};
+}
+
+TEST_F(DebugValueUserTest, GetDebugValues) {
+  auto *V = getConstantAsMetadata();
+  auto *V2 = getConstantAsMetadata();
+  auto *V3 = getConstantAsMetadata();
+  std::array<Metadata *, 3> Debugs = {V, V2, V3};
+  DebugValueUserTestHelper User(Debugs);
+  ArrayRef<Metadata *> Result = User.getDebugValues();
+
+  // Verify the size of the returned array is correct,
+  // and each element is correctly stored and returned.
+  EXPECT_EQ(Result.size(), 3u);
+  EXPECT_EQ(Result[0], V);
+  EXPECT_EQ(Result[1], V2);
+  EXPECT_EQ(Result[2], V3);
+}
+
 } // end namespace

``````````

</details>


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


More information about the llvm-commits mailing list