https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99234
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu.org, | |gingold at gcc dot gnu.org, | |jyong at gcc dot gnu.org --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So the *.optimized dump shows that the division is CSEd by SCCVN the same way as on Linux, so it is all about the 1/3.0 result living in the %xmm6 register and exception being thrown in some callee and caught in the same function as the %xmm6 register is set and later used. I know nothing about Windows SEH, so CCing some people who have touched it in the last few years, from the quick skim at the assembly EH is the only possibility how the proper value in the %xmm6 register wouldn't be restored.