The existing (as I write this) answer and comments, while partially correct, miss the point of this optimization. It is to replace two instructions (working with 32-bit data) with one instruction (working with 64-bit data). This results in a very slight reduction in code size and probably execution time.
The compiler is initializing both variables with one 64-bit instruction (since they share consecutive memory addresses). The variables are separate, and will be accessed separately. No shifting or masking is needed.
This is frequently seen in constructors when many members are initialized. A frequent case is with zero initialization, where the compiler will zero out a register then use that one value to initialize multiple members, combining writes to consecutive memory addresses with a larger single write (for example, by writing a 16-bit short zero value instead of two 8-bit ones).
intis a property of your program, not of the resulting machine code. It's not really appropriate to call this "combining", because the before and after are parts of completely different domains.