[Bug tree-optimization/111469] [14 Regression] Wrong code at -Os on x86_64-linux-gnu since r14-573-g69f1a8af45
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 26 14:55:44 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111469
--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pinskia@gcc.gnu.org>:
https://gcc.gnu.org/g:68fa82e2d8f868a233103102dff2449a416bc566
commit r14-4279-g68fa82e2d8f868a233103102dff2449a416bc566
Author: Andrew Pinski <apinski@marvell.com>
Date: Thu Sep 21 03:05:17 2023 +0000
PHIOPT: Fix minmax_replacement for three way
So when diamond bb support was added to minmax_replacement in
r13-1950-g9bb19e143cfe,
the code was not expecting the alt_middle_bb not to exist if it was empty
(for threeway_p).
So when factor_out_conditional_conversion was used to factor out
conversions, it turns out
the assumption for alt_middle_bb to be wrong and we ended up with
threeway_p being true but
having middle_bb being empty but alt_middle_bb not being empty which causes
wrong code in
many cases.
This patch fixes the issue by adding a test for the 2 cases where the
assumption on
threeway_p case having the other bb being empty.
Changes made:
v2: Fix test for `(a <= u) b = MAX(a, d) else b = u`.
Note my plan for GCC 15 is remove minmax_replacement as match.pd will catch
all cases
at that point.
OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
PR tree-optimization/111469
gcc/ChangeLog:
* tree-ssa-phiopt.cc (minmax_replacement): Fix
the assumption for the `non-diamond` handling cases
of diamond code.
gcc/testsuite/ChangeLog:
* gcc.c-torture/execute/pr111469-1.c: New test.
More information about the Gcc-bugs
mailing list