A D2 program: enum int[1] array1 = [10]; int foo(int[1] v) { return array1[0] * v[0]; } const int[1] array2 = [10]; int bar(int[1] v) { return array2[0] * v[0]; } void main() {} The asm of the two functions (dmd 2.054, -O -release), inside bar() the contents of array2 are loaded with a mov instruction: _D4test3fooFG1iZi comdat push EAX lea EAX,[EAX*4][EAX] add EAX,EAX pop ECX ret _D4test3barFG1iZi comdat push EAX mov EAX,_D4test6array2xG1i imul EAX,[ESP] pop ECX ret Is it possible for the compiler for such common case of const array to remove the mov instruction from the bar () function too?
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18357 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB