aboutsummaryrefslogtreecommitdiffstats
path: root/lib/AsmParser/LLParser.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-10-06 15:10:43 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-10-06 15:10:43 +0000
commit2def17935c87f5e6b23d899567ef3dd00ed89d48 (patch)
tree78000a447829d54c2c4dfdae66314a83c8d2700a /lib/AsmParser/LLParser.cpp
parentfb7cb838b9f99317e80815f74d1baba530086569 (diff)
downloadexternal_llvm-2def17935c87f5e6b23d899567ef3dd00ed89d48.zip
external_llvm-2def17935c87f5e6b23d899567ef3dd00ed89d48.tar.gz
external_llvm-2def17935c87f5e6b23d899567ef3dd00ed89d48.tar.bz2
Add support for aliases with linkonce_odr.
This will be used to extend constructor aliases in clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192066 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AsmParser/LLParser.cpp')
-rw-r--r--lib/AsmParser/LLParser.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp
index bdc7906..d5c5db1 100644
--- a/lib/AsmParser/LLParser.cpp
+++ b/lib/AsmParser/LLParser.cpp
@@ -627,18 +627,17 @@ bool LLParser::ParseAlias(const std::string &Name, LocTy NameLoc,
unsigned Visibility) {
assert(Lex.getKind() == lltok::kw_alias);
Lex.Lex();
- unsigned Linkage;
LocTy LinkageLoc = Lex.getLoc();
- if (ParseOptionalLinkage(Linkage))
+ unsigned L;
+ if (ParseOptionalLinkage(L))
return true;
- if (Linkage != GlobalValue::ExternalLinkage &&
- Linkage != GlobalValue::WeakAnyLinkage &&
- Linkage != GlobalValue::WeakODRLinkage &&
- Linkage != GlobalValue::InternalLinkage &&
- Linkage != GlobalValue::PrivateLinkage &&
- Linkage != GlobalValue::LinkerPrivateLinkage &&
- Linkage != GlobalValue::LinkerPrivateWeakLinkage)
+ GlobalValue::LinkageTypes Linkage = (GlobalValue::LinkageTypes) L;
+
+ if(!GlobalValue::isExternalLinkage(Linkage) &&
+ !GlobalValue::isLocalLinkage(Linkage) &&
+ !GlobalValue::isWeakLinkage(Linkage) &&
+ !GlobalValue::isLinkOnceLinkage(Linkage))
return Error(LinkageLoc, "invalid linkage type for alias");
Constant *Aliasee;