diff options
Diffstat (limited to 'gcc/function.c')
-rwxr-xr-x | gcc/function.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/function.c b/gcc/function.c index 553bbe7..d5ffd30 100755 --- a/gcc/function.c +++ b/gcc/function.c @@ -1989,6 +1989,13 @@ fixup_var_refs_1 (var, promoted_mode, loc, insn, replacements) enum machine_mode is_mode = GET_MODE (tem); HOST_WIDE_INT pos = INTVAL (XEXP (x, 2)); + if (GET_CODE (x) == 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 && GET_MODE_SIZE (wanted_mode) < GET_MODE_SIZE (is_mode)) |