In https://reviews.llvm.org/D149445, it was lowered from 32 to 16bits, which broke an internal project of ours. The relevant code being compiled is a fairly large nested switch that results in a PHI node with 65k+ operands, which can't easily be turned into a table for perf reasons.
This change unifies NumOperands, Flags, and AsmPrinterFlags into a packed 7-byte struct, which CapOperands can follow as the 8th byte, rounding it up to a nice alignment before the Info field.
rdar://111217742&109362033
Why do we need the packed struct wrapper here? Doesn't defining these bitfields directly in the class work?