For example:
union M256 { double d; __m256 m; }; extern void foo1(union M256 A); union M256 m1; void test() { foo1(m1); }
clang will pass it through stack because because the judgement: Size != getContext().getTypeSize(i->getType()) will return true.
This is not correct for union type.
Also, I think there are some problems on comments. I did some change.
Is there not a isUnion() or isUnionType()?