mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
26 lines
1,014 B
Diff
26 lines
1,014 B
Diff
--- trunk/gcc/simplify-rtx.c 2011/10/28 05:55:10 180603
|
|
+++ trunk/gcc/simplify-rtx.c 2011/10/28 06:35:31 180604
|
|
@@ -4352,10 +4352,20 @@
|
|
{
|
|
rtx x = XEXP (op0, 0);
|
|
rtx c = XEXP (op0, 1);
|
|
+ enum rtx_code invcode = op0code == PLUS ? MINUS : PLUS;
|
|
+ rtx tem = simplify_gen_binary (invcode, cmp_mode, op1, c);
|
|
|
|
- c = simplify_gen_binary (op0code == PLUS ? MINUS : PLUS,
|
|
- cmp_mode, op1, c);
|
|
- return simplify_gen_relational (code, mode, cmp_mode, x, c);
|
|
+ /* Detect an infinite recursive condition, where we oscillate at this
|
|
+ simplification case between:
|
|
+ A + B == C <---> C - B == A,
|
|
+ where A, B, and C are all constants with non-simplifiable expressions,
|
|
+ usually SYMBOL_REFs. */
|
|
+ if (GET_CODE (tem) == invcode
|
|
+ && CONSTANT_P (x)
|
|
+ && rtx_equal_p (c, XEXP (tem, 1)))
|
|
+ return NULL_RTX;
|
|
+
|
|
+ return simplify_gen_relational (code, mode, cmp_mode, x, tem);
|
|
}
|
|
|
|
/* (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))) is
|