[llvm] 3593b5b - [llvm-as] Fix assembling of index with multiple summaries sharing single GUID

Evgeny Leviant via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 22 01:10:54 PST 2020


Author: Evgeny Leviant
Date: 2020-01-22T01:09:13-08:00
New Revision: 3593b5b3e9ce59dc17c26b5d6e77413437fa03f7

URL: https://github.com/llvm/llvm-project/commit/3593b5b3e9ce59dc17c26b5d6e77413437fa03f7
DIFF: https://github.com/llvm/llvm-project/commit/3593b5b3e9ce59dc17c26b5d6e77413437fa03f7.diff

LOG: [llvm-as] Fix assembling of index with multiple summaries sharing single GUID

Differential revision: https://reviews.llvm.org/D73091

Added: 
    llvm/test/Assembler/thinlto-multiple-summaries-for-guid.ll

Modified: 
    llvm/lib/AsmParser/LLParser.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index a5a6ecae9803..902b3ec0cfe3 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -8040,12 +8040,10 @@ bool LLParser::ParseGVEntry(unsigned ID) {
 
   // Have a list of summaries
   if (ParseToken(lltok::kw_summaries, "expected 'summaries' here") ||
-      ParseToken(lltok::colon, "expected ':' here"))
+      ParseToken(lltok::colon, "expected ':' here") ||
+      ParseToken(lltok::lparen, "expected '(' here"))
     return true;
-
   do {
-    if (ParseToken(lltok::lparen, "expected '(' here"))
-      return true;
     switch (Lex.getKind()) {
     case lltok::kw_function:
       if (ParseFunctionSummary(Name, GUID, ID))
@@ -8062,11 +8060,10 @@ bool LLParser::ParseGVEntry(unsigned ID) {
     default:
       return Error(Lex.getLoc(), "expected summary type");
     }
-    if (ParseToken(lltok::rparen, "expected ')' here"))
-      return true;
   } while (EatIfPresent(lltok::comma));
 
-  if (ParseToken(lltok::rparen, "expected ')' here"))
+  if (ParseToken(lltok::rparen, "expected ')' here") ||
+      ParseToken(lltok::rparen, "expected ')' here"))
     return true;
 
   return false;

diff  --git a/llvm/test/Assembler/thinlto-multiple-summaries-for-guid.ll b/llvm/test/Assembler/thinlto-multiple-summaries-for-guid.ll
new file mode 100644
index 000000000000..15052ba99358
--- /dev/null
+++ b/llvm/test/Assembler/thinlto-multiple-summaries-for-guid.ll
@@ -0,0 +1,12 @@
+; Checks that llvm-as/llvm-dis correctly assembles/disassembles index with
+; multiple summaries with single GUID.
+; RUN: llvm-as %s -o - | llvm-dis -o - | FileCheck %s
+
+source_filename = "index.bc"
+
+^0 = module: (path: "main.bc", hash: (3499594384, 1671013073, 3271036935, 1830411232, 59290952))
+; CHECK: ^0 = module: (path: "main.bc", hash: (3499594384, 1671013073, 3271036935, 1830411232, 59290952))
+^1 = module: (path: "[Regular LTO]", hash: (0, 0, 0, 0, 0))
+; CHECK-NEXT: ^1 = module: (path: "[Regular LTO]", hash: (0, 0, 0, 0, 0))
+^2 = gv: (guid: 13351721993301222997, summaries: (function: (module: ^0, flags: (linkage: linkonce_odr, notEligibleToImport: 0, live: 1, dsoLocal: 1, canAutoHide: 1), insts: 1), function: (module: ^1, flags: (linkage: available_externally, notEligibleToImport: 1, live: 1, dsoLocal: 1, canAutoHide: 0), insts: 1)))
+; CHECK-NEXT: ^2 = gv: (guid: 13351721993301222997, summaries: (function: (module: ^0, flags: (linkage: linkonce_odr, notEligibleToImport: 0, live: 1, dsoLocal: 1, canAutoHide: 1), insts: 1), function: (module: ^1, flags: (linkage: available_externally, notEligibleToImport: 1, live: 1, dsoLocal: 1, canAutoHide: 0), insts: 1)))


        


More information about the llvm-commits mailing list