Lines 2635-2640
is_just_move (rtx x)
Link Here
|
2635 |
return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode)); |
2635 |
return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode)); |
2636 |
} |
2636 |
} |
2637 |
|
2637 |
|
|
|
2638 |
/* Return whether X is just a single set, |
2639 |
with the source a sign/zero extend general_operand. */ |
2640 |
static bool |
2641 |
is_just_extend_move (rtx x) |
2642 |
{ |
2643 |
if (INSN_P (x)) |
2644 |
x = PATTERN (x); |
2645 |
if(GET_CODE (x) == SET) |
2646 |
if (GET_CODE (SET_SRC (x)) == ZERO_EXTEND || GET_CODE (SET_SRC (x)) == SIGN_EXTEND) |
2647 |
return (general_operand ((XEXP (SET_SRC (x), 0)), VOIDmode)); |
2648 |
return (GET_CODE (x) == SET && general_operand (SET_SRC (x), VOIDmode)); |
2649 |
} |
2650 |
|
2638 |
/* Callback function to count autoincs. */ |
2651 |
/* Callback function to count autoincs. */ |
2639 |
|
2652 |
|
2640 |
static int |
2653 |
static int |
Lines 3103-3110
try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
Link Here
|
3103 |
} |
3116 |
} |
3104 |
|
3117 |
|
3105 |
/* Record whether i2 and i3 are trivial moves. */ |
3118 |
/* Record whether i2 and i3 are trivial moves. */ |
3106 |
i2_was_move = is_just_move (i2); |
3119 |
i2_was_move = is_just_move (i2) || is_just_extend_move(i2); |
3107 |
i3_was_move = is_just_move (i3); |
3120 |
i3_was_move = is_just_move (i3) || is_just_extend_move(i3); |
3108 |
|
3121 |
|
3109 |
/* Record whether I2DEST is used in I2SRC and similarly for the other |
3122 |
/* Record whether I2DEST is used in I2SRC and similarly for the other |
3110 |
cases. Knowing this will help in register status updating below. */ |
3123 |
cases. Knowing this will help in register status updating below. */ |