The current implementation assumes that all pointers used in the initialization of an aggregate are aligned according to the pointer size of the target; that might not be so if the object is packed. In that case, an array of .u8 should be used and pointers should be decorated with the mask() operator.
The operator was introduced in PTX ISA 7.1, so an error is issued if the case is detected for an earlier version.
Nit: we would use llvm::all_of(symbolPosInBuffer, ...) and make it a bit more concise.