[pseudo] Squash some warnings. NFC
authorSam McCall <sam.mccall@gmail.com>
Thu, 19 May 2022 06:18:34 +0000 (08:18 +0200)
committerSam McCall <sam.mccall@gmail.com>
Thu, 19 May 2022 06:20:12 +0000 (08:20 +0200)
Explicitly sizing Kind enum suggests that too-large values are allowed,
and that putting it in a bitfield is dangerous.

GCC doesn't like condition ? integer : enum.

clang-tools-extra/pseudo/include/clang-pseudo/Forest.h
clang-tools-extra/pseudo/lib/LRTable.cpp

index 39b3559..c699c4c 100644 (file)
@@ -43,7 +43,7 @@ namespace pseudo {
 // doesn't have parent pointers.
 class alignas(class ForestNode *) ForestNode {
 public:
-  enum Kind : uint8_t {
+  enum Kind {
     // A Terminal node is a single terminal symbol bound to a token.
     Terminal,
     // A Sequence node is a nonterminal symbol parsed from a grammar rule,
index 34e7fce..745ad44 100644 (file)
@@ -97,7 +97,7 @@ LRTable::StateID LRTable::getGoToState(StateID State,
 }
 
 llvm::ArrayRef<LRTable::Action> LRTable::find(StateID Src, SymbolID ID) const {
-  size_t Idx = isToken(ID) ? symbolToToken(ID) : ID;
+  size_t Idx = isToken(ID) ? static_cast<size_t>(symbolToToken(ID)) : ID;
   assert(isToken(ID) ? Idx + 1 < TerminalOffset.size()
                      : Idx + 1 < NontermOffset.size());
   std::pair<size_t, size_t> TargetStateRange =