From 4669cf27508ba00274367d62b295e1a7ca20c7ba Mon Sep 17 00:00:00 2001 From: Igor Kudrin Date: Thu, 16 May 2019 05:23:25 +0000 Subject: [PATCH] [LTO] Improve readability of module IDs Module IDs can appear in diagnostic messages. This patch adds some auxiliary symbols to improve their readability. Differential Revision: https://reviews.llvm.org/D61857 llvm-svn: 360858 --- lld/ELF/InputFiles.cpp | 9 +++++---- lld/test/ELF/lto/Inputs/irmover-warning.ll | 10 ++++++++++ lld/test/ELF/lto/irmover-warning.ll | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 lld/test/ELF/lto/Inputs/irmover-warning.ll create mode 100644 lld/test/ELF/lto/irmover-warning.ll diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index d22fa74..5917cb9 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -1241,10 +1241,11 @@ BitcodeFile::BitcodeFile(MemoryBufferRef MB, StringRef ArchiveName, // into consideration at LTO time (which very likely causes undefined // symbols later in the link stage). So we append file offset to make // filename unique. - MemoryBufferRef MBRef( - MB.getBuffer(), - Saver.save(ArchiveName + Path + - (ArchiveName.empty() ? "" : utostr(OffsetInArchive)))); + StringRef Name = ArchiveName.empty() + ? Saver.save(Path) + : Saver.save(ArchiveName + "(" + Path + " at " + + utostr(OffsetInArchive) + ")"); + MemoryBufferRef MBRef(MB.getBuffer(), Name); Obj = CHECK(lto::InputFile::create(MBRef), this); diff --git a/lld/test/ELF/lto/Inputs/irmover-warning.ll b/lld/test/ELF/lto/Inputs/irmover-warning.ll new file mode 100644 index 0000000..72d437f --- /dev/null +++ b/lld/test/ELF/lto/Inputs/irmover-warning.ll @@ -0,0 +1,10 @@ +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +define void @f() { + ret void +} + +!0 = !{ i32 2, !"foo", i32 2 } + +!llvm.module.flags = !{ !0 } diff --git a/lld/test/ELF/lto/irmover-warning.ll b/lld/test/ELF/lto/irmover-warning.ll new file mode 100644 index 0000000..8774687 --- /dev/null +++ b/lld/test/ELF/lto/irmover-warning.ll @@ -0,0 +1,22 @@ +; RUN: llvm-as -o %t1.bc %s +; RUN: llvm-as -o %t2.bc %S/Inputs/irmover-warning.ll +; RUN: rm -f %t.a +; RUN: llvm-ar rcs %t.a %t2.bc +; RUN: ld.lld %t1.bc %t.a -o %t 2>&1 | FileCheck %s + +; CHECK: warning: linking module flags 'foo': IDs have conflicting values +; CHECK-SAME: irmover-warning.ll.tmp.a(irmover-warning.ll.tmp2.bc at {{[0-9]+}}) + +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +declare void @f() + +define void @g() { + call void @f() + ret void +} + +!0 = !{ i32 2, !"foo", i32 1 } + +!llvm.module.flags = !{ !0 } -- 2.7.4