summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/recog.c')
-rwxr-xr-xgcc/recog.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 6abb8aa..3c112d1 100755
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -548,6 +548,12 @@ validate_replace_rtx_1 (loc, from, to, object)
enum machine_mode is_mode = GET_MODE (to);
int pos = INTVAL (XEXP (x, 2));
+ if (code == ZERO_EXTRACT)
+ {
+ wanted_mode = insn_operand_mode[(int) CODE_FOR_extzv][1];
+ if (wanted_mode == VOIDmode)
+ wanted_mode = word_mode;
+ }
/* If we have a narrower mode, we can do something. */
if (wanted_mode != VOIDmode