diff --git a/llvm/test/tools/gold/X86/bcsection.ll b/llvm/test/tools/gold/X86/bcsection.ll deleted file mode 100644 --- a/llvm/test/tools/gold/X86/bcsection.ll +++ /dev/null @@ -1,17 +0,0 @@ -; RUN: rm -rf %t && mkdir -p %t -; RUN: llvm-as -o %t/bcsection.bc %s - -; RUN: llvm-mc -I=%t -filetype=obj -triple=x86_64-unknown-unknown -o %t/bcsection.bco %p/Inputs/bcsection.s -; RUN: llvm-nm --no-llvm-bc %t/bcsection.bco 2>&1 | FileCheck %s -check-prefix=NO-SYMBOLS -; NO-SYMBOLS: no symbols - -; RUN: %gold -r -o %t/bcsection.o -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext %t/bcsection.bco -; RUN: llvm-nm --no-llvm-bc %t/bcsection.o | FileCheck %s - -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-unknown" - -; CHECK: main -define i32 @main() { - ret i32 0 -} diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp --- a/llvm/tools/gold/gold-plugin.cpp +++ b/llvm/tools/gold/gold-plugin.cpp @@ -540,6 +540,14 @@ BufferRef = Buffer->getMemBufferRef(); } + // Only use bitcode files for LTO. InputFile::create() will load bitcode + // from special sections within a binary object, this bitcode is typically + // generated by -fembed-bitcode and is not meant for LTO use. + if (identify_magic(BufferRef.getBuffer()) != file_magic::bitcode) { + *claimed = 0; + return LDPS_OK; + } + *claimed = 1; Expected> ObjOrErr = InputFile::create(BufferRef);