https://issues.dlang.org/show_bug.cgi?id=18034
[email protected] changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #1 from [email protected] --- The problem is quite subtle, after the glocal pass the following code ``` ushort8 v=ushort8(check); ubyte16 ok=__simd(XMM.PCMPEQW, control, v); ``` is turned into ``` ubyte16 ok=__simd(XMM.PCMPEQW, control, (ushort8 v = ushort8(check)); ``` and since `v' isn't used anywhere else in the code the rmdeadass pass removes the dead assignment by turning the expression into ``` ubyte16 ok=__simd(XMM.PCMPEQW, control, (<bogus>, void16(check))); ``` Now, the ushort8 -> void16 conversion happens because that's the type of the third argument of the __simd function and, as a result, the vector is initialized with the wrong elements, leading to the failure reported above. --
