Richard Biener <richard.guent...@gmail.com> writes:
> Note that combine does not apply because %eax is used multiple
> times.  This also means that for code-size the combining is not a good
> idea.

Though the lea instruction seems rather large, so in fact the code is
a fair bit smaller without it, e.g. as generated by clang/llvm:

clang/llvm 3.1 (-O2 -m32):

00000000 <foo>:
   0:   8b 44 24 08             mov    0x8(%esp),%eax
   4:   8b 4c 24 04             mov    0x4(%esp),%ecx
   8:   8b 14 c1                mov    (%ecx,%eax,8),%edx
   b:   89 15 00 00 00 00       mov    %edx,0x0
  11:   89 04 c1                mov    %eax,(%ecx,%eax,8)
  14:   31 c0                   xor    %eax,%eax
  16:   c3                      ret    

gcc 4.8 20130113 (-O2 -m32):

00000000 <foo>:
   0:   8b 54 24 08             mov    0x8(%esp),%edx
   4:   8d 04 d5 00 00 00 00    lea    0x0(,%edx,8),%eax
   b:   03 44 24 04             add    0x4(%esp),%eax
   f:   8b 08                   mov    (%eax),%ecx
  11:   89 0d 00 00 00 00       mov    %ecx,0x0
  17:   89 10                   mov    %edx,(%eax)
  19:   31 c0                   xor    %eax,%eax
  1b:   c3                      ret    

-miles

-- 
Ich bin ein Virus. Mach' mit und kopiere mich in Deine .signature.

Reply via email to