re PR rtl-optimization/70478 ([LRA] S/390: Performance regression - superfluous stack frame)

2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/70478
	* lra-constraints.c (process_alt_operands): Disfavor alternative
	insn memory operands.

2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/70478
	* gcc.target/s390/pr70478.c: New.

From-SVN: r246764
This commit is contained in:
Vladimir Makarov 2017-04-07 16:01:50 +00:00 committed by Vladimir Makarov
parent e3d1043293
commit 057da7af80
4 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-04-07 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/70478
* lra-constraints.c (process_alt_operands): Disfavor alternative
insn memory operands.
2017-04-07 Jeff Law <law@redhat.com>
* config/iq2000/iq2000.c (final_prescan_insn): Do not separate a

View File

@ -2685,6 +2685,21 @@ process_alt_operands (int only_alternative)
}
}
/* When we use memory operand, the insn should read the
value from memory and even if we just wrote a value
into the memory it is costly in comparison with an
insn alternative which does not use memory
(e.g. register or immediate operand). */
if (no_regs_p && offmemok)
{
if (lra_dump_file != NULL)
fprintf
(lra_dump_file,
" Using memory insn operand %d: reject+=3\n",
nop);
reject += 3;
}
#ifdef SECONDARY_MEMORY_NEEDED
/* If reload requires moving value through secondary
memory, it will need one more insn at least. */

View File

@ -1,3 +1,8 @@
2017-04-07 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/70478
* gcc.target/s390/pr70478.c: New.
2017-04-07 Martin Liska <mliska@suse.cz>
PR target/79889

View File

@ -0,0 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-w -O3 -march=z9-109" } */
/* { dg-final { scan-assembler-not "stg" } } */
void foo(unsigned int *a, unsigned char *b)
{
*a &= *b;
}