Commit 206c926a by Dragan Mladjenovic Committed by Dragan Mladjenovic

re PR target/91769 (wrong code with -O2 on MIPS)

Fix PR target/91769

This fixes the issue by checking that addr's base reg is not part of dest
multiword reg instead just checking the first reg of dest.

gcc/ChangeLog:

2019-10-03  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

	PR target/91769
	* config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
	instead of REGNO equality check on addr.reg.

gcc/testsuite/ChangeLog:

2019-10-03  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

	PR target/91769
	* gcc.target/mips/pr91769.c: New test.

From-SVN: r276525
parent 6c7e076b
2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
PR target/91769
* config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
instead of REGNO equality check on addr.reg.
2019-10-03 Jan Hubicka <hubicka@ucw.cz>
* params.def (PARAM_INLINE_HEURISTICS_HINT_PERCENT,
......
......@@ -4862,7 +4862,7 @@ mips_split_move (rtx dest, rtx src, enum mips_split_type split_type, rtx insn_)
{
rtx tmp = XEXP (src, 0);
mips_classify_address (&addr, tmp, GET_MODE (tmp), true);
if (addr.reg && REGNO (addr.reg) != REGNO (dest))
if (addr.reg && !reg_overlap_mentioned_p (dest, addr.reg))
validate_change (next, &SET_SRC (set), src, false);
}
else
......
2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
PR target/91769
* gcc.target/mips/pr91769.c: New test.
2019-10-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* g++.dg/cpp0x/gen-attrs-67.C: Expect constructor priorities error
......
/* PR target/91769 */
/* { dg-do compile } */
/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" "-g" } { "" } } */
/* { dg-options "-EL -mgp32 -mhard-float" } */
NOCOMPRESSION double
foo (void)
{
register double* pf __asm__ ("$a1");
__asm__ __volatile__ ("":"=r"(pf));
double f = *pf;
if (f != f)
f = -f;
return f;
}
/* { dg-final { scan-assembler-not "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tldc1\t\\\$.*,0\\(\\\$5\\)" } } */
/* { dg-final { scan-assembler "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tmtc1\t\\\$4,\\\$.*\n\tmthc1\t\\\$5,\\\$.*" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment