Summary: | unused result of pure function is not optimized out because of inlining | ||
---|---|---|---|
Product: | gcc | Reporter: | Pali Rohár <pali> |
Component: | ipa | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | Keywords: | lto |
Priority: | P3 | ||
Version: | 12.2.0 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Pali Rohár
2024-08-11 14:01:54 UTC
Dup. *** This bug has been marked as a duplicate of bug 47255 *** 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) ... Hello Andrew, have you checked if this is really duplicate? (In reply to Pali Rohár from comment #3) > Hello Andrew, have you checked if this is really duplicate? That is a different issue all together. The original issue is definitely a dup. The secondary issue looks more like a limitation in LTO on mingw. (In reply to Andrew Pinski from comment #4) > (In reply to Pali Rohár from comment #3) > > Hello Andrew, have you checked if this is really duplicate? > > That is a different issue all together. The original issue is definitely a > dup. > The secondary issue looks more like a limitation in LTO on mingw. Or rather a dup of bug 99373 . |