void init(int n, int a[n]) { int i; for(i = 0; i < n; i++) { a[i] = 5; } }
Optimized code generated (uses scaled index for the array element):
( gcc -O2 -S init.c)
init: pushl %ebp movl %esp, %ebp movl 8(%ebp), %ecx ; %ecx: n movl 12(%ebp), %edx ; %edx: address(a[0]) testl %ecx, %ecx ; jle .L5 ; if (n <= 0) goto L5 xorl %eax, %eax ; %eax: i = 0 .L4: movl $5, (%edx,%eax,4) ; a[i] = 5 addl $1, %eax ; i++ cmpl %ecx, %eax ; jne .L4 ; if (i != n) goto L4 .L5: popl %ebp ret