https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118483
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |5.1.0 Known to work| |4.9.4 Target Milestone|--- |12.5 Target| |aarch64 Summary|Missed optimization due to |[12/13/14/15 Regression] |cast being used more than |Missed optimization due to |once |cast being used more than | |once --- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- On accident I found this a regression which can be fixed via this patch: ``` int d; int f(int b) { int e = b == 0; d = e; int l = !e; if (l == e) __builtin_abort (); } ``` The abort used to be optimized out for aarch64 in GCC 4.9.4 but in GCC 5 could not any more because !e is turned into `b != 0` starting in GCC 5. So I do think I can submit it under the stage 4 rules ...