https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38960
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- Note that a not too disruptive "implementation" of the dependences would be to add outgoing abnormal edges to the fenv* calls. Not too disruptive in terms of implementation - the effect on code generation might be very noticable though (note that all calls to functions that might call fenv* functions themselves are subject to the same treatment). Of course there's the (existing) issue of RTL expansion not maintaining abnormal edges. You can experiment with this by declaring the fenv* functions with __attribute__((returns_twice)). Note w/o also having incoming abnormal edges this might not be a full barrier for downward motion.