https://gcc.gnu.org/g:55f6f9a232b9203cddab5420a8b4dedd8b578ed4
commit 55f6f9a232b9203cddab5420a8b4dedd8b578ed4 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Wed May 14 11:00:31 2025 -0400 Try to fix crash #2 2025-05-14 Michael Meissner <meiss...@linux.ibm.com> gcc/ PR target/118541 * config/rs6000/rs6000.cc (rs6000_reverse_condition): Update test. xs Diff: --- gcc/config/rs6000/rs6000.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 210443b05729..c41a58545d41 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -15379,14 +15379,19 @@ rs6000_reverse_condition (machine_mode mode, cmove, and the x{s,v}cmp{eq,gt,ge}{dp,qp} instructions will trap if one of the arguments is a signalling NaN. */ - if (mode == CCFPmode - && (code == UNLT || code == UNLE || code == UNGT || code == UNGE - || code == UNEQ || code == LTGT)) + if (mode == CCFPmode) { - if (ordered_cmp_ok == rev_cond_ordered::no_ordered) - return UNKNOWN; + if (code == UNLT || code == UNLE || code == UNGT || code == UNGE + || code == UNEQ || code == LTGT) + { + if (ordered_cmp_ok == rev_cond_ordered::no_ordered) + return UNKNOWN; + + return reverse_condition_maybe_unordered (code); + } - return reverse_condition_maybe_unordered (code); + else if (!flag_finite_math_only) + return reverse_condition_maybe_unordered (code); } return reverse_condition (code);