https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113189
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Other examples where the negative can be removed: ``` int foo(int a) { return -a * (-a * a); } int bar(int a) { return (-a * -a) * a; } int foo1(int a, int b, int c) { return -a * (-b * c); } ``` bar is handled at the gimple level but foo and foo1 are not.