https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86214
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target Milestone|--- |8.2 Summary|[8 Regression] Strongly |[8/9 Regression] Strongly |increased stack usage |increased stack usage Alexander Monakov <amonakov at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2018-06-21 CC| |amonakov at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Inlining decisions are not so different between 7/8, the main difference is gcc-8 translates b::x() into __builtin_unreachable and warns accordingly: warning: no return statement in function returning non-void [-Wreturn-type] b x(b) {} ^ and with that change gcc-8 no longer manages to prove that big arrays have non-overlapping lifetimes. If I change the source to well-formed 'void x(b) {}', it compiles as desired. So, assuming the original MySQL source is free of that warning, the testcase is too aggressively reduced and no longer reflects the original issue. Can you please re-reduce?