[all-commits] [llvm/llvm-project] f7d674: [llvm] Assert two ValIDs are the same kind before ...

PiJoules via All-commits all-commits at lists.llvm.org
Thu Sep 22 15:38:27 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f7d674910d2dadae209f4a93373481c450f089f7
      https://github.com/llvm/llvm-project/commit/f7d674910d2dadae209f4a93373481c450f089f7
  Author: Leonard Chan <leonardchan at google.com>
  Date:   2022-09-22 (Thu, 22 Sep 2022)

  Changed paths:
    M llvm/include/llvm/AsmParser/LLParser.h

  Log Message:
  -----------
  [llvm] Assert two ValIDs are the same kind before comparing

I suspect the reason for why D134234 was failing sometimes is because
"operator<" for a ValID could compare ValIDs of different kinds but have
the same non-active values and return an incorrect result. This is an
issue if I attempt to store ValIDs of different kinds in an std::map but
we compare different "active" values. For example, if I create an
std::map and store some ValIDs of kind t_GlobalName, then I insert a
ValID of kind t_GlobalID, the current "operator<" will see that one of
the operands is a t_GlobalID and compare it against the UIntVal of other
items in the map, but the other items in the map don't set UIntVal
because they're not t_GlobalIDs, so I compare against a
dummy/uninitialized value.

It seems pretty easy to add mixed ValID kinds into an std::map in
LLParser, so this just asserts that when doing the comparison that both
ValIDs are the same kind.

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




More information about the All-commits mailing list