Summary: Const array static usage optimization
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: Windows
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD

--- Comment #0 from 2011-07-19 16:58:20 PDT ---
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

_D4test3barFG1iZi   comdat
        push    EAX
        mov EAX,_D4test6array2xG1i
        imul    EAX,[ESP]
        pop ECX

Is it possible for the compiler for such common case of const array to remove
the mov instruction from the bar () function too?

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to