Rename HasMutableFields to HasMutableSubobject for accuracy.
This bitflag is set whenever the record type has a mutable subobject, regardless of whether that subobject is a direct member, or a member of some base class, or a member of a member, etc. etc. It does not need to be a field of the record type itself.
Rename HasVolatileMember to HasVolatileSubobject for accuracy.
This bitflag is set whenever the record type has a volatile subobject, regardless of whether that subobject is a direct member, or a member of some base class, or a member of a member, etc. etc. It does not need to be a member of the record type itself.
Generally in C++ if we have
struct A { mutable int m; }; struct B { A a; };
we say that a is a "member" or "field" of B; m is a "subobject" of B; but m is neither a "member" nor a "field" of B.
The current naming of these accessors confused me for a little while during the development of a different patch, so I thought I'd submit a diff renaming them after what they actually do, and see if anyone thought it was a good idea. (I don't have commit privs.)