aboutsummaryrefslogtreecommitdiff
path: root/gcc/genconfig.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-09-19 15:55:22 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-09-19 15:55:22 -0400
commit9e87cc8929353fabf59e883fe49005572b8469b0 (patch)
tree58e268349fef0c32cc047fdf5010bf591aa63cee /gcc/genconfig.c
parent9571f079749d8c9aaee24c292270862610260ee0 (diff)
downloadgcc-9e87cc8929353fabf59e883fe49005572b8469b0.zip
gcc-9e87cc8929353fabf59e883fe49005572b8469b0.tar.gz
gcc-9e87cc8929353fabf59e883fe49005572b8469b0.tar.bz2
(walk_insn_part, case IF_THEN_ELSE): Refine when HAVE_CMOVE_FLAG gets set.
From-SVN: r2185
Diffstat (limited to 'gcc/genconfig.c')
-rw-r--r--gcc/genconfig.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/genconfig.c b/gcc/genconfig.c
index 820e1d8..be06d83 100644
--- a/gcc/genconfig.c
+++ b/gcc/genconfig.c
@@ -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;