compiler/types: Don't place members in the previous substruct's end padding
With the following structures :
struct StructA
{
uint64_t value0;
uint8_t value1;
};
struct StructB
{
uint64_t value2;
};
struct TopStruct
{
union
{
struct StructA a;
struct StructB b;
} union_a_b;
uint8_t value3;
};
Currently offsetof(struct TopStruct, value3) = 9
. While the same code
on the CPU gives offsetof(struct TopStruct, value3) = 16
.
This is impacting OpenCL kernels we're trying to use to build acceleration structures.
Cc: mesa-stable Signed-off-by: Lionel Landwerlin lionel.g.landwerlin@intel.com