diff options
author | Teresa Johnson <tejohnson@google.com> | 2018-08-14 01:49:33 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2018-08-14 01:49:33 +0000 |
commit | c7816800d87f848907b1c86d6fc614ad03585c46 (patch) | |
tree | abacefb3e72eb04f6753b5def1fd1d0d13d39c79 /llvm/lib/AsmParser | |
parent | 40e7663b1fca58b099c1cb1d5278f368494ea46d (diff) | |
download | bcm5719-llvm-c7816800d87f848907b1c86d6fc614ad03585c46.tar.gz bcm5719-llvm-c7816800d87f848907b1c86d6fc614ad03585c46.zip |
[ThinLTO] Handle optional args in assembly format for ConstVCalls
Summary:
The AsmWriter was only writing the Args for a ConstVCall if it was
non-empty, however, the LLParser was always expecting it. To aid
in making it optional, surround the ConstVCall VFuncId and Args in
parentheses when writing, then make the Args optional when reading.
Reviewers: pcc
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D49960
llvm-svn: 339637
Diffstat (limited to 'llvm/lib/AsmParser')
-rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 7cf74dd16f5..8eede0a72eb 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -8027,12 +8027,18 @@ bool LLParser::ParseConstVCallList( } /// ConstVCall -/// ::= VFuncId, Args +/// ::= '(' VFuncId ',' Args ')' bool LLParser::ParseConstVCall(FunctionSummary::ConstVCall &ConstVCall, IdToIndexMapType &IdToIndexMap, unsigned Index) { - if (ParseVFuncId(ConstVCall.VFunc, IdToIndexMap, Index) || - ParseToken(lltok::comma, "expected ',' here") || - ParseArgs(ConstVCall.Args)) + if (ParseToken(lltok::lparen, "expected '(' here") || + ParseVFuncId(ConstVCall.VFunc, IdToIndexMap, Index)) + return true; + + if (EatIfPresent(lltok::comma)) + if (ParseArgs(ConstVCall.Args)) + return true; + + if (ParseToken(lltok::rparen, "expected ')' here")) return true; return false; |