I have what appears to be an alignment/struct padding bug. An i64 is not
correctly aligned to the 8-byte boundary, and this results in a mismatched
struct size between C and LLVM. We are currently running 3.8, and did not see
this bug in 3.5.
LLVM needs to be provided with a datalayout to calculate correct
struct offsets, and for historical reasons the default alignment
requirement for i64 is only 32-bits. I suspect you're just relying on
this default, you should be able to crib the correct layout from a
Clang-compiled C file and use Module::setDataLayout to fix it.