https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116333

--- Comment #2 from Pali Rohár <pali at kernel dot org> ---
Hello Andrew, you have wrote that this function is not optimized out because of
inlining. I tried to mark _winshowcmd() function with __attribute__((noinline))
but result is similar. Function _winshowcmd() is present in the final
executable but it is not called at all.

It is really a duplicate?

$ objdump -d pure.exe


pure.exe:     file format pei-i386


Disassembly of section .text:

00401000 <__winshowcmd>:
  401000:       55                      push   %ebp
  401001:       31 c0                   xor    %eax,%eax
  401003:       b9 11 00 00 00          mov    $0x11,%ecx
  401008:       89 e5                   mov    %esp,%ebp
  40100a:       57                      push   %edi
  40100b:       8d 7d b4                lea    -0x4c(%ebp),%edi
  40100e:       83 ec 64                sub    $0x64,%esp
  401011:       f3 ab                   rep stos %eax,%es:(%edi)
  401013:       8d 45 b4                lea    -0x4c(%ebp),%eax
  401016:       89 04 24                mov    %eax,(%esp)
  401019:       ff 15 4c 30 40 00       call   *0x40304c
  40101f:       50                      push   %eax
  401020:       b8 0a 00 00 00          mov    $0xa,%eax
  401025:       f6 45 e0 01             testb  $0x1,-0x20(%ebp)
  401029:       74 04                   je     40102f <__winshowcmd+0x2f>
  40102b:       0f b7 45 e4             movzwl -0x1c(%ebp),%eax
  40102f:       8b 7d fc                mov    -0x4(%ebp),%edi
  401032:       c9                      leave  
  401033:       c3                      ret    

00401034 <___main>:
  401034:       c3                      ret    

00401035 <_WinMainCRTStartup>:
  401035:       55                      push   %ebp
  401036:       b8 01 00 00 00          mov    $0x1,%eax
  40103b:       89 e5                   mov    %esp,%ebp
  40103d:       83 ec 18                sub    $0x18,%esp
  401040:       8d 55 f0                lea    -0x10(%ebp),%edx
  401043:       c7 45 f0 0e 20 40 00    movl   $0x40200e,-0x10(%ebp)
  40104a:       c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  401051:       e8 12 00 00 00          call   401068 <_main>
  401056:       c9                      leave  
  401057:       c3                      ret    

00401058 <_GetStartupInfoA@4>:
  401058:       ff 25 4c 30 40 00       jmp    *0x40304c
  40105e:       90                      nop
  40105f:       90                      nop

00401060 <_MessageBoxA@16>:
  401060:       ff 25 54 30 40 00       jmp    *0x403054
  401066:       90                      nop
  401067:       90                      nop

00401068 <_main>:
  401068:       57                      push   %edi
  401069:       8d 7c 24 08             lea    0x8(%esp),%edi
  40106d:       83 e4 f0                and    $0xfffffff0,%esp
  401070:       ff 77 fc                pushl  -0x4(%edi)
  401073:       55                      push   %ebp
  401074:       89 e5                   mov    %esp,%ebp
  401076:       57                      push   %edi
  401077:       83 ec 14                sub    $0x14,%esp
  40107a:       e8 b5 ff ff ff          call   401034 <___main>
  40107f:       c7 44 24 0c 00 00 00    movl   $0x0,0xc(%esp)
  401086:       00 
  401087:       c7 44 24 08 00 20 40    movl   $0x402000,0x8(%esp)
  40108e:       00 
  40108f:       c7 44 24 04 06 20 40    movl   $0x402006,0x4(%esp)
  401096:       00 
  401097:       c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  40109e:       ff 15 54 30 40 00       call   *0x403054
  4010a4:       8b 7d fc                mov    -0x4(%ebp),%edi
  4010a7:       31 c0                   xor    %eax,%eax
  4010a9:       83 ec 10                sub    $0x10,%esp
  4010ac:       c9                      leave  
  4010ad:       8d 67 f8                lea    -0x8(%edi),%esp
  4010b0:       5f                      pop    %edi
  4010b1:       c3                      ret    
  4010b2:       90                      nop
  4010b3:       90                      nop

004010b4 <__CTOR_LIST__>:
  4010b4:       ff                      (bad)  
  4010b5:       ff                      (bad)  
  4010b6:       ff                      (bad)  
  4010b7:       ff 00                   incl   (%eax)
  4010b9:       00 00                   add    %al,(%eax)
        ...

004010bc <__DTOR_LIST__>:
  4010bc:       ff                      (bad)  
  4010bd:       ff                      (bad)  
  4010be:       ff                      (bad)  
  4010bf:       ff 00                   incl   (%eax)
  4010c1:       00 00                   add    %al,(%eax)
        ...

Reply via email to