void init(int n, int a[n]) { int i; for(i = 0; i < n; i++) { a[i] = 5; } }
Not optimized code generated. (doesn't use scaled index for the array element):
init: pushl %ebp movl %esp, %ebp subl $16, %esp movl $0, -4(%ebp) ; i: -4(%ebp), i = 0 jmp .L2 ; goto L2 .L3: movl -4(%ebp), %eax ; %eax: i sall $2, %eax ; %eax: i << 2 = 4 * i addl 12(%ebp), %eax ; %eax: 4 * i + address(a[0]) movl $5, (%eax) ; a[i] = 5 addl $1, -4(%ebp) ; i++ .L2: movl -4(%ebp), %eax ; cmpl 8(%ebp), %eax ; if i < n goto L3 jl .L3 leave ret