Skip to content
This repository has been archived by the owner on Jan 1, 2023. It is now read-only.

Commit

Permalink
[ThinLTO] Fix unreachable code when parsing summary entries.
Browse files Browse the repository at this point in the history
Summary:
Early returns were causing some code to be skipped. This was missed
since the summary entries are typically at the end of the llvm assembly
file.

Fixes PR41663.

Reviewers: RKSimon, wristow

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61355

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359697 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
teresajohnson committed May 1, 2019
1 parent f47d703 commit 79dab6d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
14 changes: 9 additions & 5 deletions lib/AsmParser/LLParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -821,19 +821,23 @@ bool LLParser::ParseSummaryEntry() {
if (!Index)
return SkipModuleSummaryEntry();

bool result = false;
switch (Lex.getKind()) {
case lltok::kw_gv:
return ParseGVEntry(SummaryID);
result = ParseGVEntry(SummaryID);
break;
case lltok::kw_module:
return ParseModuleEntry(SummaryID);
result = ParseModuleEntry(SummaryID);
break;
case lltok::kw_typeid:
return ParseTypeIdEntry(SummaryID);
result = ParseTypeIdEntry(SummaryID);
break;
default:
return Error(Lex.getLoc(), "unexpected summary kind");
result = Error(Lex.getLoc(), "unexpected summary kind");
break;
}
Lex.setIgnoreColonInIdentifiers(false);
return false;
return result;
}

static bool isValidVisibilityForLinkage(unsigned V, unsigned L) {
Expand Down
4 changes: 4 additions & 0 deletions test/Assembler/thinlto-summary.ll
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,7 @@
; CHECK: ^26 = typeid: (name: "_ZTS1A", summary: (typeTestRes: (kind: allOnes, sizeM1BitWidth: 7), wpdResolutions: ((offset: 0, wpdRes: (kind: branchFunnel)), (offset: 8, wpdRes: (kind: singleImpl, singleImplName: "_ZN1A1nEi")), (offset: 16, wpdRes: (kind: indir, resByArg: (args: (1, 2), byArg: (kind: indir, byte: 2, bit: 3), args: (3), byArg: (kind: uniformRetVal, info: 1), args: (4), byArg: (kind: uniqueRetVal, info: 1), args: (5), byArg: (kind: virtualConstProp))))))) ; guid = 7004155349499253778
; CHECK: ^27 = typeid: (name: "_ZTS1D", summary: (typeTestRes: (kind: byteArray, sizeM1BitWidth: 0))) ; guid = 9614786172484273522
; CHECK: ^28 = typeid: (name: "_ZTS1E", summary: (typeTestRes: (kind: unsat, sizeM1BitWidth: 0))) ; guid = 17437243864166745132

; Make sure parsing of a non-summary entry containing a ":" does not fail
; after summary parsing, which handles colons differently.
!0 = !DIFile(filename: "thinlto-summary.ll", directory: "", source: "")

0 comments on commit 79dab6d

Please sign in to comment.