https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80210
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |bergner at gcc dot gnu.org --- Comment #6 from Peter Bergner <bergner at gcc dot gnu.org> --- I have a patch I'm testing. The problem is that rs6000_set_current_function() is not clearing the rs6000_previous_fndecl cache correctly when it needs to. With the test case, we notice that rs6000_previous_fndecl is set (when it shouldn't be) and we end up restoring options from it which incorrectly disable HW sqrt leading to the ICE. The current code is also a rats nest and hard to read/understand, so the patch I'm testing is modeled on s390's version of the same function which is much cleaner and correctly clears out the rs6000_previous_fndecl when it needs to.