Another test case: import core.simd: double2; struct Foo { double2 x; this(uint) { x = [0.0, 0.0]; } } void main() { Foo y = Foo(); } ldmd2 gives: fpext source and destination must both be a vector or neither %tmp1 = fpext double 0x7FFC000000000000 to <2 x double> Broken module found, compilation aborted! Bye, bearophile