i386: We can change 'lea 0(%ebp),r' to 'mov %ebp,r'
commitab24aaeca303abadd987c2a4ab3a56efe755c37c
authorKirill Smelkov <kirr@navytux.spb.ru>
Thu, 15 Nov 2012 20:04:56 +0000 (16 00:04 +0400)
committerKirill Smelkov <kirr@navytux.spb.ru>
Fri, 16 Nov 2012 06:22:45 +0000 (16 10:22 +0400)
treee7b682064790846ebc4203a6d7c54bdf0a2f5428
parentb2a02961b4407ca76db5a66ca5ae855cbfba4e8e
i386: We can change 'lea 0(%ebp),r'  to  'mov %ebp,r'

Because that mov is 1 byte shorter, look:

    int *func()
    {
        return __builtin_frame_address(0);
    }

before patch:

00000000 <func>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   81 ec 00 00 00 00       sub    $0x0,%esp
   9:   8d 45 00                lea    0x0(%ebp),%eax   // <- here
   c:   e9 00 00 00 00          jmp    11 <func+0x11>
  11:   c9                      leave
  12:   c3                      ret

after patch:

00000000 <func>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   81 ec 00 00 00 00       sub    $0x0,%esp
   9:   89 e8                   mov    %ebp,%eax        // <- here
   b:   e9 00 00 00 00          jmp    10 <func+0x10>
  10:   c9                      leave
  11:   c3                      ret
i386-gen.c