Commit 59193b1b by Alexandre Oliva Committed by Alexandre Oliva

[PR87874] avoid const-wide-int subreg in LRA

Just like CONST_INT, CONST_WIDE_INT is VOIDmode, so LRA might be
tempted to build a SUBREG to "convert" it to the wanted mode.  That's
no use.  Test for CONST_SCALAR_INT_P instead of CONST_INT_P so that we
skip the subreg creation for both.

for  gcc/ChangeLog

	PR rtl-optimization/87874
	* lra.c (lra_substitute_pseudo): Do not create a subreg for
	const wide ints.

for  gcc/testsuite/ChangeLog

	PR rtl-optimization/87874
	* gcc.dg/pr87874.c: New.

From-SVN: r265860
parent 513c1106
2018-11-07 Alexandre Oliva <aoliva@redhat.com>
PR rtl-optimization/87874
* lra.c (lra_substitute_pseudo): Do not create a subreg for
const wide ints.
2018-11-06 Aaron Sawdey <acsawdey@linux.ibm.com>
* config/rs6000/rs6000.md (bswap<mode>2): Force address into register
......@@ -1961,7 +1961,7 @@ lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p,
machine_mode inner_mode = GET_MODE (new_reg);
if (mode != inner_mode
&& ! (CONST_INT_P (new_reg) && SCALAR_INT_MODE_P (mode)))
&& ! (CONST_SCALAR_INT_P (new_reg) && SCALAR_INT_MODE_P (mode)))
{
poly_uint64 offset = 0;
if (partial_subreg_p (mode, inner_mode)
......
2018-11-07 Alexandre Oliva <aoliva@redhat.com>
PR rtl-optimization/87874
* gcc.dg/pr87874.c: New.
2018-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
* gcc.target/s390/load-and-test-fp-1.c: Accept cdb.
......
/* { dg-do compile } */
/* { dg-options "-g -O1 -fgcse -fno-dce -fno-tree-ccp -fno-tree-coalesce-vars -fno-tree-copy-prop -fno-tree-dce -fno-tree-dominator-opts -fno-tree-fre -fno-tree-loop-optimize -fno-tree-sink" } */
int *vk;
int m2;
#if __SIZEOF_INT128__
__int128 nb;
void
em (int u5, int fo, int s7)
{
for (;;)
{
long int es;
es = !!u5 ? (!!fo && !!m2) : fo;
if (es == 0)
if (nb == *vk)
{
const unsigned long int uint64_max = 18446744073709551615ul;
__int128 ks = uint64_max / 2 + 1;
while (s7 < 1)
while (nb < 2)
{
for (ks = 0; ks < 3; ++ks)
{
}
++nb;
}
}
}
}
#endif
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