https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86570
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- We used to propagate conditional equivalences as copies from DOM for example. Not sure if that was disabled deliberately or by accident but let me say that propagating conditional equivalences as copies causes multiple wrong-code issues. This bug asks for the sincos transform to happen in a place with appropriate data-flow like PRE / code-hoisting. Basically you make sincos() available at places that compute sin or cos and then let PRE / code-hoisting do the required insertion. Elimination then picks the proper result. You "just" need to demote sincos back to sin or cos if either result is unused (a useful transform independently).