diff options
author | Nico Rieck <nico.rieck@gmail.com> | 2014-01-14 12:38:32 +0000 |
---|---|---|
committer | Nico Rieck <nico.rieck@gmail.com> | 2014-01-14 12:38:32 +0000 |
commit | 55463f4ec19618207dcf07016ad6aa1def429dc4 (patch) | |
tree | 0b3bb45fe7076f7ca661939a405b8c49c3a18631 /lib/IR/Verifier.cpp | |
parent | 62b811443db32e55b37370b421e0f34454417b47 (diff) | |
download | llvm-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.cpp | 22 |
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... |