]>
Commit | Line | Data |
---|---|---|
b74c18a8 PS |
1 | --- gcc-3.4.2/gcc/flow.c.orig 2004-02-28 04:39:19.000000000 +0100 |
2 | +++ gcc-3.4.2/gcc/flow.c 2004-09-16 19:39:39.512234032 +0200 | |
3 | @@ -1878,19 +1878,23 @@ | |
4 | rtx set_src = SET_SRC (pc_set (BB_END (bb))); | |
5 | rtx cond_true = XEXP (set_src, 0); | |
6 | rtx reg = XEXP (cond_true, 0); | |
7 | + enum rtx_code inv_cond; | |
8 | ||
9 | if (GET_CODE (reg) == SUBREG) | |
10 | reg = SUBREG_REG (reg); | |
11 | ||
12 | /* We can only track conditional lifetimes if the condition is | |
13 | - in the form of a comparison of a register against zero. | |
14 | - If the condition is more complex than that, then it is safe | |
15 | - not to record any information. */ | |
16 | - if (GET_CODE (reg) == REG | |
17 | + in the form of a reversible comparison of a register against | |
18 | + zero. If the condition is more complex than that, then it is | |
19 | + safe not to record any information. */ | |
20 | + | |
21 | + inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); | |
22 | + if (inv_cond != UNKNOWN | |
23 | + && GET_CODE (reg) == REG | |
24 | && XEXP (cond_true, 1) == const0_rtx) | |
25 | { | |
26 | rtx cond_false | |
27 | - = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), | |
28 | + = gen_rtx_fmt_ee (inv_cond, | |
29 | GET_MODE (cond_true), XEXP (cond_true, 0), | |
30 | XEXP (cond_true, 1)); | |
31 | if (GET_CODE (XEXP (set_src, 1)) == PC) |