diff options
author | YamaArashi <shadow962@live.com> | 2016-04-29 10:42:45 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-04-29 10:42:45 -0700 |
commit | a0f147d45bfb4d45da82baa07fea47fa7bf35d7b (patch) | |
tree | ed0d9846e4ba90cf3416f2f9eac8e8b8d444efda /gcc/combine.c | |
parent | 4553c7e8fe69c50c201bc39dac1be088004babc2 (diff) |
revert some changes
Diffstat (limited to 'gcc/combine.c')
-rwxr-xr-x | gcc/combine.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 823b392..e3a3f3f 100755 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -5666,10 +5666,16 @@ make_extraction (mode, inner, pos, pos_rtx, len, || (pos_rtx != 0 && len != 1))) return 0; - /* Get the mode to use should INNER not be a MEM, the mode for the position, - and the mode for the result. */ - + /* Get the mode to use should INNER not be a MEM, the mode for the position, + and the mode for the result. */ + if (!in_dest && unsignedp) + { + const enum machine_mode *extzv_mode = insn_operand_mode[(int)CODE_FOR_extzv]; + wanted_inner_reg_mode = (extzv_mode[1] == VOIDmode) ? word_mode : extzv_mode[1]; + pos_mode = (extzv_mode[3] == VOIDmode) ? word_mode : extzv_mode[3]; + extraction_mode = (extzv_mode[0] == VOIDmode) ? word_mode : extzv_mode[0]; + } /* Never narrow an object, since that might not be safe. */ |