diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-10 17:16:45 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-05-10 17:16:45 +0000 |
commit | c6269916b3f7ef1c0a1730462ec75bf9c582ca58 (patch) | |
tree | 9cf75cd31e7ddc2ac1c9b87e03b70c22cb90c53e | |
parent | d4fbaef2b0b0ce277a8499d5bdac928f06a0ee1c (diff) | |
download | bcm5719-llvm-c6269916b3f7ef1c0a1730462ec75bf9c582ca58.tar.gz bcm5719-llvm-c6269916b3f7ef1c0a1730462ec75bf9c582ca58.zip |
Simplify LLParser::ParseOptionalLinkage. NFC.
llvm-svn: 269080
-rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index a8f44e982a2..556a2dee3a5 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -1530,6 +1530,37 @@ bool LLParser::ParseOptionalReturnAttrs(AttrBuilder &B) { } } +static unsigned parseOptionalLinkageAux(lltok::Kind Kind, bool &HasLinkage) { + HasLinkage = true; + switch (Kind) { + default: + HasLinkage = false; + return GlobalValue::ExternalLinkage; + case lltok::kw_private: + return GlobalValue::PrivateLinkage; + case lltok::kw_internal: + return GlobalValue::InternalLinkage; + case lltok::kw_weak: + return GlobalValue::WeakAnyLinkage; + case lltok::kw_weak_odr: + return GlobalValue::WeakODRLinkage; + case lltok::kw_linkonce: + return GlobalValue::LinkOnceAnyLinkage; + case lltok::kw_linkonce_odr: + return GlobalValue::LinkOnceODRLinkage; + case lltok::kw_available_externally: + return GlobalValue::AvailableExternallyLinkage; + case lltok::kw_appending: + return GlobalValue::AppendingLinkage; + case lltok::kw_common: + return GlobalValue::CommonLinkage; + case lltok::kw_extern_weak: + return GlobalValue::ExternalWeakLinkage; + case lltok::kw_external: + return GlobalValue::ExternalLinkage; + } +} + /// ParseOptionalLinkage /// ::= /*empty*/ /// ::= 'private' @@ -1544,25 +1575,9 @@ bool LLParser::ParseOptionalReturnAttrs(AttrBuilder &B) { /// ::= 'extern_weak' /// ::= 'external' bool LLParser::ParseOptionalLinkage(unsigned &Res, bool &HasLinkage) { - HasLinkage = false; - switch (Lex.getKind()) { - default: Res=GlobalValue::ExternalLinkage; return false; - case lltok::kw_private: Res = GlobalValue::PrivateLinkage; break; - case lltok::kw_internal: Res = GlobalValue::InternalLinkage; break; - case lltok::kw_weak: Res = GlobalValue::WeakAnyLinkage; break; - case lltok::kw_weak_odr: Res = GlobalValue::WeakODRLinkage; break; - case lltok::kw_linkonce: Res = GlobalValue::LinkOnceAnyLinkage; break; - case lltok::kw_linkonce_odr: Res = GlobalValue::LinkOnceODRLinkage; break; - case lltok::kw_available_externally: - Res = GlobalValue::AvailableExternallyLinkage; - break; - case lltok::kw_appending: Res = GlobalValue::AppendingLinkage; break; - case lltok::kw_common: Res = GlobalValue::CommonLinkage; break; - case lltok::kw_extern_weak: Res = GlobalValue::ExternalWeakLinkage; break; - case lltok::kw_external: Res = GlobalValue::ExternalLinkage; break; - } - Lex.Lex(); - HasLinkage = true; + Res = parseOptionalLinkageAux(Lex.getKind(), HasLinkage); + if (HasLinkage) + Lex.Lex(); return false; } |