Comment #0 by thomas.bockman — 2019-07-10T19:48:55Z
import std.stdio;
struct Vec3Fast {
__vector(float[4]) raw;
this(const(float[3]) value...) inout pure @safe nothrow @nogc {
__vector(float[4]) raw;
raw[0 .. 3] = value[];
raw[3] = 0.0f;
this.raw = raw;
}
}
void main() {
static immutable Vec3Fast v = Vec3Fast( 1.0f, 2.0f, 3.0f );
static foreach(d; 0 .. 4)
write(v.raw[d], " ");
}
With CTFE, the above prints "nan nan nan nan ", which is wrong. If I remove the `static immutable`, it prints "1 2 3 0" as it should.
@WalterBright created dlang/dmd pull request #12057 "fix Issue 20041 - CTFE incorrect result with __vector" fixing this issue:
- fix Issue 20041 - CTFE incorrect result with __vector
https://github.com/dlang/dmd/pull/12057
Comment #3 by dlang-bot — 2020-12-28T17:57:18Z
dlang/dmd pull request #12057 "fix Issue 20041 - CTFE incorrect result with __vector" was merged into master:
- 716b3e0df17f568f31ffb264390d96ee28485db9 by Walter Bright:
fix Issue 20041 - CTFE incorrect result with __vector
https://github.com/dlang/dmd/pull/12057