[PATCH] D52952: [IR][Modules] Improve quality of diagnostic messages for non-fatal warnings during module linking.

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 8 18:19:23 PDT 2018


This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rL344011: llvm-link: Improve diagnostic for module-level metadata mismatch (authored by dblaikie, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D52952?vs=168538&id=168741#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D52952

Files:
  llvm/trunk/lib/Linker/IRMover.cpp
  llvm/trunk/test/Linker/Inputs/metadata-mismatch-a.ll
  llvm/trunk/test/Linker/Inputs/metadata-mismatch-b.ll
  llvm/trunk/test/Linker/metadata-mismatch.test


Index: llvm/trunk/test/Linker/Inputs/metadata-mismatch-a.ll
===================================================================
--- llvm/trunk/test/Linker/Inputs/metadata-mismatch-a.ll
+++ llvm/trunk/test/Linker/Inputs/metadata-mismatch-a.ll
@@ -0,0 +1,3 @@
+
+!llvm.module.flags = !{!1}
+!1 = !{i32 2, !"Dwarf Version", i32 4}
Index: llvm/trunk/test/Linker/Inputs/metadata-mismatch-b.ll
===================================================================
--- llvm/trunk/test/Linker/Inputs/metadata-mismatch-b.ll
+++ llvm/trunk/test/Linker/Inputs/metadata-mismatch-b.ll
@@ -0,0 +1,2 @@
+!llvm.module.flags = !{!1}
+!1 = !{i32 2, !"Dwarf Version", i32 5}
Index: llvm/trunk/test/Linker/metadata-mismatch.test
===================================================================
--- llvm/trunk/test/Linker/metadata-mismatch.test
+++ llvm/trunk/test/Linker/metadata-mismatch.test
@@ -0,0 +1,3 @@
+; RUN: llvm-link %p/Inputs/metadata-mismatch-a.ll %p/Inputs/metadata-mismatch-b.ll -S 2>&1 | FileCheck %s
+
+; CHECK: warning: linking module flags 'Dwarf Version': IDs have conflicting values ('i32 5' from {{.*}}/metadata-mismatch-b.ll with 'i32 4' from llvm-link)
Index: llvm/trunk/lib/Linker/IRMover.cpp
===================================================================
--- llvm/trunk/lib/Linker/IRMover.cpp
+++ llvm/trunk/lib/Linker/IRMover.cpp
@@ -1230,8 +1230,14 @@
     case Module::Warning: {
       // Emit a warning if the values differ.
       if (SrcOp->getOperand(2) != DstOp->getOperand(2)) {
-        emitWarning("linking module flags '" + ID->getString() +
-                    "': IDs have conflicting values");
+        std::string str;
+        raw_string_ostream(str)
+            << "linking module flags '" << ID->getString()
+            << "': IDs have conflicting values ('" << *SrcOp->getOperand(2)
+            << "' from " << SrcM->getModuleIdentifier() << " with '"
+            << *DstOp->getOperand(2) << "' from " << DstM.getModuleIdentifier()
+            << ')';
+        emitWarning(str);
       }
       continue;
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52952.168741.patch
Type: text/x-patch
Size: 2051 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181009/c7f7411a/attachment.bin>


More information about the llvm-commits mailing list