From: Peter Collingbourne Date: Sun, 5 Jul 2015 20:52:40 +0000 (+0000) Subject: Verifier: Forbid comdats on linker declarations. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=cf47c180e1e8f6071448555b3a67220a7e72c38a Verifier: Forbid comdats on linker declarations. Differential Revision: http://reviews.llvm.org/D10945 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241414 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index 3c61165768f..cf88e644cea 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -438,6 +438,9 @@ void Verifier::visitGlobalValue(const GlobalValue &GV) { Assert(GVar && GVar->getValueType()->isArrayTy(), "Only global arrays can have appending linkage!", GVar); } + + if (GV.isDeclarationForLinker()) + Assert(!GV.hasComdat(), "Declaration may not be in a Comdat!", &GV); } void Verifier::visitGlobalVariable(const GlobalVariable &GV) { diff --git a/test/Verifier/comdat-decl1.ll b/test/Verifier/comdat-decl1.ll new file mode 100644 index 00000000000..aee56b63627 --- /dev/null +++ b/test/Verifier/comdat-decl1.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s + +$v = comdat any +@v = available_externally global i32 0, comdat +; CHECK: Declaration may not be in a Comdat! diff --git a/test/Verifier/comdat-decl2.ll b/test/Verifier/comdat-decl2.ll new file mode 100644 index 00000000000..fcd3d5d0eee --- /dev/null +++ b/test/Verifier/comdat-decl2.ll @@ -0,0 +1,5 @@ +; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s + +$v = comdat any +@v = external global i32, comdat +; CHECK: Declaration may not be in a Comdat!