re PR middle-end/38474 (compile time explosion in dataflow_set_preserve_mem_locs at -O3)
PR middle-end/38474 * function.c (free_temp_slots): Only walk the temp slot addresses and combine slots if we actually changes something. (pop_temp_slots): Ditto. From-SVN: r155087
This commit is contained in:
parent
41a394bbf8
commit
5d7cefe516
|
@ -1,3 +1,10 @@
|
|||
2009-12-08 Michael Matz <matz@suse.de>
|
||||
|
||||
PR middle-end/38474
|
||||
* function.c (free_temp_slots): Only walk the temp slot
|
||||
addresses and combine slots if we actually changes something.
|
||||
(pop_temp_slots): Ditto.
|
||||
|
||||
2009-12-08 Olga Golovanevsky <olga@il.ibm.com>
|
||||
|
||||
PR middle-end/41843
|
||||
|
|
|
@ -1164,17 +1164,24 @@ void
|
|||
free_temp_slots (void)
|
||||
{
|
||||
struct temp_slot *p, *next;
|
||||
bool some_available = false;
|
||||
|
||||
for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
|
||||
{
|
||||
next = p->next;
|
||||
|
||||
if (!p->keep)
|
||||
make_slot_available (p);
|
||||
{
|
||||
make_slot_available (p);
|
||||
some_available = true;
|
||||
}
|
||||
}
|
||||
|
||||
remove_unused_temp_slot_addresses ();
|
||||
combine_temp_slots ();
|
||||
if (some_available)
|
||||
{
|
||||
remove_unused_temp_slot_addresses ();
|
||||
combine_temp_slots ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Push deeper into the nesting level for stack temporaries. */
|
||||
|
@ -1192,15 +1199,20 @@ void
|
|||
pop_temp_slots (void)
|
||||
{
|
||||
struct temp_slot *p, *next;
|
||||
bool some_available = false;
|
||||
|
||||
for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
|
||||
{
|
||||
next = p->next;
|
||||
make_slot_available (p);
|
||||
some_available = true;
|
||||
}
|
||||
|
||||
remove_unused_temp_slot_addresses ();
|
||||
combine_temp_slots ();
|
||||
if (some_available)
|
||||
{
|
||||
remove_unused_temp_slot_addresses ();
|
||||
combine_temp_slots ();
|
||||
}
|
||||
|
||||
temp_slot_level--;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue