aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/open.c
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2009-01-04 00:15:58 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2009-01-04 00:15:58 +0000
commitfb0703f704d02beb8d886b695fe335ebde4a2ea2 (patch)
tree036cc581e08d7fcaf0a794b0ad2b240a2158cbc2 /libgfortran/io/open.c
parentb5a430f346093aba1cb1e28aa7f92405e68b0ccd (diff)
downloadgcc-fb0703f704d02beb8d886b695fe335ebde4a2ea2.zip
gcc-fb0703f704d02beb8d886b695fe335ebde4a2ea2.tar.gz
gcc-fb0703f704d02beb8d886b695fe335ebde4a2ea2.tar.bz2
re PR middle-end/38586 (quadratic behaviour in find_temp_slot_from_address.)
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. From-SVN: r143041
Diffstat (limited to 'libgfortran/io/open.c')
0 files changed, 0 insertions, 0 deletions