https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80032
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2017-03-13 Target Milestone|--- |6.4 Summary|C++ excessive stack usage |[6/7 Regression] C++ |(no stack reuse) |excessive stack usage (no | |stack reuse) Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- test::db::ManagedObjectConst::ManagedObjectConst (&D.2393, _1); test::db::FieldInfo::FieldInfo (&D.2394, &D.2393, 11, 0); D.2393 (and other temporaries from other uses) live throughout the whole function (no clobbers). With GCC 5 we have _64 = test::db::ManagedObjectConst::getFieldDefault (_59, 11, 0); test::db::ManagedObjectConst::ManagedObjectConst (&D.2187, _59); test::db::FieldInfo::FieldInfo (&D.2188, &D.2187, 11, 0); _68 = test::db::compare (&D.2188, _64); D.2188 ={v} {CLOBBER}; D.2187 ={v} {CLOBBER}; if (_68 != 0) goto <bb 5>; so they have clobbers. For trunk ehcleanup1 removes them.