https://issues.dlang.org/show_bug.cgi?id=16699
--- Comment #2 from hst...@quickfur.ath.cx --- Looking at the assembly, it seems like a codegen bug. The static array is actually correctly initialized with the return value, but when scope(exit){} is uncommented, the return value (%eax) is never set, thus it's left as a garbage value. When scope(exit){} is commented out, the return value is (correctly) loaded into %eax and the caller is able to receive the right value. --