https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66512
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Because p may throw. What we miss here is the fact that it should only matter if p throws internally for IL consistency. Of course it still matters for observing other side-effects if p throws and after the transform now does so before side-effects that should be observed otherwise. Consider for (;;) { printf("foo"); g(p()) } and p throwing. So you miss a nothrow attribute or a throw() specification here. const does _not_ imply nothrow.