diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2015-07-05 20:52:40 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-07-05 20:52:40 +0000 |
| commit | 46eb0f539c0e12c343c0772085e9bf62cd55763b (patch) | |
| tree | 2b0cf6e17712378ed0a4fc5390b11db04da08e86 | |
| parent | 6a9d1774d093697cb4e46287f58cf0d483304f51 (diff) | |
| download | bcm5719-llvm-46eb0f539c0e12c343c0772085e9bf62cd55763b.tar.gz bcm5719-llvm-46eb0f539c0e12c343c0772085e9bf62cd55763b.zip | |
Verifier: Forbid comdats on linker declarations.
Differential Revision: http://reviews.llvm.org/D10945
llvm-svn: 241414
| -rw-r--r-- | llvm/lib/IR/Verifier.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/Verifier/comdat-decl1.ll | 5 | ||||
| -rw-r--r-- | llvm/test/Verifier/comdat-decl2.ll | 5 |
3 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 3c61165768f..cf88e644cea 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/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/llvm/test/Verifier/comdat-decl1.ll b/llvm/test/Verifier/comdat-decl1.ll new file mode 100644 index 00000000000..aee56b63627 --- /dev/null +++ b/llvm/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/llvm/test/Verifier/comdat-decl2.ll b/llvm/test/Verifier/comdat-decl2.ll new file mode 100644 index 00000000000..fcd3d5d0eee --- /dev/null +++ b/llvm/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! |

