backport: re PR rtl-optimization/46865 (Using -save-temps (or ccache, distcc) produces different results with multiline macros containing asm code)
Backport from mainline 2010-12-10 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/46865 * rtl.c (rtx_equal_p_cb): 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: r168877
This commit is contained in:
parent
8284108bd8
commit
ad461982d7
|
@ -1,3 +1,14 @@
|
|||
2011-01-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backport from mainline
|
||||
2010-12-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/46865
|
||||
* rtl.c (rtx_equal_p_cb): For last operand of
|
||||
ASM_OPERANDS and ASM_INPUT if integers are different,
|
||||
call locator_eq.
|
||||
* jump.c (rtx_renumbered_equal_p): Likewise.
|
||||
|
||||
2011-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
Backport from mainline:
|
||||
|
|
|
@ -1670,7 +1670,13 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y)
|
|||
|
||||
case 'i':
|
||||
if (XINT (x, i) != XINT (y, i))
|
||||
return 0;
|
||||
{
|
||||
if (((code == ASM_OPERANDS && i == 5)
|
||||
|| (code == ASM_INPUT && i == 1))
|
||||
&& locator_eq (XINT (x, i), XINT (y, i)))
|
||||
break;
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
|
10
gcc/rtl.c
10
gcc/rtl.c
|
@ -405,7 +405,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 == 5)
|
||||
|| (code == ASM_INPUT && i == 1))
|
||||
&& locator_eq (XINT (x, i), XINT (y, i)))
|
||||
break;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2011-01-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
Backport from mainline
|
||||
2010-12-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/46865
|
||||
* gcc.target/i386/pr46865-1.c: New test.
|
||||
* gcc.target/i386/pr46865-2.c: New test.
|
||||
|
||||
2011-01-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* gfortran.dg/cray_pointers_2.f90: Use dg-timeout-factor 4.
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/* PR rtl-optimization/46865 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
extern unsigned long f;
|
||||
|
||||
#define m1(f) \
|
||||
if (f & 1) \
|
||||
asm volatile ("nop /* asmnop */\n"); \
|
||||
else \
|
||||
asm volatile ("nop /* asmnop */\n");
|
||||
|
||||
#define m2(f) \
|
||||
if (f & 1) \
|
||||
asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx"); \
|
||||
else \
|
||||
asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx");
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
m1 (f);
|
||||
}
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
m2 (f);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-times "asmnop" 2 } } */
|
|
@ -0,0 +1,32 @@
|
|||
/* PR rtl-optimization/46865 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -save-temps" } */
|
||||
|
||||
extern unsigned long f;
|
||||
|
||||
#define m1(f) \
|
||||
if (f & 1) \
|
||||
asm volatile ("nop /* asmnop */\n"); \
|
||||
else \
|
||||
asm volatile ("nop /* asmnop */\n");
|
||||
|
||||
#define m2(f) \
|
||||
if (f & 1) \
|
||||
asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx"); \
|
||||
else \
|
||||
asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx");
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
m1 (f);
|
||||
}
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
m2 (f);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-times "asmnop" 2 } } */
|
||||
/* { dg-final { cleanup-saved-temps } } */
|
Loading…
Reference in New Issue