This revision refactors the structure of the operand storage such that there is no additional memory cost for resizable operand lists until it is required. This is done by using two different internal representations for the operand storage:
- One using trailing operands
- One using a dynamically allocated std::vector<OpOperand>
This allows for removing the resizable operand list bit, and will free up APIs from needing to workaround non-resizable operand lists.
Depends On D78854
Using a std::vector adds an extra indirection, you didn't think it was worth having a vector with inlined storage?