Bug 6350 – Const array static usage optimization

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2011-07-19T16:58:20Z
Last change time
2024-12-13T17:55:53Z
Keywords
performance
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: dmd#18357 →

Comments

Comment #0 by bearophile_hugs — 2011-07-19T16:58:20Z
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?
Comment #1 by robert.schadek — 2024-12-13T17:55:53Z
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