aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c59
1 files changed, 34 insertions, 25 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index b0646c2..56a373b 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -5752,14 +5752,17 @@ make_extraction (mode, inner, pos, pos_rtx, len,
if (in_dest)
{
wanted_inner_reg_mode
- = (insn_operand_mode[(int) CODE_FOR_insv][0] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_insv][0]);
- pos_mode = (insn_operand_mode[(int) CODE_FOR_insv][2] == VOIDmode
- ? word_mode : insn_operand_mode[(int) CODE_FOR_insv][2]);
- extraction_mode = (insn_operand_mode[(int) CODE_FOR_insv][3] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_insv][3]);
+ = insn_data[(int) CODE_FOR_insv].operand[0].mode;
+ if (wanted_inner_reg_mode == VOIDmode)
+ wanted_inner_reg_mode = word_mode;
+
+ pos_mode = insn_data[(int) CODE_FOR_insv].operand[2].mode;
+ if (pos_mode == VOIDmode)
+ pos_mode = word_mode;
+
+ extraction_mode = insn_data[(int) CODE_FOR_insv].operand[3].mode;
+ if (extraction_mode == VOIDmode)
+ extraction_mode = word_mode;
}
#endif
@@ -5767,14 +5770,17 @@ make_extraction (mode, inner, pos, pos_rtx, len,
if (! in_dest && unsignedp)
{
wanted_inner_reg_mode
- = (insn_operand_mode[(int) CODE_FOR_extzv][1] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_extzv][1]);
- pos_mode = (insn_operand_mode[(int) CODE_FOR_extzv][3] == VOIDmode
- ? word_mode : insn_operand_mode[(int) CODE_FOR_extzv][3]);
- extraction_mode = (insn_operand_mode[(int) CODE_FOR_extzv][0] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_extzv][0]);
+ = insn_data[(int) CODE_FOR_extzv].operand[1].mode;
+ if (wanted_inner_reg_mode == VOIDmode)
+ wanted_inner_reg_mode = word_mode;
+
+ pos_mode = insn_data[(int) CODE_FOR_extzv].operand[3].mode;
+ if (pos_mode == VOIDmode)
+ pos_mode = word_mode;
+
+ extraction_mode = insn_data[(int) CODE_FOR_extzv].operand[0].mode;
+ if (extraction_mode == VOIDmode)
+ extraction_mode = word_mode;
}
#endif
@@ -5782,14 +5788,17 @@ make_extraction (mode, inner, pos, pos_rtx, len,
if (! in_dest && ! unsignedp)
{
wanted_inner_reg_mode
- = (insn_operand_mode[(int) CODE_FOR_extv][1] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_extv][1]);
- pos_mode = (insn_operand_mode[(int) CODE_FOR_extv][3] == VOIDmode
- ? word_mode : insn_operand_mode[(int) CODE_FOR_extv][3]);
- extraction_mode = (insn_operand_mode[(int) CODE_FOR_extv][0] == VOIDmode
- ? word_mode
- : insn_operand_mode[(int) CODE_FOR_extv][0]);
+ = insn_data[(int) CODE_FOR_extv].operand[1].mode;
+ if (wanted_inner_reg_mode == VOIDmode)
+ wanted_inner_reg_mode = word_mode;
+
+ pos_mode = insn_data[(int) CODE_FOR_extv].operand[3].mode;
+ if (pos_mode == VOIDmode)
+ pos_mode = word_mode;
+
+ extraction_mode = insn_data[(int) CODE_FOR_extv].operand[0].mode;
+ if (extraction_mode == VOIDmode)
+ extraction_mode = word_mode;
}
#endif
@@ -9901,7 +9910,7 @@ simplify_comparison (code, pop0, pop1)
if (BITS_BIG_ENDIAN)
{
#ifdef HAVE_extzv
- mode = insn_operand_mode[(int) CODE_FOR_extzv][1];
+ mode = insn_data[(int) CODE_FOR_extzv].operand[1].mode;
if (mode == VOIDmode)
mode = word_mode;
i = (GET_MODE_BITSIZE (mode) - 1 - i);