[llvm] [llvm][llvm-dis] Fix 'llvm-dis' with '--materialize-metadata --show-annotations' crashes (PR #164819)

via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 24 06:50:29 PDT 2025


https://github.com/t-baydyusenov updated https://github.com/llvm/llvm-project/pull/164819

>From 151389eac3b2dc9e78ec8e89bb3f510a543a57a9 Mon Sep 17 00:00:00 2001
From: "t.baydyusenov" <t.baydyusenov at syntacore.com>
Date: Tue, 21 Oct 2025 15:24:53 +0000
Subject: [PATCH] [llvm][llvm-dis] Fix 'llvm-dis' with '--materialize-metadata
 --show-annotations' crashes

---
 llvm/lib/IR/AsmWriter.cpp                   | 4 ++--
 llvm/test/Assembler/metadata-annotations.ll | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)
 create mode 100644 llvm/test/Assembler/metadata-annotations.ll

diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp
index 488b078ab6caf..1096e57632d97 100644
--- a/llvm/lib/IR/AsmWriter.cpp
+++ b/llvm/lib/IR/AsmWriter.cpp
@@ -4082,10 +4082,10 @@ void AssemblyWriter::printTypeIdentities() {
 
 /// printFunction - Print all aspects of a function.
 void AssemblyWriter::printFunction(const Function *F) {
-  if (AnnotationWriter) AnnotationWriter->emitFunctionAnnot(F, Out);
-
   if (F->isMaterializable())
     Out << "; Materializable\n";
+  else if (AnnotationWriter)
+    AnnotationWriter->emitFunctionAnnot(F, Out);
 
   const AttributeList &Attrs = F->getAttributes();
   if (Attrs.hasFnAttrs()) {
diff --git a/llvm/test/Assembler/metadata-annotations.ll b/llvm/test/Assembler/metadata-annotations.ll
new file mode 100644
index 0000000000000..4fd471338cd0a
--- /dev/null
+++ b/llvm/test/Assembler/metadata-annotations.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llvm-dis --materialize-metadata --show-annotations | FileCheck %s
+
+; CHECK: ; Materializable
+; CHECK-NEXT: define dso_local i32 @test() {}
+define dso_local i32 @test() {
+entry:
+  ret i32 0
+}
+



More information about the llvm-commits mailing list