]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/genconfig.c
(walk_insn_part, case IF_THEN_ELSE): Refine when HAVE_CMOVE_FLAG gets set.
[gcc.git] / gcc / genconfig.c
index 820e1d850bfba49ff7e39e9615277e1d0ab078cb..be06d832a35aada1e63e73db0da41f3cb7ae0d3b 100644 (file)
@@ -126,7 +126,15 @@ walk_insn_part (part, recog_p, non_pc_set_src)
       return;
 
     case IF_THEN_ELSE:
-      if (recog_p && non_pc_set_src)
+      /* Only consider this machine as having a conditional move if the
+        two arms of the IF_THEN_ELSE are both MATCH_OPERAND.  Otherwise,
+        we have some specific IF_THEN_ELSE construct (like the doz
+        instruction on the RS/6000) that can't be used in the general
+        context we want it for.  */
+
+      if (recog_p && non_pc_set_src
+         && GET_CODE (XEXP (part, 1)) == MATCH_OPERAND
+         && GET_CODE (XEXP (part, 2)) == MATCH_OPERAND)
        have_cmove_flag = 1;
       break;
 
This page took 0.0307269999999999 seconds and 5 git commands to generate.