d不应延迟初化和赋值小数组
// dmd -betterC
extern(C) void main(int argc, char** argv)
{
int[4] arr = 1;
}
这是个少得可怜的四个32位存储.把它推导为*调用函数*是不必要的,编译器应该只需在此发出四个存储.
这不仅适合int类型,其他内置类型也会受益.避免函数调用的上限可能高达512位(对应当前SIMD宽度).
查看当前主分支,看到了吗?没有memset32!:
_D4testQfFZv:
0000: 55 push RBP
0001: 48 8B EC mov RBP,RSP
0004: 48 83 EC 10 sub RSP,010h
0008: 48 B8 01 00 00 00 00 mov RAX,0100000001h
0012: 48 89 45 F0 mov -010h[RBP],RAX
0016: 48 89 45 F8 mov -8[RBP],RAX
001a: C9 leave
001b: C3 ret
浙公网安备 33010602011771号