remove useless if-before-free tests

Change "if (E) free (E);" to "free (E);" everywhere except in the
libgo/, intl/, zlib/ and classpath/ directories.
Also transform equivalent variants like
"if (E != NULL) free (E);" and allow an extra cast on the
argument to free.  Otherwise, the tested and freed "E"
expressions must be identical, modulo white space.

From-SVN: r172785
This commit is contained in:
Jim Meyering 2011-04-20 18:19:03 +00:00
parent 53eebfbf94
commit 046957830e
74 changed files with 267 additions and 270 deletions

View File

@ -1,3 +1,42 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
Remove useless if-before-free tests.
* calls.c (expand_call, save_area): Likewise.
* cfgcleanup.c (try_forward_edges): Likewise.
* collect2.c (collect_execute): Likewise.
* config/i386/i386.c (ix86_valid_target_attribute_tree): Likewise.
* config/mcore/mcore.c (mcore_expand_prolog): Likewise.
* coverage.c (coverage_checksum_string): Likewise.
* cse.c (init_cse_reg_info, delete_trivially_dead_insns): Likewise.
* cselib.c (cselib_init): Likewise.
* df-core.c (rest_of_handle_df_finish, df_analyze): Likewise.
(df_set_clean_cfg): Likewise.
* function.c (free_after_compilation): Likewise.
* gcc.c (do_spec_1, main): Likewise.
* gcov.c (create_file_names): Likewise.
* gensupport.c (identify_predicable_attribute): Likewise.
* graphite-clast-to-gimple.c (save_clast_name_index): Likewise.
* graphite-sese-to-poly.c (free_data_refs_aux): Likewise.
* haifa-sched.c (haifa_finish_h_i_d): Likewise.
* ipa-prop.c (ipa_free_node_params_substructures): Likewise.
* ipa-pure-const.c (local_pure_const): Likewise.
* ipa-reference.c (propagate): Likewise.
* ira-costs.c (free_ira_costs): Likewise.
* ira.c (free_register_move_costs, build_insn_chain): Likewise.
* matrix-reorg.c (mat_free): Likewise.
* prefix.c (get_key_value): Likewise.
* profile.c (compute_value_histograms): Likewise.
* reload1.c (free_reg_equiv): Likewise.
* sched-deps.c (free_deps): Likewise.
* sel-sched-ir.c (fence_clear): Likewise.
* sese.c (set_rename, if_region_set_false_region): Likewise.
* tree-data-ref.c (free_rdg): Likewise.
* tree-eh.c (lower_try_finally): Likewise.
* tree-ssa-coalesce.c (delete_coalesce_list): Likewise.
* tree-ssa-live.c (delete_var_map): Likewise.
* tree-ssa-loop-ivopts.c (free_loop_data): Likewise.
* tree-ssa-pre.c (phi_trans_add): Likewise.
2011-04-20 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/48611

View File

@ -1,3 +1,7 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* initialize.c (__gnat_initialize): Remove useless if-before-free.
2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with

View File

@ -217,8 +217,7 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED)
FindClose (hDir);
if (dir != NULL)
free (dir);
free (dir);
}
}
else

View File

@ -1,3 +1,8 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* c-format.c (init_dollar_format_checking): Remove useless
if-before-free.
2011-04-15 Nicola Pero <nicola.pero@meta-innovation.com>
* c-objc.h (objc_get_interface_ivars): Removed.
@ -1105,7 +1110,7 @@
* c-common.c: Include gt-c-family-c-common.h.
* c-pragma.c: Include gt-c-family-c-pragma.h.
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright

View File

@ -1107,10 +1107,8 @@ init_dollar_format_checking (int first_arg_num, tree params)
}
if (dollar_arguments_alloc < dollar_arguments_count)
{
if (dollar_arguments_used)
free (dollar_arguments_used);
if (dollar_arguments_pointer_p)
free (dollar_arguments_pointer_p);
free (dollar_arguments_used);
free (dollar_arguments_pointer_p);
dollar_arguments_alloc = dollar_arguments_count;
dollar_arguments_used = XNEWVEC (char, dollar_arguments_alloc);
dollar_arguments_pointer_p = XNEWVEC (char, dollar_arguments_alloc);

View File

@ -2555,8 +2555,7 @@ expand_call (tree exp, rtx target, int ignore)
highest_outgoing_arg_in_use = MAX (initial_highest_arg_in_use,
needed);
#endif
if (stack_usage_map_buf)
free (stack_usage_map_buf);
free (stack_usage_map_buf);
stack_usage_map_buf = XNEWVEC (char, highest_outgoing_arg_in_use);
stack_usage_map = stack_usage_map_buf;
@ -2661,8 +2660,7 @@ expand_call (tree exp, rtx target, int ignore)
= stack_arg_under_construction;
stack_arg_under_construction = 0;
/* Make a new map for the new argument list. */
if (stack_usage_map_buf)
free (stack_usage_map_buf);
free (stack_usage_map_buf);
stack_usage_map_buf = XCNEWVEC (char, highest_outgoing_arg_in_use);
stack_usage_map = stack_usage_map_buf;
highest_outgoing_arg_in_use = 0;
@ -3152,8 +3150,7 @@ expand_call (tree exp, rtx target, int ignore)
/* Free up storage we no longer need. */
for (i = 0; i < num_actuals; ++i)
if (args[i].aligned_regs)
free (args[i].aligned_regs);
free (args[i].aligned_regs);
insns = get_insns ();
end_sequence ();
@ -3208,8 +3205,7 @@ expand_call (tree exp, rtx target, int ignore)
currently_expanding_call--;
if (stack_usage_map_buf)
free (stack_usage_map_buf);
free (stack_usage_map_buf);
return target;
}
@ -3966,8 +3962,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
stack_usage_map = initial_stack_usage_map;
}
if (stack_usage_map_buf)
free (stack_usage_map_buf);
free (stack_usage_map_buf);
return value;

View File

@ -646,8 +646,7 @@ try_forward_edges (int mode, basic_block b)
ei_next (&ei);
}
if (threaded_edges)
free (threaded_edges);
free (threaded_edges);
return changed;
}

View File

@ -2087,8 +2087,7 @@ collect_execute (const char *prog, char **argv, const char *outname,
fatal (errmsg);
}
if (response_arg)
free (response_arg);
free (response_arg);
return pex;
}

View File

@ -4783,8 +4783,7 @@ ix86_valid_target_attribute_tree (tree args)
/* Free up memory allocated to hold the strings */
for (i = 0; i < IX86_FUNCTION_SPECIFIC_MAX; i++)
if (option_strings[i])
free (option_strings[i]);
free (option_strings[i]);
}
return t;

View File

@ -1980,8 +1980,7 @@ mcore_expand_prolog (void)
gcc_assert (GET_CODE (x) == SYMBOL_REF);
if (mcore_current_function_name)
free (mcore_current_function_name);
free (mcore_current_function_name);
mcore_current_function_name = xstrdup (XSTR (x, 0));

View File

@ -522,8 +522,7 @@ coverage_checksum_string (unsigned chksum, const char *string)
}
chksum = crc32_string (chksum, string);
if (dup)
free (dup);
free (dup);
return chksum;
}

View File

@ -1,3 +1,7 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* tree.c (cxx_printable_name_internal): Remove useless if-before-free.
2011-04-19 Jason Merrill <jason@redhat.com>
PR c++/46304

View File

@ -1509,8 +1509,7 @@ cxx_printable_name_internal (tree decl, int v, bool translate)
gcc_assert (uid_ring[ring_counter] != DECL_UID (current_function_decl));
}
if (print_ring[ring_counter])
free (print_ring[ring_counter]);
free (print_ring[ring_counter]);
print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v, translate));
uid_ring[ring_counter] = DECL_UID (decl);

View File

@ -796,8 +796,7 @@ init_cse_reg_info (unsigned int nregs)
}
/* Reallocate the table with NEW_SIZE entries. */
if (cse_reg_info_table)
free (cse_reg_info_table);
free (cse_reg_info_table);
cse_reg_info_table = XNEWVEC (struct cse_reg_info, new_size);
cse_reg_info_table_size = new_size;
cse_reg_info_table_first_uninitialized = 0;
@ -6975,8 +6974,7 @@ delete_trivially_dead_insns (rtx insns, int nreg)
df_insn_rescan (insn);
}
}
if (replacements)
free (replacements);
free (replacements);
}
if (dump_file && ndead)

View File

@ -2462,8 +2462,7 @@ cselib_init (int record_what)
if (!reg_values || reg_values_size < cselib_nregs
|| (reg_values_size > 10 && reg_values_size > cselib_nregs * 4))
{
if (reg_values)
free (reg_values);
free (reg_values);
/* Some space for newly emit instructions so we don't end up
reallocating in between passes. */
reg_values_size = cselib_nregs + (63 + cselib_nregs) / 16;

View File

@ -811,10 +811,8 @@ rest_of_handle_df_finish (void)
dflow->problem->free_fun ();
}
if (df->postorder)
free (df->postorder);
if (df->postorder_inverted)
free (df->postorder_inverted);
free (df->postorder);
free (df->postorder_inverted);
free (df->hard_regs_live_count);
free (df);
df = NULL;
@ -1183,10 +1181,8 @@ df_analyze (void)
bool everything;
int i;
if (df->postorder)
free (df->postorder);
if (df->postorder_inverted)
free (df->postorder_inverted);
free (df->postorder);
free (df->postorder_inverted);
df->postorder = XNEWVEC (int, last_basic_block);
df->postorder_inverted = XNEWVEC (int, last_basic_block);
df->n_blocks = post_order_compute (df->postorder, true, true);
@ -1725,8 +1721,7 @@ df_check_cfg_clean (void)
static void
df_set_clean_cfg (void)
{
if (saved_cfg)
free (saved_cfg);
free (saved_cfg);
saved_cfg = df_compute_cfg_image ();
}

View File

@ -1,3 +1,10 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* expr.c (free_expr0): Remove useless if-before-free.
* gfortranspec.c (lang_specific_pre_link): Likewise.
* interface.c (gfc_extend_expr): Likewise.
* trans-openmp.c (gfc_trans_omp_array_reduction): Likewise.
2011-04-19 Tobias Burnus <burnus@net-b.de>
PR fortran/48588

View File

@ -433,8 +433,7 @@ free_expr0 (gfc_expr *e)
}
/* Free the representation. */
if (e->representation.string)
free (e->representation.string);
free (e->representation.string);
break;

View File

@ -472,9 +472,8 @@ For more information about these matters, see the file named COPYING\n\n"));
int
lang_specific_pre_link (void)
{
if (spec_file)
free (spec_file);
else if (library)
free (spec_file);
if (spec_file == NULL && library)
do_spec ("%:include(libgfortran.spec)");
return 0;

View File

@ -3141,8 +3141,7 @@ gfc_extend_expr (gfc_expr *e, bool *real_error)
}
/* Don't use gfc_free_actual_arglist(). */
if (actual->next != NULL)
free (actual->next);
free (actual->next);
free (actual);
return FAILURE;

View File

@ -714,8 +714,7 @@ gfc_trans_omp_array_reduction (tree c, gfc_symbol *sym, locus where)
free (symtree1);
free (symtree2);
free (symtree3);
if (symtree4)
free (symtree4);
free (symtree4);
gfc_free_array_spec (outer_sym.as);
}

View File

@ -211,8 +211,7 @@ free_after_compilation (struct function *f)
prologue_insn_hash = NULL;
epilogue_insn_hash = NULL;
if (crtl->emit.regno_pointer_align)
free (crtl->emit.regno_pointer_align);
free (crtl->emit.regno_pointer_align);
memset (crtl, 0, sizeof (struct rtl_data));
f->eh = NULL;

View File

@ -4806,8 +4806,7 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
t->filename_length = temp_filename_length;
}
if (saved_suffix)
free (saved_suffix);
free (saved_suffix);
obstack_grow (&obstack, t->filename, t->filename_length);
delete_this_arg = 1;
@ -6724,12 +6723,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
{
if (compare_debug)
{
if (debug_check_temp_file[0])
free (debug_check_temp_file[0]);
free (debug_check_temp_file[0]);
debug_check_temp_file[0] = NULL;
if (debug_check_temp_file[1])
free (debug_check_temp_file[1]);
free (debug_check_temp_file[1]);
debug_check_temp_file[1] = NULL;
}
@ -6773,12 +6770,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
if (compare_debug)
{
if (debug_check_temp_file[0])
free (debug_check_temp_file[0]);
free (debug_check_temp_file[0]);
debug_check_temp_file[0] = NULL;
if (debug_check_temp_file[1])
free (debug_check_temp_file[1]);
free (debug_check_temp_file[1]);
debug_check_temp_file[1] = NULL;
}
}

View File

@ -661,10 +661,8 @@ create_file_names (const char *file_name)
int base;
/* Free previous file names. */
if (bbg_file_name)
free (bbg_file_name);
if (da_file_name)
free (da_file_name);
free (bbg_file_name);
free (da_file_name);
da_file_name = bbg_file_name = NULL;
bbg_file_time = 0;
bbg_stamp = 0;

View File

@ -594,8 +594,7 @@ identify_predicable_attribute (void)
if (p_true == NULL || strchr (++p_true, ',') != NULL)
{
error_with_line (elem->lineno, "attribute `predicable' is not a boolean");
if (p_false)
free (p_false);
free (p_false);
return;
}
p_true[-1] = '\0';
@ -611,15 +610,13 @@ identify_predicable_attribute (void)
case CONST:
error_with_line (elem->lineno, "attribute `predicable' cannot be const");
if (p_false)
free (p_false);
free (p_false);
return;
default:
error_with_line (elem->lineno,
"attribute `predicable' must have a constant default");
if (p_false)
free (p_false);
free (p_false);
return;
}
@ -631,8 +628,7 @@ identify_predicable_attribute (void)
{
error_with_line (elem->lineno,
"unknown value `%s' for `predicable' attribute", value);
if (p_false)
free (p_false);
free (p_false);
}
}

View File

@ -114,8 +114,7 @@ save_clast_name_index (htab_t index_table, const char *name, int index)
if (slot)
{
if (*slot)
free (*slot);
free (*slot);
*slot = new_clast_name_index (name, index);
}

View File

@ -190,8 +190,7 @@ free_data_refs_aux (VEC (data_reference_p, heap) *datarefs)
{
base_alias_pair *bap = (base_alias_pair *)(dr->aux);
if (bap->alias_set)
free (bap->alias_set);
free (bap->alias_set);
free (bap);
dr->aux = NULL;

View File

@ -5582,8 +5582,7 @@ haifa_finish_h_i_d (void)
FOR_EACH_VEC_ELT (haifa_insn_data_def, h_i_d, i, data)
{
if (data->reg_pressure != NULL)
free (data->reg_pressure);
free (data->reg_pressure);
for (use = data->reg_use_list; use != NULL; use = next)
{
next = use->next_insn_use;

View File

@ -1936,8 +1936,7 @@ ipa_free_all_edge_args (void)
void
ipa_free_node_params_substructures (struct ipa_node_params *info)
{
if (info->params)
free (info->params);
free (info->params);
memset (info, 0, sizeof (*info));
}

View File

@ -1662,8 +1662,7 @@ local_pure_const (void)
lang_hooks.decl_printable_name (current_function_decl,
2));
}
if (l)
free (l);
free (l);
if (changed)
return execute_fixup_cfg ();
else

View File

@ -913,8 +913,7 @@ propagate (void)
node_g->statics_written);
}
}
if (node_info)
free (node_info);
free (node_info);
if (node->aux)
{
free (node->aux);

View File

@ -1968,19 +1968,15 @@ free_ira_costs (void)
{
int i;
if (init_cost != NULL)
free (init_cost);
free (init_cost);
init_cost = NULL;
for (i = 0; i < MAX_RECOG_OPERANDS; i++)
{
if (op_costs[i] != NULL)
free (op_costs[i]);
if (this_op_costs[i] != NULL)
free (this_op_costs[i]);
free (op_costs[i]);
free (this_op_costs[i]);
op_costs[i] = this_op_costs[i] = NULL;
}
if (temp_costs != NULL)
free (temp_costs);
free (temp_costs);
temp_costs = NULL;
}

View File

@ -1556,16 +1556,11 @@ free_register_move_costs (void)
for (mode = 0; mode < MAX_MACHINE_MODE; mode++)
{
if (ira_max_register_move_cost[mode] != NULL)
free (ira_max_register_move_cost[mode]);
if (ira_may_move_in_cost[mode] != NULL)
free (ira_may_move_in_cost[mode]);
if (ira_may_move_out_cost[mode] != NULL)
free (ira_may_move_out_cost[mode]);
if (ira_max_may_move_in_cost[mode] != NULL)
free (ira_max_may_move_in_cost[mode]);
if (ira_max_may_move_out_cost[mode] != NULL)
free (ira_max_may_move_out_cost[mode]);
free (ira_max_register_move_cost[mode]);
free (ira_may_move_in_cost[mode]);
free (ira_may_move_out_cost[mode]);
free (ira_max_may_move_in_cost[mode]);
free (ira_max_may_move_out_cost[mode]);
ira_register_move_cost[mode] = NULL;
ira_max_register_move_cost[mode] = NULL;
ira_may_move_in_cost[mode] = NULL;
@ -3461,8 +3456,7 @@ build_insn_chain (void)
}
for (i = 0; i < (unsigned int) max_regno; i++)
if (live_subregs[i])
free (live_subregs[i]);
free (live_subregs[i]);
reload_insn_chain = c;
*p = NULL;

View File

@ -1,3 +1,7 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* jcf-parse.c (java_parse_file): Remove useless if-before-free.
2011-04-18 Jim Meyering <meyering@redhat.com>
* jcf-parse.c: Fix typo in comment.
@ -22471,7 +22475,7 @@ Tue Mar 9 11:52:08 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright

View File

@ -1843,8 +1843,7 @@ java_parse_file (void)
list = next;
}
if (file_list != NULL)
free (file_list);
free (file_list);
if (filename_count == 0)
warning (0, "no input file specified");

View File

@ -529,12 +529,9 @@ mat_free (void *e)
if (!mat)
return;
if (mat->free_stmts)
free (mat->free_stmts);
if (mat->dim_hot_level)
free (mat->dim_hot_level);
if (mat->malloc_for_level)
free (mat->malloc_for_level);
free (mat->free_stmts);
free (mat->dim_hot_level);
free (mat->malloc_for_level);
}
/* Find all potential matrices.

View File

@ -103,8 +103,7 @@ get_key_value (char *key)
if (prefix == 0)
prefix = std_prefix;
if (temp)
free (temp);
free (temp);
return prefix;
}

View File

@ -828,8 +828,7 @@ compute_value_histograms (histogram_values values)
}
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
if (histogram_counts[t])
free (histogram_counts[t]);
free (histogram_counts[t]);
}
/* The entry basic block will be moved around so that it has index=1,

View File

@ -4213,10 +4213,8 @@ free_reg_equiv (void)
int i;
if (offsets_known_at)
free (offsets_known_at);
if (offsets_at)
free (offsets_at);
free (offsets_known_at);
free (offsets_at);
offsets_at = 0;
offsets_known_at = 0;

View File

@ -3547,8 +3547,7 @@ free_deps (struct deps_desc *deps)
/* As we initialize reg_last lazily, it is possible that we didn't allocate
it at all. */
if (deps->reg_last)
free (deps->reg_last);
free (deps->reg_last);
deps->reg_last = NULL;
deps = NULL;

View File

@ -581,8 +581,7 @@ fence_clear (fence_t f)
gcc_assert ((s != NULL && dc != NULL && tc != NULL)
|| (s == NULL && dc == NULL && tc == NULL));
if (s != NULL)
free (s);
free (s);
if (dc != NULL)
delete_deps_context (dc);

View File

@ -449,8 +449,7 @@ set_rename (htab_t rename_map, tree old_name, tree expr)
if (!slot)
return;
if (*slot)
free (*slot);
free (*slot);
*slot = new_rename_map_elt (old_name, expr);
}
@ -676,8 +675,7 @@ if_region_set_false_region (ifsese if_region, sese region)
SESE_EXIT (region) = false_edge;
if (if_region->false_region)
free (if_region->false_region);
free (if_region->false_region);
if_region->false_region = region;
if (slot)

View File

@ -5127,11 +5127,9 @@ free_rdg (struct graph *rdg)
struct graph_edge *e;
for (e = v->succ; e; e = e->succ_next)
if (e->data)
free (e->data);
free (e->data);
if (v->data)
free (v->data);
free (v->data);
}
htab_delete (rdg->indices);

View File

@ -1619,8 +1619,7 @@ lower_try_finally (struct leh_state *state, gimple tp)
}
VEC_free (tree, heap, this_tf.dest_array);
if (this_tf.goto_queue)
free (this_tf.goto_queue);
free (this_tf.goto_queue);
if (this_tf.goto_queue_map)
pointer_map_destroy (this_tf.goto_queue_map);

View File

@ -242,8 +242,7 @@ delete_coalesce_list (coalesce_list_p cl)
{
gcc_assert (cl->cost_one_list == NULL);
htab_delete (cl->list);
if (cl->sorted)
free (cl->sorted);
free (cl->sorted);
gcc_assert (cl->num_sorted == 0);
free (cl);
}

View File

@ -157,10 +157,8 @@ delete_var_map (var_map map)
{
var_map_base_fini (map);
partition_delete (map->var_partition);
if (map->partition_to_view)
free (map->partition_to_view);
if (map->view_to_partition)
free (map->view_to_partition);
free (map->partition_to_view);
free (map->view_to_partition);
free (map);
}

View File

@ -6254,8 +6254,7 @@ free_loop_data (struct ivopts_data *data)
struct version_info *info;
info = ver_info (data, i);
if (info->iv)
free (info->iv);
free (info->iv);
info->iv = NULL;
info->has_nonlin_use = false;
info->preserve_biv = false;
@ -6282,8 +6281,7 @@ free_loop_data (struct ivopts_data *data)
{
struct iv_cand *cand = iv_cand (data, i);
if (cand->iv)
free (cand->iv);
free (cand->iv);
if (cand->depends_on)
BITMAP_FREE (cand->depends_on);
free (cand);

View File

@ -580,8 +580,7 @@ phi_trans_add (pre_expr e, pre_expr v, basic_block pred)
slot = htab_find_slot_with_hash (phi_translate_table, new_pair,
new_pair->hashcode, INSERT);
if (*slot)
free (*slot);
free (*slot);
*slot = (void *) new_pair;
}

View File

@ -1,3 +1,10 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* files.c (destroy_cpp_file): Remove useless if-before-free.
* init.c (cpp_destroy): Likewise.
* macro.c (replace_args): Likewise.
* pch.c (cpp_valid_state): Likewise.
2011-03-25 Kai Tietz <ktietz@redhat.com>
* files.c (file_hash_eq): Use filename_cmp

View File

@ -996,8 +996,7 @@ make_cpp_file (cpp_reader *pfile, cpp_dir *dir, const char *fname)
static void
destroy_cpp_file (_cpp_file *file)
{
if (file->buffer_start)
free ((void *) file->buffer_start);
free ((void *) file->buffer_start);
free ((void *) file->name);
free (file);
}

View File

@ -259,8 +259,7 @@ cpp_destroy (cpp_reader *pfile)
while (CPP_BUFFER (pfile) != NULL)
_cpp_pop_buffer (pfile);
if (pfile->out.base)
free (pfile->out.base);
free (pfile->out.base);
if (pfile->macro_buffer)
{

View File

@ -1064,8 +1064,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
/* Free the expanded arguments. */
for (i = 0; i < macro->paramc; i++)
if (args[i].expanded)
free (args[i].expanded);
free (args[i].expanded);
push_ptoken_context (pfile, node, buff, first, dest - first);
}

View File

@ -713,12 +713,9 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd)
return -1;
fail:
if (namebuf != NULL)
free (namebuf);
if (undeftab != NULL)
free (undeftab);
if (nl.defs != NULL)
free (nl.defs);
free (namebuf);
free (undeftab);
free (nl.defs);
return 1;
}

View File

@ -1,3 +1,12 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* decNumber.c (decNumberFromString): Remove useless
if-before-free test.
(decNumberCompareTotalMag, decNumberExp, decNumberFMA): Likewise.
(decNumberLn, decNumberLog10, decNumberPower): Likewise.
(decNumberReduce, decNumberSquareRoot, decAddOp): Likewise.
(decDivideOp, NEEDTWO, decExpOp, LN2): Likewise.
2011-03-28 Mike Frysinger <vapier@gentoo.org>
* .gitignore: New file.

View File

@ -711,7 +711,7 @@ decNumber * decNumberFromString(decNumber *dn, const char chars[],
/* decNumberShow(dn); */
} while(0); /* [for break] */
if (allocres!=NULL) free(allocres); /* drop any storage used */
free(allocres); /* drop any storage used */
if (status!=0) decStatus(dn, status, set);
return dn;
} /* decNumberFromString */
@ -970,8 +970,8 @@ decNumber * decNumberCompareTotalMag(decNumber *res, const decNumber *lhs,
decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
} while(0); /* end protected */
if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
if (allocbufb!=NULL) free(allocbufb); /* .. */
free(allocbufa); /* drop any storage used */
free(allocbufb); /* .. */
if (status!=0) decStatus(res, status, set);
return res;
} /* decNumberCompareTotalMag */
@ -1074,7 +1074,7 @@ decNumber * decNumberExp(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@ -1169,7 +1169,7 @@ decNumber * decNumberFMA(decNumber *res, const decNumber *lhs,
decAddOp(res, acc, fhs, set, 0, &status);
} while(0); /* end protected */
if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
free(allocbufa); /* drop any storage used */
if (status!=0) decStatus(res, status, set);
#if DECCHECK
decCheckInexact(res, set);
@ -1296,7 +1296,7 @@ decNumber * decNumberLn(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@ -1509,10 +1509,10 @@ decNumber * decNumberLog10(decNumber *res, const decNumber *rhs,
decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result */
} while(0); /* [for break] */
if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
if (allocbufb!=NULL) free(allocbufb); /* .. */
free(allocbufa); /* drop any storage used */
free(allocbufb); /* .. */
#if DECSUBSET
if (allocrhs !=NULL) free(allocrhs); /* .. */
free(allocrhs); /* .. */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@ -2253,11 +2253,11 @@ decNumber * decNumberPower(decNumber *res, const decNumber *lhs,
#endif
} while(0); /* end protected */
if (allocdac!=NULL) free(allocdac); /* drop any storage used */
if (allocinv!=NULL) free(allocinv); /* .. */
free(allocdac); /* drop any storage used */
free(allocinv); /* .. */
#if DECSUBSET
if (alloclhs!=NULL) free(alloclhs); /* .. */
if (allocrhs!=NULL) free(allocrhs); /* .. */
free(alloclhs); /* .. */
free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);
#if DECCHECK
@ -2349,7 +2349,7 @@ decNumber * decNumberReduce(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
if (allocrhs !=NULL) free(allocrhs); /* .. */
free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
return res;
@ -3111,11 +3111,11 @@ decNumber * decNumberSquareRoot(decNumber *res, const decNumber *rhs,
decNumberCopy(res, a); /* a is now the result */
} while(0); /* end protected */
if (allocbuff!=NULL) free(allocbuff); /* drop any storage used */
if (allocbufa!=NULL) free(allocbufa); /* .. */
if (allocbufb!=NULL) free(allocbufb); /* .. */
free(allocbuff); /* drop any storage used */
free(allocbufa); /* .. */
free(allocbufb); /* .. */
#if DECSUBSET
if (allocrhs !=NULL) free(allocrhs); /* .. */
free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
#if DECCHECK
@ -4130,10 +4130,10 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
}
} while(0); /* end protected */
if (allocacc!=NULL) free(allocacc); /* drop any storage used */
free(allocacc); /* drop any storage used */
#if DECSUBSET
if (allocrhs!=NULL) free(allocrhs); /* .. */
if (alloclhs!=NULL) free(alloclhs); /* .. */
free(allocrhs); /* .. */
free(alloclhs); /* .. */
#endif
return res;
} /* decAddOp */
@ -4782,11 +4782,11 @@ static decNumber * decDivideOp(decNumber *res,
#endif
} while(0); /* end protected */
if (varalloc!=NULL) free(varalloc); /* drop any storage used */
if (allocacc!=NULL) free(allocacc); /* .. */
free(varalloc); /* drop any storage used */
free(allocacc); /* .. */
#if DECSUBSET
if (allocrhs!=NULL) free(allocrhs); /* .. */
if (alloclhs!=NULL) free(alloclhs); /* .. */
free(allocrhs); /* .. */
free(alloclhs); /* .. */
#endif
return res;
} /* decDivideOp */
@ -5127,14 +5127,14 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
decFinish(res, set, &residue, status); /* final cleanup */
} while(0); /* end protected */
if (allocacc!=NULL) free(allocacc); /* drop any storage used */
free(allocacc); /* drop any storage used */
#if DECSUBSET
if (allocrhs!=NULL) free(allocrhs); /* .. */
if (alloclhs!=NULL) free(alloclhs); /* .. */
free(allocrhs); /* .. */
free(alloclhs); /* .. */
#endif
#if FASTMUL
if (allocrhi!=NULL) free(allocrhi); /* .. */
if (alloclhi!=NULL) free(alloclhi); /* .. */
free(allocrhi); /* .. */
free(alloclhi); /* .. */
#endif
return res;
} /* decMultiplyOp */
@ -5483,9 +5483,9 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
if (allocbufa!=NULL) free(allocbufa); /* .. */
if (allocbuft!=NULL) free(allocbuft); /* .. */
free(allocrhs); /* drop any storage used */
free(allocbufa); /* .. */
free(allocbuft); /* .. */
/* [status is handled by caller] */
return res;
} /* decExpOp */
@ -5794,8 +5794,8 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
if (allocbufb!=NULL) free(allocbufb); /* .. */
free(allocbufa); /* drop any storage used */
free(allocbufb); /* .. */
/* [status is handled by caller] */
return res;
} /* decLnOp */
@ -5959,8 +5959,8 @@ static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
} while(0); /* end protected */
#if DECSUBSET
if (allocrhs!=NULL) free(allocrhs); /* drop any storage used */
if (alloclhs!=NULL) free(alloclhs); /* .. */
free(allocrhs); /* drop any storage used */
free(alloclhs); /* .. */
#endif
return res;
} /* decQuantizeOp */
@ -6142,8 +6142,8 @@ decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
}
}
#if DECSUBSET
if (allocrhs!=NULL) free(allocrhs); /* free any storage used */
if (alloclhs!=NULL) free(alloclhs); /* .. */
free(allocrhs); /* free any storage used */
free(alloclhs); /* .. */
#endif
return res;
} /* decCompareOp */
@ -6277,7 +6277,7 @@ static Int decUnitCompare(const Unit *a, Int alength,
result=(*u==0 ? 0 : +1);
}
/* clean up and return the result */
if (allocacc!=NULL) free(allocacc); /* drop any storage used */
free(allocacc); /* drop any storage used */
return result;
} /* decUnitCompare */

View File

@ -1,3 +1,13 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* intrinsics/move_alloc.c (move_alloc): Remove useless
if-before-free test.
* io/fbuf.c (fbuf_destroy): Likewise.
* io/format.c (save_parsed_format): Likewise.
* io/open.c (already_open): Likewise.
* io/unit.c (free_internal_unit, close_unit_1): Likewise.
* io/unix.c (mem_close): Likewise.
2011-04-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48602

View File

@ -37,8 +37,7 @@ move_alloc (gfc_array_char * from, gfc_array_char * to)
{
int i;
if (to->data)
free (to->data);
free (to->data);
for (i = 0; i < GFC_DESCRIPTOR_RANK (from); i++)
{

View File

@ -51,8 +51,7 @@ fbuf_destroy (gfc_unit * u)
{
if (u->fbuf == NULL)
return;
if (u->fbuf->buf)
free (u->fbuf->buf);
free (u->fbuf->buf);
free (u->fbuf);
u->fbuf = NULL;
}

View File

@ -149,8 +149,7 @@ save_parsed_format (st_parameter_dt *dtp)
free_format_data (u->format_hash_table[hash].hashed_fmt);
u->format_hash_table[hash].hashed_fmt = NULL;
if (u->format_hash_table[hash].key != NULL)
free (u->format_hash_table[hash].key);
free (u->format_hash_table[hash].key);
u->format_hash_table[hash].key = get_mem (dtp->format_len);
memcpy (u->format_hash_table[hash].key, dtp->format, dtp->format_len);

View File

@ -688,8 +688,7 @@ already_open (st_parameter_open *opp, gfc_unit * u, unit_flags * flags)
}
u->s = NULL;
if (u->file)
free (u->file);
free (u->file);
u->file = NULL;
u->file_len = 0;

View File

@ -483,11 +483,9 @@ free_internal_unit (st_parameter_dt *dtp)
if (dtp->u.p.current_unit != NULL)
{
if (dtp->u.p.current_unit->ls != NULL)
free (dtp->u.p.current_unit->ls);
free (dtp->u.p.current_unit->ls);
if (dtp->u.p.current_unit->s)
free (dtp->u.p.current_unit->s);
free (dtp->u.p.current_unit->s);
destroy_unit_mutex (dtp->u.p.current_unit);
}
@ -652,8 +650,7 @@ close_unit_1 (gfc_unit *u, int locked)
delete_unit (u);
if (u->file)
free (u->file);
free (u->file);
u->file = NULL;
u->file_len = 0;

View File

@ -850,8 +850,7 @@ mem_flush (unix_stream * s __attribute__ ((unused)))
static int
mem_close (unix_stream * s)
{
if (s != NULL)
free (s);
free (s);
return 0;
}

View File

@ -1,3 +1,16 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* cp-demint.c (cplus_demangle_v3_components): Remove useless
if-before-free.
* cplus-dem.c (squangle_mop_up): Likewise.
(delete_non_B_K_work_stuff): Likewise.
* pex-common.c (pex_free): Likewise.
* pex-msdos.c (pex_msdos_cleanup): Likewise.
* pex-win32.c (mingw_rootify, msys_rootify): Likewise.
(win32_spawn): Likewise.
* regex.c (FREE_VAR, weak_alias): Likewise.
* spaces.c (spaces): Likewise.
2011-04-10 Jim Meyering <meyering@redhat.com>
Avoid memory overrun in a test leading to potential double-free.

View File

@ -206,10 +206,8 @@ cplus_demangle_v3_components (const char *mangled, int options, void **mem)
malloc (di.num_subs * sizeof (struct demangle_component *)));
if (di.comps == NULL || di.subs == NULL)
{
if (di.comps != NULL)
free (di.comps);
if (di.subs != NULL)
free (di.subs);
free (di.comps);
free (di.subs);
return NULL;
}

View File

@ -1311,8 +1311,7 @@ delete_non_B_K_work_stuff (struct work_stuff *work)
int i;
for (i = 0; i < work->ntmpl_args; i++)
if (work->tmpl_argvec[i])
free ((char*) work->tmpl_argvec[i]);
free ((char*) work->tmpl_argvec[i]);
free ((char*) work->tmpl_argvec);
work->tmpl_argvec = NULL;

View File

@ -623,12 +623,9 @@ pex_free (struct pex_obj *obj)
if (obj->next_input_name_allocated)
free (obj->next_input_name);
if (obj->children != NULL)
free (obj->children);
if (obj->status != NULL)
free (obj->status);
if (obj->time != NULL)
free (obj->time);
free (obj->children);
free (obj->status);
free (obj->time);
if (obj->remove_count > 0)
{

View File

@ -310,10 +310,8 @@ pex_msdos_cleanup (struct pex_obj *obj)
ms = (struct pex_msdos *) obj->sysdep;
for (i = 0; i < PEX_MSDOS_FILE_COUNT; ++i)
if (msdos->files[i] != NULL)
free (msdos->files[i]);
if (msdos->statuses != NULL)
free (msdos->statuses);
free (msdos->files[i]);
free (msdos->statuses);
free (msdos);
obj->sysdep = NULL;
}

View File

@ -210,10 +210,8 @@ mingw_rootify (const char *executable)
if (!namebuf || !foundbuf)
{
RegCloseKey (hKey);
if (namebuf)
free (namebuf);
if (foundbuf)
free (foundbuf);
free (namebuf);
free (foundbuf);
return executable;
}
@ -315,8 +313,7 @@ msys_rootify (const char *executable)
return tack_on_executable (buf, executable);
/* failed */
if (buf)
free (buf);
free (buf);
return executable;
}
#endif
@ -607,8 +604,7 @@ win32_spawn (const char *executable,
si,
pi))
{
if (env_block)
free (env_block);
free (env_block);
free (full_executable);
@ -618,18 +614,14 @@ win32_spawn (const char *executable,
/* Clean up. */
CloseHandle (pi->hThread);
free (full_executable);
if (env_block)
free (env_block);
free (env_block);
return (pid_t) pi->hProcess;
error:
if (env_block)
free (env_block);
if (cmdline)
free (cmdline);
if (full_executable)
free (full_executable);
free (env_block);
free (cmdline);
free (full_executable);
return (pid_t) -1;
}

View File

@ -4970,7 +4970,7 @@ weak_alias (__re_search_2, re_search_2)
#ifdef MATCH_MAY_ALLOCATE
# define FREE_VAR(var) if (var) REGEX_FREE (var); var = NULL
#else
# define FREE_VAR(var) if (var) free (var); var = NULL
# define FREE_VAR(var) free (var); var = NULL
#endif
#ifdef WCHAR
@ -8111,20 +8111,17 @@ weak_alias (__regerror, regerror)
void
regfree (regex_t *preg)
{
if (preg->buffer != NULL)
free (preg->buffer);
free (preg->buffer);
preg->buffer = NULL;
preg->allocated = 0;
preg->used = 0;
if (preg->fastmap != NULL)
free (preg->fastmap);
free (preg->fastmap);
preg->fastmap = NULL;
preg->fastmap_accurate = 0;
if (preg->translate != NULL)
free (preg->translate);
free (preg->translate);
preg->translate = NULL;
}
#ifdef _LIBC

View File

@ -53,10 +53,7 @@ spaces (int count)
if (count > maxsize)
{
if (buf)
{
free (buf);
}
free (buf);
buf = (char *) malloc (count + 1);
if (buf == (char *) 0)
return 0;

View File

@ -1,3 +1,8 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* libsupc++/del_opnt.cc (operator delete): Remove useless
if-before-free.
2011-04-19 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/48521

View File

@ -31,6 +31,5 @@ extern "C" void free (void *);
_GLIBCXX_WEAK_DEFINITION void
operator delete (void *ptr, const std::nothrow_t&) throw ()
{
if (ptr)
free (ptr);
free (ptr);
}

View File

@ -1,3 +1,7 @@
2011-04-20 Jim Meyering <meyering@redhat.com>
* lto-plugin.c (free_1, free_2): Remove useless if-before-free.
2011-04-05 Richard Guenther <rguenther@suse.de>
PR bootstrap/48431

View File

@ -312,8 +312,7 @@ free_1 (void)
{
struct ld_plugin_symbol *s = &symtab->syms[j];
free (s->name);
if (s->comdat_key)
free (s->comdat_key);
free (s->comdat_key);
}
free (symtab->syms);
symtab->syms = NULL;
@ -342,8 +341,7 @@ free_2 (void)
claimed_files = NULL;
num_claimed_files = 0;
if (arguments_file_name)
free (arguments_file_name);
free (arguments_file_name);
arguments_file_name = NULL;
}