diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-12-10 13:43:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-12-10 13:43:45 +0100 |
commit | fee457233eea9e0f2a88273ba3e6b75b9f9b73d9 (patch) | |
tree | aab57dda08ff140cafb849f1ab38eb82755c4e49 /gcc/rtl.c | |
parent | 6391db68149b57978967c220d6253a6bd04eb581 (diff) | |
download | gcc-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.c | 20 |
1 files changed, 18 insertions, 2 deletions
@@ -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': |