From 2e24b7b0d45f40529c2f79c67ac789d350588b98 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Fri, 20 Feb 2015 19:58:48 +0000 Subject: [PATCH] Verifier: Unused comdats might not have a corresponding GV This fixes PR22646. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230051 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/Verifier.cpp | 9 +-------- test/Verifier/comdat3.ll | 5 +++++ 2 files changed, 6 insertions(+), 8 deletions(-) create mode 100644 test/Verifier/comdat3.ll diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index 43a023ec7c0..d01e1389436 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -793,16 +793,9 @@ void Verifier::visitMDImportedEntity(const MDImportedEntity &N) { } void Verifier::visitComdat(const Comdat &C) { - // All Comdat::SelectionKind values other than Comdat::Any require a - // GlobalValue with the same name as the Comdat. - const GlobalValue *GV = M->getNamedValue(C.getName()); - if (C.getSelectionKind() != Comdat::Any) - Assert1(GV, - "comdat selection kind requires a global value with the same name", - &C); // The Module is invalid if the GlobalValue has private linkage. Entities // with private linkage don't have entries in the symbol table. - if (GV) + if (const GlobalValue *GV = M->getNamedValue(C.getName())) Assert1(!GV->hasPrivateLinkage(), "comdat global value has private linkage", GV); } diff --git a/test/Verifier/comdat3.ll b/test/Verifier/comdat3.ll new file mode 100644 index 00000000000..28df930d9dd --- /dev/null +++ b/test/Verifier/comdat3.ll @@ -0,0 +1,5 @@ +; This used to be invalid, but now it's valid. Ensure the verifier +; doesn't reject it. +; RUN: llvm-as %s -o /dev/null + +$v = comdat largest -- 2.34.1