re PR rtl-optimization/48141 (DSE compile time hog)

PR rtl-optimization/48141
	* dse.c (record_store): If no positions are needed in an insn
	that cannot be deleted, at least unchain it from active_local_stores.

	* gcc.dg/pr48141.c: New test.

From-SVN: r171089
This commit is contained in:
Jakub Jelinek 2011-03-17 13:35:04 +01:00 committed by Jakub Jelinek
parent cb21e9cdf7
commit 1b6fa86002
4 changed files with 32 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2011-03-17 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/48141
* dse.c (record_store): If no positions are needed in an insn
that cannot be deleted, at least unchain it from active_local_stores.
2011-03-16 Dodji Seketeli <dodji@redhat.com> 2011-03-16 Dodji Seketeli <dodji@redhat.com>
PR debug/47510 PR debug/47510

View File

@ -1,5 +1,5 @@
/* RTL dead store elimination. /* RTL dead store elimination.
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Richard Sandiford <rsandifor@codesourcery.com> Contributed by Richard Sandiford <rsandifor@codesourcery.com>
@ -1530,8 +1530,7 @@ record_store (rtx body, bb_info_t bb_info)
/* An insn can be deleted if every position of every one of /* An insn can be deleted if every position of every one of
its s_infos is zero. */ its s_infos is zero. */
if (any_positions_needed_p (s_info) if (any_positions_needed_p (s_info))
|| ptr->cannot_delete)
del = false; del = false;
if (del) if (del)
@ -1543,7 +1542,8 @@ record_store (rtx body, bb_info_t bb_info)
else else
active_local_stores = ptr->next_local_store; active_local_stores = ptr->next_local_store;
delete_dead_store_insn (insn_to_delete); if (!insn_to_delete->cannot_delete)
delete_dead_store_insn (insn_to_delete);
} }
else else
last = ptr; last = ptr;

View File

@ -1,3 +1,8 @@
2011-03-17 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/48141
* gcc.dg/pr48141.c: New test.
2011-03-16 Jason Merrill <jason@redhat.com> 2011-03-16 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/constexpr-48089.C: New. * g++.dg/cpp0x/constexpr-48089.C: New.

View File

@ -0,0 +1,17 @@
/* PR rtl-optimization/48141 */
/* { dg-do compile } */
/* { dg-options "-O" } */
#define A i = 0;
#define B A A A A A A A A A A
#define C B B B B B B B B B B
#define D C C C C C C C C C C
#define E D D D D D D D D D D
int
foo (void)
{
volatile int i = 0;
E E E E E E E E E E E
return 0;
}