* ifcvt.c (noce_try_addcc): Handle ifs with 'else' case.
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Oct 2003 13:38:52 +0000 (13:38 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Oct 2003 13:38:52 +0000 (13:38 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72603 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ifcvt.c

index 8f5c802..2b8fc81 100644 (file)
@@ -1,5 +1,9 @@
 2003-10-17  Ulrich Weigand  <uweigand@de.ibm.com>
 
+       * ifcvt.c (noce_try_addcc): Handle ifs with 'else' case.
+
+2003-10-17  Ulrich Weigand  <uweigand@de.ibm.com>
+
        * combine.c (simplify_set): Do not clear out undobuf.other_insn
        already set elsewhere.
 
index 21794b3..fe38060 100644 (file)
@@ -884,10 +884,8 @@ noce_try_addcc (struct noce_if_info *if_info)
   int subtract, normalize;
 
   if (! no_new_pseudos
-      /* Should be no `else' case to worry about.  */
-      && if_info->b == if_info->x
       && GET_CODE (if_info->a) == PLUS
-      && rtx_equal_p (XEXP (if_info->a, 0), if_info->x)
+      && rtx_equal_p (XEXP (if_info->a, 0), if_info->b)
       && (reversed_comparison_code (if_info->cond, if_info->jump)
          != UNKNOWN))
     {
@@ -942,7 +940,7 @@ noce_try_addcc (struct noce_if_info *if_info)
          if (target)
            target = expand_simple_binop (GET_MODE (if_info->x),
                                          subtract ? MINUS : PLUS,
-                                         if_info->x, target, if_info->x,
+                                         if_info->b, target, if_info->x,
                                          0, OPTAB_WIDEN);
          if (target)
            {