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; } 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)