// { dg-additional-options "-mavx" { target avx_runtime } } // { dg-do run } // { dg-skip-if "needs gcc/config.d" { ! d_runtime } } __gshared int testsroa_x; template SROA(T1, T2) { struct FPoint { T1 x; T2 y; } void sroa(FPoint p1, ref FPoint quad) { quad = FPoint(p1.x, p1.y); } void testit() { FPoint p1 = FPoint(1, 2); FPoint quad; sroa(p1, quad); if (quad != p1) { assert(0); } ++testsroa_x; } } void main() { SROA!(int, int ).testit(); SROA!(int, float).testit(); SROA!(float, float).testit(); SROA!(float, int ).testit(); SROA!(long, long ).testit(); SROA!(long, double).testit(); SROA!(double, double).testit(); SROA!(double, long ).testit(); }