[llvm] 11a293a - [llvm][llvm-dis] Fix 'llvm-dis' with '--materialize-metadata --show-annotations' crashes (#164819)
    via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Oct 24 07:44:05 PDT 2025
    
    
  
Author: Timur Baydyusenov
Date: 2025-10-24T14:44:00Z
New Revision: 11a293aadb24376cdb627ead888bdddc5867b7aa
URL: https://github.com/llvm/llvm-project/commit/11a293aadb24376cdb627ead888bdddc5867b7aa
DIFF: https://github.com/llvm/llvm-project/commit/11a293aadb24376cdb627ead888bdddc5867b7aa.diff
LOG: [llvm][llvm-dis] Fix 'llvm-dis' with '--materialize-metadata --show-annotations' crashes (#164819)
Added: 
    llvm/test/Assembler/metadata-annotations.ll
Modified: 
    llvm/lib/IR/AsmWriter.cpp
Removed: 
    
################################################################################
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