summaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-15 22:47:10 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-15 22:47:10 +0000
commit519e577727b279000fbf3afdaecdab5700189de2 (patch)
treeed903d8c350727df2bf1f53c6551d8a874814869 /gcc/recog.c
parent2d4dc8d22b1844b06724fd3d326b8b80cd2b55c5 (diff)
downloadgcc-519e577727b279000fbf3afdaecdab5700189de2.tar.gz
* combine.c (make_extraction): If no mode is specified for
an operand of insv, extv, or extzv, default it to word_mode. (simplify_comparison): Similarly. * expmed.c (store_bit_field): Similarly. (extract_bit_field): Similarly. * function.c (fixup_var_regs_1): Similarly. * recog.c (validate_replace_rtx_1): Similarly. * mips.md (extv, extzv, insv expanders): Default modes for most operands. Handle TARGET_64BIT. (movdi_uld, movdi_usd): New patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22439 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index d472df0d267..9f6a1eaf669 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -484,11 +484,19 @@ validate_replace_rtx_1 (loc, from, to, object)
#ifdef HAVE_extzv
if (code == ZERO_EXTRACT)
- wanted_mode = insn_operand_mode[(int) CODE_FOR_extzv][1];
+ {
+ wanted_mode = insn_operand_mode[(int) CODE_FOR_extzv][1];
+ if (wanted_mode == VOIDmode)
+ wanted_mode = word_mode;
+ }
#endif
#ifdef HAVE_extv
if (code == SIGN_EXTRACT)
- wanted_mode = insn_operand_mode[(int) CODE_FOR_extv][1];
+ {
+ wanted_mode = insn_operand_mode[(int) CODE_FOR_extv][1];
+ if (wanted_mode == VOIDmode)
+ wanted_mode = word_mode;
+ }
#endif
/* If we have a narrower mode, we can do something. */