From 29c6f4833ce0e743118278e9a149e27cbd8da126 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 6 Feb 2018 03:29:18 +0000 Subject: [PATCH] ThinLTOBitcodeWriter: Do not include module-level inline asm in the merged module. If the inline asm provides the definition of a symbol, this can result in duplicate symbol errors. Differential Revision: https://reviews.llvm.org/D42944 llvm-svn: 324313 --- llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp | 1 + llvm/test/Transforms/ThinLTOBitcodeWriter/module-asm.ll | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 llvm/test/Transforms/ThinLTOBitcodeWriter/module-asm.ll diff --git a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp index f5a3d44..d2ce97a 100644 --- a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp +++ b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp @@ -298,6 +298,7 @@ void splitAndWriteThinLTOBitcode( return false; })); StripDebugInfo(*MergedM); + MergedM->setModuleInlineAsm(""); for (Function &F : *MergedM) if (!F.isDeclaration()) { diff --git a/llvm/test/Transforms/ThinLTOBitcodeWriter/module-asm.ll b/llvm/test/Transforms/ThinLTOBitcodeWriter/module-asm.ll new file mode 100644 index 0000000..15e4778 --- /dev/null +++ b/llvm/test/Transforms/ThinLTOBitcodeWriter/module-asm.ll @@ -0,0 +1,12 @@ +; RUN: opt -thinlto-bc -o %t %s +; RUN: llvm-modextract -b -n 0 -o - %t | llvm-dis | FileCheck --check-prefix=M0 %s +; RUN: llvm-modextract -b -n 1 -o - %t | llvm-dis | FileCheck --check-prefix=M1 %s + +target triple = "x86_64-unknown-linux-gnu" + +@g = constant i32 0, !type !0 +!0 = !{i32 0, !"typeid"} + +; M0: module asm "ret" +; M1-NOT: module asm +module asm "ret" -- 2.7.4