diff options
Diffstat (limited to 'llvm/tools/gold/gold-plugin.cpp')
-rw-r--r-- | llvm/tools/gold/gold-plugin.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp index f2eeb7e8c4f..110433aefe3 100644 --- a/llvm/tools/gold/gold-plugin.cpp +++ b/llvm/tools/gold/gold-plugin.cpp @@ -18,6 +18,7 @@ #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/CodeGen/Analysis.h" #include "llvm/CodeGen/CommandFlags.h" +#include "llvm/IR/Constants.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/IR/Verifier.h" @@ -576,6 +577,13 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile, if (!GV) continue; // Asm symbol. + if (GV->hasCommonLinkage()) { + // Common linkage is special. There is no single symbol that wins the + // resolution. Instead we have to collect the maximum alignment and size. + // The IR linker does that for us if we just pass it every common GV. + continue; + } + switch (Resolution) { case LDPR_UNKNOWN: llvm_unreachable("Unexpected resolution"); |