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.