When bit-field data was stored in a Scalar in ValueObjectChild during UpdateValue() it was extracting the bit-field value. Later on in lldb_private::DumpDataExtractor(…) we were again attempting to extract the bit-field:
s->Printf("%" PRIu64, DE.GetMaxU64Bitfield(&offset, item_byte_size, item_bit_size, item_bit_offset));
which would then not obtain the correct value. This will remove the extra extraction in UpdateValue().
We hit this specific case when values are passed in registers, which we could only reproduce in an optimized build.
Why remove the code in ValueObject rather than avoid re-extracting at printing time? I'm not sure which one is correct. If you get your hands on a ValueObject for the field in your test, what will GetValueAsUnsigned return? it should give the correct field value.