[llvm] [DirectX][MC] Fix dangling StringRefs in DXContainerWriterTest (PR #211227)

Vladislav Dzhidzhoev via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 22 03:32:46 PDT 2026


https://github.com/dzhidzhoev created https://github.com/llvm/llvm-project/pull/211227

Building Parts from SmallString elements invalidated StringRefs on vector reallocation, so the test was dying under MSan before the expected fatal error.

Fixes buildbot failures https://github.com/llvm/llvm-project/pull/204903#issuecomment-5039669504.

>From be1c20964876f9cf55c164ecc3a597c094814c2b Mon Sep 17 00:00:00 2001
From: Vladislav Dzhidzhoev <vdzhidzhoev at accesssoftek.com>
Date: Wed, 22 Jul 2026 12:30:18 +0200
Subject: [PATCH] [DirectX][MC] Fix dangling StringRefs in
 DXContainerWriterTest

Building Parts from SmallString elements invalidated StringRefs on
vector reallocation, so PrivMustBeLast died under MSan before
the expected fatal error.

Fixes buildbot failures
https://github.com/llvm/llvm-project/pull/204903#issuecomment-5039669504.
---
 llvm/unittests/MC/DXContainerWriterTest.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/llvm/unittests/MC/DXContainerWriterTest.cpp b/llvm/unittests/MC/DXContainerWriterTest.cpp
index 3641e873dbf4f..65adb6d278433 100644
--- a/llvm/unittests/MC/DXContainerWriterTest.cpp
+++ b/llvm/unittests/MC/DXContainerWriterTest.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/ADT/StringExtras.h"
 #include "llvm/MC/MCDXContainerWriter.h"
 #include "llvm/Object/DXContainer.h"
 #include "llvm/Support/Error.h"
@@ -20,8 +21,8 @@ using namespace llvm::object;
 namespace {
 
 class TestDXContainerWriter : public MCDXContainerBaseWriter {
-  SmallVector<SmallString<8>> PartNames;
-  SmallVector<SmallString<32>> PartData;
+  SmallVector<StringRef> PartNames;
+  SmallVector<StringRef> PartData;
   SmallVector<MCDXContainerPart> Parts;
 
 protected:
@@ -30,7 +31,7 @@ class TestDXContainerWriter : public MCDXContainerBaseWriter {
 public:
   void addPart(StringRef Name, ArrayRef<uint8_t> Data) {
     PartNames.emplace_back(Name);
-    PartData.emplace_back(Data.begin(), Data.end());
+    PartData.emplace_back(llvm::toStringRef(Data));
     Parts.push_back({PartNames.back(), PartData.back()});
   }
 };



More information about the llvm-commits mailing list