https://gcc.gnu.org/g:9314ee9bb671ceb5a45552ec90f4eb83a5efee89

commit 9314ee9bb671ceb5a45552ec90f4eb83a5efee89
Author: Alexandre Oliva <ol...@gnu.org>
Date:   Fri Nov 15 21:36:47 2024 -0300

    do not assume andor code

Diff:
---
 gcc/gimple-fold.cc | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
index 73a22ad3be59..7d7471e5ed76 100644
--- a/gcc/gimple-fold.cc
+++ b/gcc/gimple-fold.cc
@@ -7983,8 +7983,21 @@ fold_truth_andor_maybe_separate (location_t loc,
       || TREE_CODE_CLASS (rcode) != tcc_comparison)
     return 0;
 
-  code = ((code == TRUTH_AND_EXPR || code == TRUTH_ANDIF_EXPR)
-         ? TRUTH_AND_EXPR : TRUTH_OR_EXPR);
+  switch (code)
+    {
+    case TRUTH_AND_EXPR:
+    case TRUTH_ANDIF_EXPR:
+      code = TRUTH_AND_EXPR;
+      break;
+
+    case TRUTH_OR_EXPR:
+    case TRUTH_ORIF_EXPR:
+      code = TRUTH_OR_EXPR;
+      break;
+
+    default:
+      return 0;
+    }
 
   bool lsignbit = false, rsignbit = false;
   if ((lcode == LT_EXPR || lcode == GE_EXPR)

Reply via email to