Indeed, disassembly reveals an allocation (with all three compilers => it's the front-end which generates this crap).

I guess the compiler incorrectly treats { node.value; } as a delegate and copies the node to GC heap.

void foo() {
    int* node = null;
    enum mutable = __traits(compiles, {node.value ;});
}

void main() {
    foo();
}

Reply via email to