I believe this is wrong for OpenCL: `6.3.o. Elements of a struct or union must belong to the same address space. Declaring a struct or union whose elements are in different address spaces is illegal` Although, I'm not sure if anyone actually uses this.. http://llvm-reviews.chandlerc.com/D444