The padding is dictated by C standard and ABI of your target system. LLVM itself has no idea about these rules (since they are for C, not for LLVM IR).
You are responsible to handle all the padding weirdness and bitfield layout, unfortunately. Usually, this is a work of C/C++ frontend (e.g. clang).