diff --git a/clang-tools-extra/pseudo/lib/GLR.cpp b/clang-tools-extra/pseudo/lib/GLR.cpp --- a/clang-tools-extra/pseudo/lib/GLR.cpp +++ b/clang-tools-extra/pseudo/lib/GLR.cpp @@ -65,9 +65,14 @@ GSS.addNode(/*State=*/Params.Table.getStartState(Target), /*ForestNode=*/nullptr, {})}; for (const ForestNode &Terminal : Terminals) { - LLVM_DEBUG(llvm::dbgs() << llvm::formatv("Next token {0} (id={1})\n", - G.symbolName(Terminal.symbol()), - Terminal.symbol())); + LLVM_DEBUG(llvm::dbgs() << llvm::formatv( + "Next token {0} (id={1}, line={2})\n", + G.symbolName(Terminal.symbol()), Terminal.symbol(), + Tokens.tokens()[Terminal.startTokenIndex()].Line + 1)); + // No active heads, we fail to parse the input, bail out. + if (NewHeads.empty()) + break; + for (const auto *Head : NewHeads) AddSteps(Head, Terminal.symbol()); NewHeads.clear();