re PR rtl-optimization/93088 (Compile time hog on gcc/testsuite/gcc.target/i386/pr56348.c w/ -O3 -funroll-loops -fno-tree-dominator-opts -fno-tree-vrp)

PR rtl-optimization/93088
	* loop-iv.c (find_single_def_src): Punt after looking through
	128 reg copies for regs with single definitions.  Move definitions
	to first uses.

	* gcc.target/i386/pr93088.c: New test.

From-SVN: r279854
This commit is contained in:
Jakub Jelinek 2020-01-03 10:10:13 +01:00 committed by Jakub Jelinek
parent 4d12437884
commit 5a6e28b5ba
4 changed files with 24 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2020-01-03 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/93088
* loop-iv.c (find_single_def_src): Punt after looking through
128 reg copies for regs with single definitions. Move definitions
to first uses.
2020-01-02 Dennis Zhang <dennis.zhang@arm.com>
* config/arm/arm-c.c (arm_cpu_builtins): Define

View File

@ -1384,24 +1384,23 @@ simple_rhs_p (rtx rhs)
static rtx
find_single_def_src (unsigned int regno)
{
df_ref adef;
rtx set, src;
rtx src = NULL_RTX;
for (;;)
/* Don't look through unbounded number of single definition REG copies,
there might be loops for sources with uninitialized variables. */
for (int cnt = 0; cnt < 128; cnt++)
{
rtx note;
adef = DF_REG_DEF_CHAIN (regno);
df_ref adef = DF_REG_DEF_CHAIN (regno);
if (adef == NULL || DF_REF_NEXT_REG (adef) != NULL
|| DF_REF_IS_ARTIFICIAL (adef))
return NULL_RTX;
set = single_set (DF_REF_INSN (adef));
rtx set = single_set (DF_REF_INSN (adef));
if (set == NULL || !REG_P (SET_DEST (set))
|| REGNO (SET_DEST (set)) != regno)
return NULL_RTX;
note = find_reg_equal_equiv_note (DF_REF_INSN (adef));
rtx note = find_reg_equal_equiv_note (DF_REF_INSN (adef));
if (note && function_invariant_p (XEXP (note, 0)))
{
src = XEXP (note, 0);

View File

@ -1,3 +1,8 @@
2020-01-03 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/93088
* gcc.target/i386/pr93088.c: New test.
2020-01-03 Tobias Burnus <tobias@codesourcery.com>
PR fortran/92994

View File

@ -0,0 +1,5 @@
/* PR rtl-optimization/93088 */
/* { dg-do compile } */
/* { dg-options "-O3 -funroll-loops -fno-tree-dominator-opts -fno-tree-vrp -w" } */
#include "pr56348.c"