OSDN Git Service

PR middle-end/38586
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Jan 2009 00:15:58 +0000 (00:15 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Jan 2009 00:15:58 +0000 (00:15 +0000)
commitfef299cedb25c9d0fee8bcb562a2fd17d875e62f
tree036cc581e08d7fcaf0a794b0ad2b240a2158cbc2
parent961c8f7239d867d8320896dd626796af279903e8
PR middle-end/38586
* function.c (struct temp_slot): Move to the section of the file
that deals with temp slots.  Remove field 'address'.
(temp_slot_address_table): New hash table of address -> temp slot.
(struct temp_slot_address_entry): New struct, items for the table.
(temp_slot_address_compute_hash, temp_slot_address_hash,
temp_slot_address_eq, insert_temp_slot_address): Support functions
for the new table.
(find_temp_slot_from_address): Rewrite to use the new hash table.
(remove_unused_temp_slot_addresses): Remove addresses of temp
slots that have been made available.
(remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
worker function for remove_unused_temp_slot_addresses.
(assign_stack_temp_for_type): Don't clear the temp slot address list.
Add the temp slot address to the address -> temp slot map.
(update_temp_slot_address): Update via insert_temp_slot_address.
(free_temp_slots): Call remove_unused_temp_slot_addresses.
(pop_temp_slots): Likewise.
(init_temp_slots): Allocate the address -> temp slot map, or empty
the map if it is already allocated.
(prepare_function_start): Initialize temp slot processing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143041 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/function.c