aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-12-10 13:43:45 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-12-10 13:43:45 +0100
commitfee457233eea9e0f2a88273ba3e6b75b9f9b73d9 (patch)
treeaab57dda08ff140cafb849f1ab38eb82755c4e49 /gcc/rtl.c
parent6391db68149b57978967c220d6253a6bd04eb581 (diff)
downloadgcc-fee457233eea9e0f2a88273ba3e6b75b9f9b73d9.zip
gcc-fee457233eea9e0f2a88273ba3e6b75b9f9b73d9.tar.gz
gcc-fee457233eea9e0f2a88273ba3e6b75b9f9b73d9.tar.bz2
re PR rtl-optimization/46865 (Using -save-temps (or ccache, distcc) produces different results with multiline macros containing asm code)
PR rtl-optimization/46865 * rtl.c (rtx_equal_p_cb, rtx_equal_p): For last operand of ASM_OPERANDS and ASM_INPUT if integers are different, call locator_eq. * jump.c (rtx_renumbered_equal_p): Likewise. * gcc.target/i386/pr46865-1.c: New test. * gcc.target/i386/pr46865-2.c: New test. From-SVN: r167686
Diffstat (limited to 'gcc/rtl.c')
-rw-r--r--gcc/rtl.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/gcc/rtl.c b/gcc/rtl.c
index 6f34979..878446c 100644
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -431,7 +431,15 @@ rtx_equal_p_cb (const_rtx x, const_rtx y, rtx_equal_p_callback_function cb)
case 'n':
case 'i':
if (XINT (x, i) != XINT (y, i))
- return 0;
+ {
+#ifndef GENERATOR_FILE
+ if (((code == ASM_OPERANDS && i == 6)
+ || (code == ASM_INPUT && i == 1))
+ && locator_eq (XINT (x, i), XINT (y, i)))
+ break;
+#endif
+ return 0;
+ }
break;
case 'V':
@@ -555,7 +563,15 @@ rtx_equal_p (const_rtx x, const_rtx y)
case 'n':
case 'i':
if (XINT (x, i) != XINT (y, i))
- return 0;
+ {
+#ifndef GENERATOR_FILE
+ if (((code == ASM_OPERANDS && i == 6)
+ || (code == ASM_INPUT && i == 1))
+ && locator_eq (XINT (x, i), XINT (y, i)))
+ break;
+#endif
+ return 0;
+ }
break;
case 'V':