static unsigned int postreload_load (void) { basic_block bb; init_alias_analysis (); FOR_EACH_BB (bb) { rtx insn; htab_load = htab_create (10, load_htab_hash, load_htab_eq, NULL); FOR_BB_INSNS (bb, insn) { rtx set; struct load **load; /* Set reg_kill, invalidate entries if there is an aliasing store or if the registers making up the address change. */ htab_traverse_noresize (htab_load, find_reg_kill_and_mem_invalidate, insn); set = single_set (insn); if (interesting_second_load (set, &load, insn)) { rtx move; move = gen_move_insn (SET_DEST (set), (*load)->reg); /* Make sure we can generate a move. */ extract_insn (move); if (! constrain_operands (1)) continue; move = emit_insn_before (move, (*load)->reg_kill); delete_insn (insn); if (dump_file) { fputs ("Replaced this load:\n ", dump_file); print_inline_rtx (dump_file, insn, 2); fputs ("\n with this move:\n ", dump_file); print_inline_rtx (dump_file, move, 2); fputs ("\n\n", dump_file); } } else if (interesting_load (set)) alloc_load (set); else if (CALL_P (insn)) htab_empty (htab_load); } htab_empty (htab_load); }
void gfc_generate_module_code (gfc_namespace * ns) { gfc_namespace *n; struct module_htab_entry *entry; gcc_assert (ns->proc_name->backend_decl == NULL); ns->proc_name->backend_decl = build_decl (ns->proc_name->declared_at.lb->location, NAMESPACE_DECL, get_identifier (ns->proc_name->name), void_type_node); entry = gfc_find_module (ns->proc_name->name); if (entry->namespace_decl) /* Buggy sourcecode, using a module before defining it? */ htab_empty (entry->decls); entry->namespace_decl = ns->proc_name->backend_decl; gfc_generate_module_vars (ns); /* We need to generate all module function prototypes first, to allow sibling calls. */ for (n = ns->contained; n; n = n->sibling) { gfc_entry_list *el; if (!n->proc_name) continue; gfc_create_function_decl (n); gcc_assert (DECL_CONTEXT (n->proc_name->backend_decl) == NULL_TREE); DECL_CONTEXT (n->proc_name->backend_decl) = ns->proc_name->backend_decl; gfc_module_add_decl (entry, n->proc_name->backend_decl); for (el = ns->entries; el; el = el->next) { gcc_assert (DECL_CONTEXT (el->sym->backend_decl) == NULL_TREE); DECL_CONTEXT (el->sym->backend_decl) = ns->proc_name->backend_decl; gfc_module_add_decl (entry, el->sym->backend_decl); } } for (n = ns->contained; n; n = n->sibling) { if (!n->proc_name) continue; gfc_generate_function_code (n); } }
void journal_empty(journal_t journal) { journal_entry entry, next; CHECK_MUTEX_LOCKED(journal->mutex); zfsd_mutex_lock(&journal_mutex); for (entry = journal->first; entry; entry = next) { next = entry->next; free(entry->name.str); pool_free(journal_pool, entry); } zfsd_mutex_unlock(&journal_mutex); journal->first = NULL; journal->last = NULL; htab_empty(journal->htab); }
void cselib_clear_table (void) { unsigned int i; for (i = 0; i < n_used_regs; i++) REG_VALUES (used_regs[i]) = 0; max_value_regs = 0; n_used_regs = 0; htab_empty (cselib_hash_table); n_useless_values = 0; next_unknown_value = 0; first_containing_mem = &dummy_val; }