summaryrefslogtreecommitdiff
path: root/lib/IR/Verifier.cpp
diff options
context:
space:
mode:
authorNico Rieck <nico.rieck@gmail.com>2014-01-14 12:38:32 +0000
committerNico Rieck <nico.rieck@gmail.com>2014-01-14 12:38:32 +0000
commit55463f4ec19618207dcf07016ad6aa1def429dc4 (patch)
tree0b3bb45fe7076f7ca661939a405b8c49c3a18631 /lib/IR/Verifier.cpp
parent62b811443db32e55b37370b421e0f34454417b47 (diff)
downloadllvm-55463f4ec19618207dcf07016ad6aa1def429dc4.tar.gz
llvm-55463f4ec19618207dcf07016ad6aa1def429dc4.tar.bz2
llvm-55463f4ec19618207dcf07016ad6aa1def429dc4.tar.xz
Revert "Decouple dllexport/dllimport from linkage"
Revert this for now until I fix an issue in Clang with it. This reverts commit r199204. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199207 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR/Verifier.cpp')
-rw-r--r--lib/IR/Verifier.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp
index d8e5c89598..9e150e8575 100644
--- a/lib/IR/Verifier.cpp
+++ b/lib/IR/Verifier.cpp
@@ -421,12 +421,16 @@ void Verifier::visitGlobalValue(GlobalValue &GV) {
Assert1(!GV.isDeclaration() ||
GV.isMaterializable() ||
GV.hasExternalLinkage() ||
+ GV.hasDLLImportLinkage() ||
GV.hasExternalWeakLinkage() ||
(isa<GlobalAlias>(GV) &&
(GV.hasLocalLinkage() || GV.hasWeakLinkage())),
- "Global is external, but doesn't have external or weak linkage!",
+ "Global is external, but doesn't have external or dllimport or weak linkage!",
&GV);
+ Assert1(!GV.hasDLLImportLinkage() || GV.isDeclaration(),
+ "Global is marked as dllimport, but not external", &GV);
+
Assert1(!GV.hasAppendingLinkage() || isa<GlobalVariable>(GV),
"Only global variables can have appending linkage!", &GV);
@@ -452,7 +456,8 @@ void Verifier::visitGlobalVariable(GlobalVariable &GV) {
&GV);
}
} else {
- Assert1(GV.hasExternalLinkage() || GV.hasExternalWeakLinkage(),
+ Assert1(GV.hasExternalLinkage() || GV.hasDLLImportLinkage() ||
+ GV.hasExternalWeakLinkage(),
"invalid linkage type for global declaration", &GV);
}
@@ -497,11 +502,6 @@ void Verifier::visitGlobalVariable(GlobalVariable &GV) {
}
}
- Assert1(!GV.hasDLLImportStorageClass() ||
- (GV.isDeclaration() && GV.hasExternalLinkage()) ||
- GV.hasAvailableExternallyLinkage(),
- "Global is marked as dllimport, but not external", &GV);
-
if (!GV.hasInitializer()) {
visitGlobalValue(GV);
return;
@@ -1078,7 +1078,8 @@ void Verifier::visitFunction(Function &F) {
if (F.isMaterializable()) {
// Function has a body somewhere we can't see.
} else if (F.isDeclaration()) {
- Assert1(F.hasExternalLinkage() || F.hasExternalWeakLinkage(),
+ Assert1(F.hasExternalLinkage() || F.hasDLLImportLinkage() ||
+ F.hasExternalWeakLinkage(),
"invalid linkage type for function declaration", &F);
} else {
// Verify that this function (which has a body) is not named "llvm.*". It
@@ -1104,11 +1105,6 @@ void Verifier::visitFunction(Function &F) {
if (F.hasAddressTaken(&U))
Assert1(0, "Invalid user of intrinsic instruction!", U);
}
-
- Assert1(!F.hasDLLImportStorageClass() ||
- (F.isDeclaration() && F.hasExternalLinkage()) ||
- F.hasAvailableExternallyLinkage(),
- "Function is marked as dllimport, but not external.", &F);
}
// verifyBasicBlock - Verify that a basic block is well formed...