[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:38:43 PDT 2025


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

>From da0c65fa1b144d698fb7dabd13d058d0121df522 Mon Sep 17 00:00:00 2001
From: arrowten <ajaywakodikarsocial at gmail.com>
Date: Mon, 28 Jul 2025 15:39:32 +0530
Subject: [PATCH] Fix: Changed parameter to const reference instead of
 pass-by-value

---
 llvm/include/llvm/IR/Metadata.h    |  2 +-
 llvm/unittests/IR/MetadataTest.cpp | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

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



More information about the llvm-commits mailing list