public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug tree-optimization/94818] New: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations @ 2020-04-28 12:43 felix.von.s at posteo dot de 2020-04-28 13:36 ` [Bug ipa/94818] " rguenth at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: felix.von.s at posteo dot de @ 2020-04-28 12:43 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94818 Bug ID: 94818 Summary: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: felix.von.s at posteo dot de Target Milestone: --- Target: x86_64-linux-gnu In this code: __attribute__((__warning__("argh"))) static void foo(void) { __asm__ ( ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" ); } void bar0(int x) { if (__builtin_constant_p(x)) foo(); } void bar1(int x) { if (__builtin_constant_p(x)) foo(); } No calls to foo are emitted in the final output, and GCC knows this, since no warnings are emitted. However, GCC will still emit a function body for foo, unless either the __asm__ statement is removed or both conditions are changed to integer constant expressions, so that the function is eliminated by one of the inlining passes. (I decided to demonstrate it this way instead of using __attribute__((__noinline__)), just to make sure this is not related to __attribute__((__noinline__)) somehow implying __attribute__((__used__)).) ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug ipa/94818] GCC emits dead bodies of functions whose all calls have been eliminated by optimisations 2020-04-28 12:43 [Bug tree-optimization/94818] New: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations felix.von.s at posteo dot de @ 2020-04-28 13:36 ` rguenth at gcc dot gnu.org 2020-04-29 6:27 ` pinskia at gcc dot gnu.org 2021-07-20 22:23 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: rguenth at gcc dot gnu.org @ 2020-04-28 13:36 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94818 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2020-04-28 CC| |marxin at gcc dot gnu.org Component|tree-optimization |ipa Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. ___builtin_constant_p is only resolved after IPA optimization and at that point unreachable functions can no longer be removed reliably (foo is output before bar0 __builtin_constant_p is resolved). We could add another "IPA" sync point before RTL expansion but not sure if we really want to. We could also see there's no callers to bar0 and bar1 and resolve __builtin_constant_p earlier during IPA. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug ipa/94818] GCC emits dead bodies of functions whose all calls have been eliminated by optimisations 2020-04-28 12:43 [Bug tree-optimization/94818] New: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations felix.von.s at posteo dot de 2020-04-28 13:36 ` [Bug ipa/94818] " rguenth at gcc dot gnu.org @ 2020-04-29 6:27 ` pinskia at gcc dot gnu.org 2021-07-20 22:23 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: pinskia at gcc dot gnu.org @ 2020-04-29 6:27 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94818 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Depends on| |47205, 89139 --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Related to PR 47205, PR 89139 Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47205 [Bug 47205] GCC emits optimized out noinline function https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89139 [Bug 89139] GCC emits code for static functions that aren't used by the optimized code ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug ipa/94818] GCC emits dead bodies of functions whose all calls have been eliminated by optimisations 2020-04-28 12:43 [Bug tree-optimization/94818] New: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations felix.von.s at posteo dot de 2020-04-28 13:36 ` [Bug ipa/94818] " rguenth at gcc dot gnu.org 2020-04-29 6:27 ` pinskia at gcc dot gnu.org @ 2021-07-20 22:23 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: pinskia at gcc dot gnu.org @ 2021-07-20 22:23 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94818 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-07-20 22:23 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-04-28 12:43 [Bug tree-optimization/94818] New: GCC emits dead bodies of functions whose all calls have been eliminated by optimisations felix.von.s at posteo dot de 2020-04-28 13:36 ` [Bug ipa/94818] " rguenth at gcc dot gnu.org 2020-04-29 6:27 ` pinskia at gcc dot gnu.org 2021-07-20 22:23 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).