From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28258 invoked by alias); 8 Mar 2011 14:21:21 -0000 Received: (qmail 28025 invoked by uid 22791); 8 Mar 2011 14:21:03 -0000 X-SWARE-Spam-Status: No, hits=-0.2 required=5.0 tests=AWL,BAYES_50,TW_CF,TW_CP,TW_DF,TW_HK,TW_JC,TW_TX,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx.meyering.net (HELO mx.meyering.net) (82.230.74.64) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 08 Mar 2011 14:20:45 +0000 Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000) id 29926602B1; Tue, 8 Mar 2011 15:20:42 +0100 (CET) From: Jim Meyering To: "Joseph S. Myers" Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org Subject: [PATCH v2] Re: avoid useless if-before-free tests In-Reply-To: (Joseph S. Myers's message of "Sat, 5 Mar 2011 19:16:31 +0000 (UTC)") References: <87zkp9zmq0.fsf@rho.meyering.net> Date: Tue, 08 Mar 2011 14:21:00 -0000 Message-ID: <877hc9r8w6.fsf_-_@rho.meyering.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-03/txt/msg00376.txt.bz2 Joseph S. Myers wrote: ... > We definitely don't want to make local changes to zlib for this sort of > issue, though importing a new upstream version of zlib (making sure the > local configure code still works) should be fine for 4.7. Thanks again for the feedback. I've omitted changes to the intl/, zlib/ and classpath/ directories reverted the problem you spotted, and added ChangeLog entries. Also, rather than simply removing the "free and realloc" section in README.Portability, I've replaced it with some explanation. I've taken the liberty of letting my editor remove trailing blanks in ChangeLog files. I hope that's ok. Also in ChangeLogs, I converted some leading 8-space (and 7-space) sequences to single TABs. I found no ChangeLog for libgo and no other libgo-related entries. I suspect that means I should omit this change because it belongs upstream. For now, I've added an entry in the top-level ChangeLog file: * libgo/runtime/go-select.c (__go_select): It's easier to remove than to add. Finally, I've rebased this series to apply to the latest on "master", plus the memory overrun fix I just posted. Re testing, I confirmed that the output of "make check" is essentially the same with and without these changes. The only differences were due to embedded dates and different ordering due to my use of parallel make. =46rom 0d18b70a8821ab2fc58b5ed592ed611e05a29c7f Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 3 Jan 2011 16:52:37 +0100 Subject: [PATCH 1/2] discourage unnecessary use of if before free * README.Portability: Explain why "if (P) free (P)" is best avoided. --- gcc/README.Portability | 23 ++++++++++++++++------- 1 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gcc/README.Portability b/gcc/README.Portability index 32a33e2..e099a3f 100644 --- a/gcc/README.Portability +++ b/gcc/README.Portability @@ -51,14 +51,24 @@ foo (bar, ) needs to be coded in some other way. -free and realloc ----------------- +Avoid unnecessary test before free +---------------------------------- -Some implementations crash upon attempts to free or realloc the null -pointer. Thus if mem might be null, you need to write +Since SunOS 4 stopped being a reasonable portability target, +(which happened around 2007) there has been no need to guard +against "free (NULL)". Thus, any guard like the following +constitutes a redundant test: - if (mem) - free (mem); + if (P) + free (P); + +It is better to avoid the test.[*] +Instead, simply free P, regardless of whether it is NULL. + +[*] However, if your profiling exposes a test like this in a +performance-critical loop, say where P is nearly always NULL, and +the cost of calling free on a NULL pointer would be prohibitively +high, please let us know. Trigraphs @@ -194,4 +204,3 @@ o Passing incorrect types to fprintf and friends. o Adding a function declaration for a module declared in another file to a .c file instead of to a .h file. - -- 1.7.4.1.299.ga459d =46rom 47219806715ee0f88f27df95fa99ee436d001358 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 8 Mar 2011 12:19:24 +0100 Subject: [PATCH 2/2] remove useless if-before-free tests Change "if (E) free (E);" to "free (E);" everywhere except in the intl/, zlib/ and classpath/ directories. Also transform equivalent variants like "if (E !=3D 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. --- ChangeLog | 23 ++++--- gcc/ChangeLog | 39 ++++++++++ gcc/ada/ChangeLog | 8 ++- gcc/ada/initialize.c | 3 +- gcc/c-family/ChangeLog | 133 ++++++++++++++++++-------------= ---- gcc/c-family/c-format.c | 6 +- gcc/calls.c | 15 ++--- gcc/cfgcleanup.c | 3 +- gcc/collect2.c | 3 +- gcc/config/i386/i386.c | 3 +- gcc/config/mcore/mcore.c | 3 +- gcc/coverage.c | 3 +- gcc/cp/ChangeLog | 4 + gcc/cp/tree.c | 3 +- gcc/cse.c | 6 +- gcc/cselib.c | 3 +- gcc/df-core.c | 15 ++--- gcc/fortran/ChangeLog | 5 ++ gcc/fortran/gfortranspec.c | 5 +- gcc/function.c | 3 +- gcc/gcc.c | 15 ++--- gcc/gcov.c | 6 +- gcc/gensupport.c | 12 +-- gcc/graphite-clast-to-gimple.c | 3 +- gcc/graphite-sese-to-poly.c | 3 +- gcc/haifa-sched.c | 3 +- gcc/ipa-prop.c | 3 +- gcc/ipa-pure-const.c | 3 +- gcc/ipa-reference.c | 3 +- gcc/ira-costs.c | 15 ++--- gcc/ira.c | 9 +-- gcc/java/ChangeLog | 126 +++++++++++++++++--------------= -- gcc/java/jcf-parse.c | 3 +- gcc/matrix-reorg.c | 9 +-- gcc/prefix.c | 3 +- gcc/profile.c | 3 +- gcc/reload1.c | 12 +-- gcc/sched-deps.c | 3 +- gcc/sel-sched-ir.c | 3 +- gcc/sese.c | 6 +- gcc/tree-data-ref.c | 6 +- gcc/tree-eh.c | 3 +- gcc/tree-ssa-coalesce.c | 3 +- gcc/tree-ssa-live.c | 6 +- gcc/tree-ssa-loop-ivopts.c | 6 +- gcc/tree-ssa-pre.c | 3 +- libcpp/ChangeLog | 19 ++++-- libcpp/files.c | 3 +- libcpp/init.c | 3 +- libcpp/macro.c | 3 +- libcpp/pch.c | 9 +-- libdecnumber/ChangeLog | 29 +++++--- libdecnumber/decNumber.c | 80 +++++++++++----------- libgfortran/ChangeLog | 12 ++- libgfortran/intrinsics/move_alloc.c | 3 +- libgfortran/io/fbuf.c | 3 +- libgfortran/io/format.c | 3 +- libgfortran/io/open.c | 3 +- libgfortran/io/unit.c | 9 +-- libgfortran/io/unix.c | 3 +- libgo/runtime/go-select.c | 6 +- libiberty/ChangeLog | 41 +++++++---- libiberty/cp-demint.c | 6 +- libiberty/cplus-dem.c | 13 +--- libiberty/pex-common.c | 9 +-- libiberty/pex-msdos.c | 6 +- libiberty/pex-win32.c | 24 ++---- libiberty/regex.c | 11 +-- libiberty/spaces.c | 5 +- libstdc++-v3/ChangeLog | 5 ++ libstdc++-v3/libsupc++/del_opnt.cc | 3 +- lto-plugin/ChangeLog | 18 +++-- lto-plugin/lto-plugin.c | 6 +- 73 files changed, 440 insertions(+), 451 deletions(-) diff --git a/ChangeLog b/ChangeLog index c736190..99c572c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-03-08 Jim Meyering + + * libgo/runtime/go-select.c (__go_select): Remove useless + if-before-free test. + 2011-03-06 Joey Ye * MAINTAINERS: Update my e-mail address. @@ -825,11 +830,11 @@ * configure: Regenerate. 2010-01-07 Kaveh R. Ghazi - Francois-Xavier Coudert + Francois-Xavier Coudert PR bootstrap/42424 * configure.ac: Include libtool m4 files. - (_LT_CHECK_OBJDIR): Call it. + (_LT_CHECK_OBJDIR): Call it. (extra_mpc_mpfr_configure_flags, extra_mpc_gmp_configure_flags, gmplibs, ppllibs, clooglibs): Use $lt_cv_objdir. @@ -970,7 +975,7 @@ 2009-10-26 Johannes Singler - * MAINTAINERS (Write After Approval): Update my e-mail address. + * MAINTAINERS (Write After Approval): Update my e-mail address. 2009-10-23 Rainer Orth @@ -1006,7 +1011,7 @@ 2009-10-07 Rafael Avila de Espindola * MAINTAINERS: Change my email address. Change plugi-in to plugin. -=09 + 2009-10-07 Richard Guenther * MAINTAINERS (LTO): List Diego Novillo, Rafael Avila de Espindola, @@ -1258,7 +1263,7 @@ * configure.ac (sh*-*-elf): Don't add target-libgloss to noconfigdirs. * configure: Regenerate. -=09 + 2009-07-28 Rask Ingemann Lambertsen * MAINTAINERS (Write After Approval): Update my e-mail address. @@ -1323,7 +1328,7 @@ 2009-06-09 Ghassan Shobaki - * MAINTAINERS: Added my name to the write-after-approval list + * MAINTAINERS: Added my name to the write-after-approval list 2009-06-08 Kaveh R. Ghazi @@ -1333,8 +1338,8 @@ 2009-06-03 Jerome Guitton Ralf Wildenhues - * Makefile.tpl (all): Avoid a trailing backslash. - * Makefile.in: Regenerate. + * Makefile.tpl (all): Avoid a trailing backslash. + * Makefile.in: Regenerate. 2009-06-03 Ben Elliston @@ -1550,7 +1555,7 @@ 2009-03-11 Nicola Pero * MAINTAINERS: Update e-mail address. -=09 + 2009-03-11 Dorit Nuzman * MAINTAINERS: Remove myself as auto-vectorizer maintainer. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ece9ec1..520924b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,42 @@ +2011-03-08 Jim Meyering + + 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-03-08 Jakub Jelinek PR tree-optimization/48022 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index defad83..fa56f88 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2011-03-08 Jim Meyering + + * initialize.c (__gnat_initialize): Remove useless if-before-free. + 2011-02-14 Eric Botcazou * gcc-interface/misc.c (gnat_init_options): Do not concatenate -I and @@ -39,7 +43,7 @@ dependency. 2011-01-04 Pascal Obry - Eric Botcazou + Eric Botcazou * gcc-interface/decl.c: Disable Stdcall convention handling for 64-bit. @@ -55,7 +59,7 @@ the CICO mechanism. 2011-01-04 Olivier Hainque - Eric Botcazou + Eric Botcazou * gcc-interface/trans.c (BLOCK_SOURCE_END_LOCATION): Provide default. (set_end_locus_from_node): New function. diff --git a/gcc/ada/initialize.c b/gcc/ada/initialize.c index 32ea0e5..e2ad904 100644 --- a/gcc/ada/initialize.c +++ b/gcc/ada/initialize.c @@ -217,8 +217,7 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED) FindClose (hDir); - if (dir !=3D NULL) - free (dir); + free (dir); } } else diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 60fc08f..c0b7ae6 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2011-03-08 Jim Meyering + + * c-format.c (init_dollar_format_checking): Remove useless + if-before-free. + 2011-03-07 Nathan Froyd PR c/47786 @@ -69,7 +74,7 @@ 2010-12-18 Nicola Pero * c-objc.h (objc_maybe_warn_exceptions): New. - * stub-objc.c (objc_maybe_warn_exceptions): New.=09 + * stub-objc.c (objc_maybe_warn_exceptions): New. 2010-12-10 Nathan Froyd @@ -96,7 +101,7 @@ * stub-objc.c (objc_finish_function): New. (objc_non_volatilized_type): Removed. (objc_type_quals_match): Removed. -=09 + 2010-11-30 Joseph Myers * c-common.h (parse_optimize_options): Declare. @@ -173,7 +178,7 @@ * c-common.h (objc_declare_protocols): Added additional argument. * stub-objc.c (objc_declare_protocol): Same change. -=09 + 2010-11-18 Nathan Froyd PR c/33193 @@ -253,7 +258,7 @@ * c-format.c (format_type): New type gcc_objc_string_format_type. (valid_stringptr_type_p): New. (handle_format_arg_attribute): Use valid_stringptr_type_p (). - (check_format_string): Pass expected type, use=20 + (check_format_string): Pass expected type, use valid_stringptr_type_p (), check that the format string types are consistent with the format specification. (decode_format_attr): Warn if NSString is used outside objective-c. @@ -270,7 +275,7 @@ 2010-11-04 Nicola Pero - Fixed using the Objective-C 2.0 dot-syntax with class names.=09 + Fixed using the Objective-C 2.0 dot-syntax with class names. * c-common.h (objc_build_class_component_ref): New. * stub-objc.c (objc_build_class_component_ref): New. @@ -294,6 +299,14 @@ * c-common.c (conversion_warning, warn_for_collisions_1): Use EXPR_LOC_OR_HERE. +2010-10-29 Arnaud Charlet + Matthew Gingell + + * c-ada-spec.c (separate_class_package): New function. + (pp_ada_tree_identifier): Prefix references to C++ classes with the + name of their enclosing package. + (print_ada_declaration): Use separate_class_package. + 2010-10-30 Nicola Pero Implemented Objective-C 2.0 @property, @synthesize and @dynamic. @@ -311,14 +324,6 @@ objc_maybe_build_component_ref. (objc_build_setter_call): Renamed to objc_maybe_build_modify_expr. (objc_is_property_ref): New. -=09 -2010-10-29 Arnaud Charlet - Matthew Gingell - - * c-ada-spec.c (separate_class_package): New function. - (pp_ada_tree_identifier): Prefix references to C++ classes with the - name of their enclosing package. - (print_ada_declaration): Use separate_class_package. 2010-10-27 Jason Merrill @@ -327,6 +332,17 @@ * c-common.c (check_case_value): Remove special C++ code. +2010-10-23 Nicola Pero + + * c-common.h (objc_maybe_printable_name): New. + * stub-objc.c (objc_maybe_printable_name): New. + +2010-10-27 Nicola Pero + + * c-common.h (objc_add_property_variable): Renamed to + objc_add_property_declaration. Added location argument. + * stub-objc.c (objc_add_property_variable): Same change. + 2010-10-27 Nicola Pero * c-common.h (enum rid): Added RID_READWRITE, RID_ASSIGN, @@ -340,17 +356,6 @@ * stub-objc.c (objc_add_property_declaration): Added additional arguments. (objc_set_property_attr): Removed. -=09 -2010-10-27 Nicola Pero - - * c-common.h (objc_add_property_variable): Renamed to - objc_add_property_declaration. Added location argument. - * stub-objc.c (objc_add_property_variable): Same change. -=09 -2010-10-23 Nicola Pero - - * c-common.h (objc_maybe_printable_name): New. - * stub-objc.c (objc_maybe_printable_name): New. 2010-10-22 Artjoms Sinkarovs Andrew Pinski @@ -369,31 +374,15 @@ (objc_start_method_definition): Same change. (objc_build_method_signature): Same change. -2010-10-20 Nicola Pero +2010-10-17 Nicola Pero - * c-common.h (finish_file): Removed. - (objc_write_global_declarations): New. - * c-opts.c (c_common_parse_file): Do not call finish_file. - * stub-objc.c (objc_write_global_declarations): New. -=09 -2010-10-18 Nicola Pero + Merge from 'apple/trunk' branch on FSF servers. - Implemented parsing @synthesize and @dynamic for - Objective-C/Objective-C++. - * c-common.h (enum rid): Add RID_AT_SYNTHESIZE and RID_AT_DYNAMIC. - (objc_add_synthesize_declaration): New. - (objc_add_dynamic_declaration): New. - * c-common.c (c_common_reswords): Add synthesize and dynamic. - * stub-objc.c (objc_add_synthesize_declaration): New. - (objc_add_dynamic_declaration): New. -=09 -2010-10-18 Michael Meissner + 2006-03-27 Fariborz Jahanian - PR target/46041 - * c-cppbuiltin.c (mode_has_fma): Move function here from - builtins.c. Don't use the fma optab, instead just use the - HAVE_fma* macros, so that __FP_FAST_FMA* will be defined when - using -save-temps. + Radar 4133425 + * c-common.h (objc_diagnose_private_ivar): New decl. + * stub-objc.c (objc_diagnose_private_ivar): New stub. 2010-10-18 Nicola Pero @@ -401,19 +390,35 @@ 2005-11-08 Fariborz Jahanian - Radar 4330422 + Radar 4330422 * c-common.h (objc_non_volatilized_type): New declaration * stub-objc.c (objc_non_volatilized_type): New stub. -2010-10-17 Nicola Pero +2010-10-18 Michael Meissner - Merge from 'apple/trunk' branch on FSF servers. + PR target/46041 + * c-cppbuiltin.c (mode_has_fma): Move function here from + builtins.c. Don't use the fma optab, instead just use the + HAVE_fma* macros, so that __FP_FAST_FMA* will be defined when + using -save-temps. - 2006-03-27 Fariborz Jahanian +2010-10-18 Nicola Pero - Radar 4133425 - * c-common.h (objc_diagnose_private_ivar): New decl. - * stub-objc.c (objc_diagnose_private_ivar): New stub. + Implemented parsing @synthesize and @dynamic for + Objective-C/Objective-C++. + * c-common.h (enum rid): Add RID_AT_SYNTHESIZE and RID_AT_DYNAMIC. + (objc_add_synthesize_declaration): New. + (objc_add_dynamic_declaration): New. + * c-common.c (c_common_reswords): Add synthesize and dynamic. + * stub-objc.c (objc_add_synthesize_declaration): New. + (objc_add_dynamic_declaration): New. + +2010-10-20 Nicola Pero + + * c-common.h (finish_file): Removed. + (objc_write_global_declarations): New. + * c-opts.c (c_common_parse_file): Do not call finish_file. + * stub-objc.c (objc_write_global_declarations): New. 2010-10-17 Iain Sandoe @@ -511,7 +516,7 @@ objective-c keywords. (objc_set_method_opt): New declaration. * stub-objc.c (objc_set_method_opt): New stub. -=09 + 2010-09-30 Joseph Myers * c-common.c (handle_optimize_attribute): Pass &global_options to @@ -529,8 +534,8 @@ 2010-09-29 Nicola Pero - Merge from 'apple/trunk' branch on FSF servers.=09 -=09 + Merge from 'apple/trunk' branch on FSF servers. + 2005-10-04 Fariborz Jahanian Radar 4281748 @@ -562,7 +567,7 @@ 2010-09-28 Iain Sandoe - * c-common.h (objc_add_method_declaration): Adjust prototype to=20 + * c-common.h (objc_add_method_declaration): Adjust prototype to include attributes. (objc_start_method_definition): Likewise. (objc_build_keyword_decl): Likewise. @@ -586,11 +591,11 @@ 2010-09-27 Nicola Pero - Merge from 'apple/trunk' branch on FSF servers.=09 + Merge from 'apple/trunk' branch on FSF servers. 2005-12-15 Fariborz Jahanian - Radar 4229905=09 + Radar 4229905 * c-common.h (objc_have_common_type): New declaration. * stub-objc.c (objc_have_common_type): New stub. @@ -598,7 +603,7 @@ Radar 4154928 * c-common.h (objc_common_type): New prototype. - * stub-objc.c (objc_common_type): New stub.=09 + * stub-objc.c (objc_common_type): New stub. 2010-09-24 Jan Hubicka @@ -844,8 +849,8 @@ 2010-06-24 Andi Kleen - * c-common.c (warn_for_omitted_condop): New. - * c-common.h (warn_for_omitted_condop): Add prototype. + * c-common.c (warn_for_omitted_condop): New. + * c-common.h (warn_for_omitted_condop): Add prototype. 2010-06-21 Joseph Myers @@ -891,7 +896,7 @@ 2010-06-11 Manuel L=F3pez-Ib=E1=F1ez - * c-common.c (conversion_warning): Warn at expression + * c-common.c (conversion_warning): Warn at expression location. 2010-06-10 Joseph Myers @@ -957,7 +962,7 @@ 2010-06-05 Steven Bosscher - * c-common.c: Moved to here from parent directory.=20 + * c-common.c: Moved to here from parent directory. * c-common.def: Likewise. * c-common.h: Likewise. * c-cppbuiltin.c: Likewise. diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c index 85831eb..2f8887f1 100644 --- a/gcc/c-family/c-format.c +++ b/gcc/c-family/c-format.c @@ -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 =3D dollar_arguments_count; dollar_arguments_used =3D XNEWVEC (char, dollar_arguments_alloc); dollar_arguments_pointer_p =3D XNEWVEC (char, dollar_arguments_alloc= ); diff --git a/gcc/calls.c b/gcc/calls.c index f539f66..de953d0 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -2549,8 +2549,7 @@ expand_call (tree exp, rtx target, int ignore) highest_outgoing_arg_in_use =3D 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 =3D XNEWVEC (char, highest_outgoing_arg_in_use); stack_usage_map =3D stack_usage_map_buf; @@ -2655,8 +2654,7 @@ expand_call (tree exp, rtx target, int ignore) =3D stack_arg_under_construction; stack_arg_under_construction =3D 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 =3D XCNEWVEC (char, highest_outgoing_arg_in_use); stack_usage_map =3D stack_usage_map_buf; highest_outgoing_arg_in_use =3D 0; @@ -3148,8 +3146,7 @@ expand_call (tree exp, rtx target, int ignore) /* Free up storage we no longer need. */ for (i =3D 0; i < num_actuals; ++i) - if (args[i].aligned_regs) - free (args[i].aligned_regs); + free (args[i].aligned_regs); insns =3D get_insns (); end_sequence (); @@ -3204,8 +3201,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, rt= x value, stack_usage_map =3D initial_stack_usage_map; } - if (stack_usage_map_buf) - free (stack_usage_map_buf); + free (stack_usage_map_buf); return value; diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index aaa0ea5..dda4d52 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -650,8 +650,7 @@ try_forward_edges (int mode, basic_block b) ei_next (&ei); } - if (threaded_edges) - free (threaded_edges); + free (threaded_edges); return changed; } =0C diff --git a/gcc/collect2.c b/gcc/collect2.c index 42e35b6..9eac3cb 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -2092,8 +2092,7 @@ collect_execute (const char *prog, char **argv, const= char *outname, fatal (errmsg); } - if (response_arg) - free (response_arg); + free (response_arg); return pex; } diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 82d999b..936c3cf 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4765,8 +4765,7 @@ ix86_valid_target_attribute_tree (tree args) /* Free up memory allocated to hold the strings */ for (i =3D 0; i < IX86_FUNCTION_SPECIFIC_MAX; i++) - if (option_strings[i]) - free (option_strings[i]); + free (option_strings[i]); } return t; diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c index 8118276..f527452 100644 --- a/gcc/config/mcore/mcore.c +++ b/gcc/config/mcore/mcore.c @@ -1978,8 +1978,7 @@ mcore_expand_prolog (void) =20=20=20=20=20=20=20 gcc_assert (GET_CODE (x) =3D=3D SYMBOL_REF); =20=20=20=20=20=20=20 - if (mcore_current_function_name) - free (mcore_current_function_name); + free (mcore_current_function_name); =20=20=20=20=20=20=20 mcore_current_function_name =3D xstrdup (XSTR (x, 0)); =20=20=20=20=20=20=20 diff --git a/gcc/coverage.c b/gcc/coverage.c index 5da5464..b4da548 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -521,8 +521,7 @@ coverage_checksum_string (unsigned chksum, const char *= string) } chksum =3D crc32_string (chksum, string); - if (dup) - free (dup); + free (dup); return chksum; } diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f18ce9c..6cfa362 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2011-03-08 Jim Meyering + + * tree.c (cxx_printable_name_internal): Remove useless if-before-free. + 2011-03-07 Jason Merrill PR c++/48003 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 56639ff..91e7078 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1506,8 +1506,7 @@ cxx_printable_name_internal (tree decl, int v, bool t= ranslate) gcc_assert (uid_ring[ring_counter] !=3D DECL_UID (current_function_d= ecl)); } - if (print_ring[ring_counter]) - free (print_ring[ring_counter]); + free (print_ring[ring_counter]); print_ring[ring_counter] =3D xstrdup (lang_decl_name (decl, v, translate= )); uid_ring[ring_counter] =3D DECL_UID (decl); diff --git a/gcc/cse.c b/gcc/cse.c index f7b477c..d83b38a 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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 =3D XNEWVEC (struct cse_reg_info, new_size); cse_reg_info_table_size =3D new_size; cse_reg_info_table_first_uninitialized =3D 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) diff --git a/gcc/cselib.c b/gcc/cselib.c index c142d67..ce8564b 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -2429,8 +2429,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 =3D cselib_nregs + (63 + cselib_nregs) / 16; diff --git a/gcc/df-core.c b/gcc/df-core.c index 36270bf..2860521 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -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 =3D 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 =3D XNEWVEC (int, last_basic_block); df->postorder_inverted =3D XNEWVEC (int, last_basic_block); df->n_blocks =3D post_order_compute (df->postorder, true, true); @@ -1726,8 +1722,7 @@ df_check_cfg_clean (void) static void df_set_clean_cfg (void) { - if (saved_cfg) - free (saved_cfg); + free (saved_cfg); saved_cfg =3D df_compute_cfg_image (); } diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a479ef6..2f694ff 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-03-08 Jim Meyering + + * gfortranspec.c (lang_specific_pre_link): Remove useless + if-before-free. + 2011-03-06 Paul Thomas Jerry DeLisle diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 2d732fd..4d939a0 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -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 =3D=3D NULL && library) do_spec ("%:include(libgfortran.spec)"); return 0; diff --git a/gcc/function.c b/gcc/function.c index 19b480d..d5efa4a 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -211,8 +211,7 @@ free_after_compilation (struct function *f) prologue_insn_hash =3D NULL; epilogue_insn_hash =3D 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 =3D NULL; diff --git a/gcc/gcc.c b/gcc/gcc.c index 75f522e..6906089 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -4782,8 +4782,7 @@ do_spec_1 (const char *spec, int inswitch, const char= *soft_matched_part) t->filename_length =3D temp_filename_length; } - if (saved_suffix) - free (saved_suffix); + free (saved_suffix); obstack_grow (&obstack, t->filename, t->filename_length); delete_this_arg =3D 1; @@ -6700,12 +6699,10 @@ warranty; not even for MERCHANTABILITY or FITNESS F= OR 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] =3D NULL; - if (debug_check_temp_file[1]) - free (debug_check_temp_file[1]); + free (debug_check_temp_file[1]); debug_check_temp_file[1] =3D NULL; } @@ -6749,12 +6746,10 @@ warranty; not even for MERCHANTABILITY or FITNESS F= OR 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] =3D NULL; - if (debug_check_temp_file[1]) - free (debug_check_temp_file[1]); + free (debug_check_temp_file[1]); debug_check_temp_file[1] =3D NULL; } } diff --git a/gcc/gcov.c b/gcc/gcov.c index 2fbeaf5..dd71224 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -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 =3D bbg_file_name =3D NULL; bbg_file_time =3D 0; bbg_stamp =3D 0; diff --git a/gcc/gensupport.c b/gcc/gensupport.c index e81682c..1c308c7 100644 --- a/gcc/gensupport.c +++ b/gcc/gensupport.c @@ -350,8 +350,7 @@ identify_predicable_attribute (void) if (p_true =3D=3D NULL || strchr (++p_true, ',') !=3D NULL) { error_with_line (elem->lineno, "attribute `predicable' is not a bool= ean"); - if (p_false) - free (p_false); + free (p_false); return; } p_true[-1] =3D '\0'; @@ -367,15 +366,13 @@ identify_predicable_attribute (void) case CONST: error_with_line (elem->lineno, "attribute `predicable' cannot be con= st"); - 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; } @@ -387,8 +384,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); } } diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 47a03d5..83c0d6d 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -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 =3D new_clast_name_index (name, index); } diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 064ded3..7474be0 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -190,8 +190,7 @@ free_data_refs_aux (VEC (data_reference_p, heap) *datar= efs) { base_alias_pair *bap =3D (base_alias_pair *)(dr->aux); - if (bap->alias_set) - free (bap->alias_set); + free (bap->alias_set); free (bap); dr->aux =3D NULL; diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index e16561f..67cef40 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -5556,8 +5556,7 @@ haifa_finish_h_i_d (void) FOR_EACH_VEC_ELT (haifa_insn_data_def, h_i_d, i, data) { - if (data->reg_pressure !=3D NULL) - free (data->reg_pressure); + free (data->reg_pressure); for (use =3D data->reg_use_list; use !=3D NULL; use =3D next) { next =3D use->next_insn_use; diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 82599f1..58f3303d 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -1893,8 +1893,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)); } diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 3b4cc02..6a8b391 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1667,8 +1667,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 diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index f874a2e..40fa6bc 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -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); diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 2329613..2afddca 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -1619,22 +1619,17 @@ free_ira_costs (void) { int i; - if (init_cost !=3D NULL) - free (init_cost); + free (init_cost); init_cost =3D NULL; for (i =3D 0; i < MAX_RECOG_OPERANDS; i++) { - if (op_costs[i] !=3D NULL) - free (op_costs[i]); - if (this_op_costs[i] !=3D NULL) - free (this_op_costs[i]); + free (op_costs[i]); + free (this_op_costs[i]); op_costs[i] =3D this_op_costs[i] =3D NULL; } - if (temp_costs !=3D NULL) - free (temp_costs); + free (temp_costs); temp_costs =3D NULL; - if (cost_classes !=3D NULL) - free (cost_classes); + free (cost_classes); cost_classes =3D NULL; } diff --git a/gcc/ira.c b/gcc/ira.c index 68d47fb..b8a72a3 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -1150,10 +1150,8 @@ free_register_move_costs (void) for (mode =3D 0; mode < MAX_MACHINE_MODE; mode++) { - if (ira_may_move_in_cost[mode] !=3D NULL) - free (ira_may_move_in_cost[mode]); - if (ira_may_move_out_cost[mode] !=3D NULL) - free (ira_may_move_out_cost[mode]); + free (ira_may_move_in_cost[mode]); + free (ira_may_move_out_cost[mode]); ira_register_move_cost[mode] =3D NULL; ira_may_move_in_cost[mode] =3D NULL; ira_may_move_out_cost[mode] =3D NULL; @@ -3036,8 +3034,7 @@ build_insn_chain (void) } for (i =3D 0; i < (unsigned int) max_regno; i++) - if (live_subregs[i]) - free (live_subregs[i]); + free (live_subregs[i]); reload_insn_chain =3D c; *p =3D NULL; diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5b95565..0931ad8 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2011-03-08 Jim Meyering + + * jcf-parse.c (java_parse_file): Remove useless if-before-free. + 2011-02-13 Joseph Myers * jvspec.c (jvgenmain_spec): Remove %{a*}. @@ -17,7 +21,7 @@ 2011-01-07 Kai Tietz PR bootstrap/47215 - * decl.c (java_init_decl_processing): Initialize unsigned_type_nod= e. + * decl.c (java_init_decl_processing): Initialize unsigned_type_node. 2011-01-07 Kai Tietz @@ -139,7 +143,7 @@ 2010-10-04 Andi Kleen * Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain): - Add + to build rule. + Add + to build rule. 2010-09-29 Joseph Myers @@ -685,7 +689,7 @@ 2009-07-07 Manuel L=F3pez-Ib=E1=F1ez * class.c: Replace %J by an explicit location. Update all calls. -=09 + 2009-07-07 Manuel L=F3pez-Ib=E1=F1ez * jcf-parse.c: Replace %H by an explicit location. Update all calls. @@ -700,7 +704,7 @@ (MANGLE_CXX_KEYWORDS): New macro. (append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS. (append_gpp_mangled_name): Likewise. - * mangle.c: Move code to mangle_name.c.=20 + * mangle.c: Move code to mangle_name.c. (mangle_member_name): Don't call cxx_keyword_p. 2009-06-12 Aldy Hernandez @@ -718,7 +722,7 @@ * builtins.c: Same. * expr.c: Same. * java-tree.h (PUSH_FIELD): Add location field. -=09 + 2009-06-09 Ian Lance Taylor * verify.h: Remove extern "C". @@ -785,9 +789,9 @@ 2009-04-09 Paolo Bonzini - * builtins.c (compareAndSwapLong_builtin, - compareAndSwapInt_builtin, compareAndSwapObject_builtin, - VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. + * builtins.c (compareAndSwapLong_builtin, + compareAndSwapInt_builtin, compareAndSwapObject_builtin, + VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc. 2009-03-31 Richard Guenther @@ -932,7 +936,7 @@ mixed declarations and code. 2008-05-02 Doug Kwan -=09 + * expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to _Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0. @@ -947,8 +951,8 @@ * java-gimplify.c (java_gimplify_expr): Make pre_p and post_p sequences. - (java_gimplify_self_mod_expr): Same.=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 - * java-tree.h (java_gimplify_expr): Make pre_p and post_p=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20 + (java_gimplify_self_mod_expr): Same. + * java-tree.h (java_gimplify_expr): Make pre_p and post_p sequences. 2008-07-24 Jan Hubicka @@ -1094,9 +1098,9 @@ 2008-04-03 Paolo Bonzini - * java-tree.h (insert_block): Kill. - * decl.c (insert_block): Kill. -=09=09 + * java-tree.h (insert_block): Kill. + * decl.c (insert_block): Kill. + 2008-04-01 Joseph Myers * gcj.texi: Include gpl_v3.texi instead of gpl.texi @@ -1127,10 +1131,10 @@ 2008-03-11 Paolo Bonzini - * jcf-parse.c (java_parse_file): Assert binding levels are - left in order. - * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack= ): - Delete. + * jcf-parse.c (java_parse_file): Assert binding levels are + left in order. + * lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack): + Delete. 2008-03-02 Jakub Jelinek @@ -1459,12 +1463,12 @@ 2007-07-25 Kaveh R. Ghazi * class.c (java_treetreehash_hash, java_treetreehash_compare): - Constify.=20 + Constify. * expr.c (type_assertion_eq): Likewise. * jcf-io.c (compare_path): Likewise. * jcf-parse.c (cmpstringp): Likewise. * verify-impl.c (get_one_type, compute_argument_types, - compute_return_type): Likewise.=20 + compute_return_type): Likewise. 2007-07-16 Rainer Orth @@ -1490,7 +1494,7 @@ 2007-07-03 David Daney - * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to=20 + * java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to include path. (doc/gcj.dvi): Same. (doc/gcj.pdf): Same. @@ -1541,16 +1545,16 @@ 2007-04-03 Andrew Haley - * jvgenmain.c (main): Change main to use class$, not class$$. - (do_mangle_classname): Likewise. - * class.c (hide): New function. - (add_field): Hide everything that shouldn't be visible outside a - DSO. - (build_static_class_ref): Likewise. - (build_classdollar_field): Likewise. - (make_class_data): Likewise. - (layout_class_method): Likewise. - * expr.c (special_method_p): New function. + * jvgenmain.c (main): Change main to use class$, not class$$. + (do_mangle_classname): Likewise. + * class.c (hide): New function. + (add_field): Hide everything that shouldn't be visible outside a + DSO. + (build_static_class_ref): Likewise. + (build_classdollar_field): Likewise. + (make_class_data): Likewise. + (layout_class_method): Likewise. + * expr.c (special_method_p): New function. * class.c (push_class): Don't bogusly guess the source filename. * jcf-parse.c (give_name_to_class): Don't set input_location from @@ -2064,7 +2068,7 @@ * expr.c (rewrite_arglist_getcaller): New. (rewrite_arglist_getclass): Fix indentation. - (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and=20 + (rules): Add gnu.classpath.VMStackWalker.getCallingClass() and gnu.classpath.VMStackWalker.getCallingClassLoader(). * builtins.c (initialize_builtins): Remove duplicate def'n of __sync_synchronize. @@ -2129,21 +2133,21 @@ * jcf-parse.c (field_offsets, bit_obstack): New variables. (jcf_parse): Write end marker to annotation_data. (java_parse_file): Create field_offsets bitmap. Destroy it. - (annotation_grow, annotation_rewrite_byte)=20 - (annotation_rewrite_short, annotation_rewrite_int)=20 - (annotation_read_short, annotation_write_byte)=20 - (annotation_write_short, annotation_write_int)=20 - (handle_long_constant, handle_constant, handle_element_value)=20 - (handle_annotation, handle_annotations)=20 - (handle_annotation_attribute, rewrite_reflection_indexes)=20 - (handle_member_annotations, handle_parameter_annotations)=20 + (annotation_grow, annotation_rewrite_byte) + (annotation_rewrite_short, annotation_rewrite_int) + (annotation_read_short, annotation_write_byte) + (annotation_write_short, annotation_write_int) + (handle_long_constant, handle_constant, handle_element_value) + (handle_annotation, handle_annotations) + (handle_annotation_attribute, rewrite_reflection_indexes) + (handle_member_annotations, handle_parameter_annotations) (handle_default_annotation): New functions. - (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE)=20 - (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE)=20 - (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE)=20 - (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE)=20 + (HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) + (HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE) (HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions. - * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New.=20 + * java-tree.h (enum jv_attr_type, enum jv_attr_kind): New. (TYPE_REFLECTION_DATA): New. (TYPE_REFLECTION_DATASIZE): New. * jcf.h (enum cpool_tag): Convert a bunch of #define constants to @@ -2256,7 +2260,7 @@ putVolatile_builtin, getVolatile_builtin): New builtins. 2006-06-08 Andrew Haley -=20 + * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to get_symbol_table_index(). (maybe_rewrite_invocation): Set SPECIAL if we need to access a @@ -2276,7 +2280,7 @@ it to build_symbol_entry(). * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set special accordingly. -=20 + 2006-09-08 Andrew Haley * class.c (layout_class_method): Use build_java_signature, not @@ -2313,9 +2317,9 @@ 2006-07-07 Andrew Haley - * jcf-parse.c (set_source_filename): Don't check for + * jcf-parse.c (set_source_filename): Don't check for CLASS_FROM_CURRENTLY_COMPILED_P. - Remove // comments. + Remove // comments. 2006-07-07 Andrew Haley @@ -2521,7 +2525,7 @@ * java-tree.h (update_aliases): Remove * expr.c (expand_iinc): Remove call to update_aliases(). (STORE_INTERNAL): Likewise. - * decl.c (update_aliases, initialize_local_variable)=20 + * decl.c (update_aliases, initialize_local_variable) (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls. 2006-06-19 Andrew Haley @@ -2821,7 +2825,7 @@ * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for array types. -=09 + 2006-02-08 Tom Tromey PR java/22578: @@ -3060,7 +3064,7 @@ * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for the newly created type. Set import lists here, not in create_class. (jdep_resolve_class): Set current_class. - (do_resolve_class): Use current_class's TYPE_PACKAGE to determine=20 + (do_resolve_class): Use current_class's TYPE_PACKAGE to determine the current package context, not ctxp->package. (cicp_cache): Removed. (class_in_current_package): Simplify implementation using TYPE_PACKAGE. @@ -3070,7 +3074,7 @@ 2005-09-09 Andrew Haley - PR libgcj/23182=20 + PR libgcj/23182 * expr.c (pop_type_0): If the expected type is object or ptr (i.e. void*), return the type of the object we just popped from the stack. @@ -3228,11 +3232,11 @@ empty_statement. 2005-07-08 Daniel Berlin -=09 + * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common. (LABEL_PENDING_CHAIN): Ditto. (LABEL_PC): Ditto. - (DECL_BIT_INDEX): Ditto.=09 + (DECL_BIT_INDEX): Ditto. 2005-07-07 Bryce McKinlay @@ -3241,7 +3245,7 @@ check_inner_class_access. (check_inner_class_access): Use inner_class_accessible. (resolve_inner_class): Simplify arguments. Create circularity hash - here. Keep looking for classes if we found one that was inaccessible.=20 + here. Keep looking for classes if we found one that was inaccessible. Return the inaccessible class only if there is no other match. (do_resolve_class): Update for new resolve_inner_class arguments. Don't create circularity_hash here. @@ -3256,7 +3260,7 @@ (java_complete_expand_method): Don't use purge_unchecked_exceptions or save/restore the exception list. (check_thrown_exceptions): Add uncaught exceptions in anonymous - class initializers and constructors to the throws clause of the method.=09 + class initializers and constructors to the throws clause of the method. 2005-07-05 Bryce McKinlay @@ -3431,7 +3435,7 @@ 2005-05-26 Bryce McKinlay - * decl.c (GCJ_BINARYCOMPAT_ADDITION,=20 + * decl.c (GCJ_BINARYCOMPAT_ADDITION, GCJ_BOOTSTRAP_LOADER_ADDITION): Removed. (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER, MINOR_BINARYCOMPAT_ABI_VERSION): New. @@ -3626,7 +3630,7 @@ 2005-04-27 Bryce McKinlay * gcj.texi (libgcj Runtime Properties): Remove obsolete - gnu.gcj.runtime.NameFinder.* system properties. Update documentation=20 + gnu.gcj.runtime.NameFinder.* system properties. Update documentation for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname. 2005-04-25 Kaveh R. Ghazi @@ -3673,7 +3677,7 @@ * java-except.h (struct eh_range.handler): Remove unused field. (handle_nested_ranges): Remove function declaration. - (sanity_check_exception_range): Add function declaration.=09 + (sanity_check_exception_range): Add function declaration. * verify.c (verify_jvm_instructions): Remove call to handle_nested_ranges. * verify-glue.c (verify_jvm_instructions_new): Call @@ -3772,7 +3776,7 @@ PR java/20502 * jcf-parse.c (duplicate_class_warning): New function. - (java_parse_file): Call duplicate_class_warning if=20 + (java_parse_file): Call duplicate_class_warning if CLASS_FROM_CURRENTLY_COMPILED_P is already set. (parse_zip_file_entries): Likewise. Also set CLASS_FROM_CURRENTLY_COMPILED_P. diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index d10791f..2a1d522 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -1843,8 +1843,7 @@ java_parse_file (void) list =3D next; } - if (file_list !=3D NULL) - free (file_list); + free (file_list); if (filename_count =3D=3D 0) warning (0, "no input file specified"); diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c index c303143..8ea6e84 100644 --- a/gcc/matrix-reorg.c +++ b/gcc/matrix-reorg.c @@ -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. diff --git a/gcc/prefix.c b/gcc/prefix.c index c72203c..0167f9c 100644 --- a/gcc/prefix.c +++ b/gcc/prefix.c @@ -103,8 +103,7 @@ get_key_value (char *key) if (prefix =3D=3D 0) prefix =3D std_prefix; - if (temp) - free (temp); + free (temp); return prefix; } diff --git a/gcc/profile.c b/gcc/profile.c index 2334101..ed264bc 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -828,8 +828,7 @@ compute_value_histograms (histogram_values values) } for (t =3D 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=3D1, diff --git a/gcc/reload1.c b/gcc/reload1.c index 3d58e58..d07febd 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4206,19 +4206,15 @@ free_reg_equiv (void) { int i; - if (reg_equiv_constant) - free (reg_equiv_constant); - if (reg_equiv_invariant) - free (reg_equiv_invariant); + free (reg_equiv_constant); + free (reg_equiv_invariant); reg_equiv_constant =3D 0; reg_equiv_invariant =3D 0; VEC_free (rtx, gc, reg_equiv_memory_loc_vec); reg_equiv_memory_loc =3D 0; - if (offsets_known_at) - free (offsets_known_at); - if (offsets_at) - free (offsets_at); + free (offsets_known_at); + free (offsets_at); offsets_at =3D 0; offsets_known_at =3D 0; diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 7293fc3..240e0e3 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -3550,8 +3550,7 @@ free_deps (struct deps_desc *deps) /* As we initialize reg_last lazily, it is possible that we didn't alloc= ate it at all. */ - if (deps->reg_last) - free (deps->reg_last); + free (deps->reg_last); deps->reg_last =3D NULL; deps =3D NULL; diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index b88dad1..fc31d19 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -580,8 +580,7 @@ fence_clear (fence_t f) gcc_assert ((s !=3D NULL && dc !=3D NULL && tc !=3D NULL) || (s =3D=3D NULL && dc =3D=3D NULL && tc =3D=3D NULL)); - if (s !=3D NULL) - free (s); + free (s); if (dc !=3D NULL) delete_deps_context (dc); diff --git a/gcc/sese.c b/gcc/sese.c index bfb0276..3ce83b9 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -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 =3D new_rename_map_elt (old_name, expr); } @@ -676,8 +675,7 @@ if_region_set_false_region (ifsese if_region, sese regi= on) SESE_EXIT (region) =3D false_edge; - if (if_region->false_region) - free (if_region->false_region); + free (if_region->false_region); if_region->false_region =3D region; if (slot) diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 54cb46c..ef7c414 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -5085,11 +5085,9 @@ free_rdg (struct graph *rdg) struct graph_edge *e; for (e =3D v->succ; e; e =3D 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); diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index f189b9b..948a796 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1617,8 +1617,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); diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index e7490e6..2dfe37e 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -242,8 +242,7 @@ delete_coalesce_list (coalesce_list_p cl) { gcc_assert (cl->cost_one_list =3D=3D NULL); htab_delete (cl->list); - if (cl->sorted) - free (cl->sorted); + free (cl->sorted); gcc_assert (cl->num_sorted =3D=3D 0); free (cl); } diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 0441df6..4a8a4eb 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -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); } diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 479b46f..723812f 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -6254,8 +6254,7 @@ free_loop_data (struct ivopts_data *data) struct version_info *info; info =3D ver_info (data, i); - if (info->iv) - free (info->iv); + free (info->iv); info->iv =3D NULL; info->has_nonlin_use =3D false; info->preserve_biv =3D false; @@ -6282,8 +6281,7 @@ free_loop_data (struct ivopts_data *data) { struct iv_cand *cand =3D iv_cand (data, i); - if (cand->iv) - free (cand->iv); + free (cand->iv); if (cand->depends_on) BITMAP_FREE (cand->depends_on); free (cand); diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index f246643..f13adaf 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -580,8 +580,7 @@ phi_trans_add (pre_expr e, pre_expr v, basic_block pred) slot =3D htab_find_slot_with_hash (phi_translate_table, new_pair, new_pair->hashcode, INSERT); - if (*slot) - free (*slot); + free (*slot); *slot =3D (void *) new_pair; } diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index e90f753..089408b 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,5 +1,12 @@ +2011-03-08 Jim Meyering + + * 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-11-04 Eric Botcazou - Jakub Jelinek + Jakub Jelinek PR preprocessor/39213 * directives.c (end_directive): Call _cpp_remove_overlay for deferred @@ -752,7 +759,7 @@ * directives-only.c (_cpp_preprocess_dir_only): Likewise. * internal.h (CPP_INCREMENT_LINE): Likewise. * lex.c (_cpp_skip_block_comment): Use source_location. -=09 + 2008-07-14 Ben Elliston * include/cpplib.h (NODE_CONDITIONAL): New. @@ -1018,7 +1025,7 @@ PR preprocessor/30363 * traditional.c (replace_args_and_push): Add local variable - cxtquote, calculate the replacement text size assuming a=20 + cxtquote, calculate the replacement text size assuming a worst case of every input character quoted with backslash, and properly handle output quoting of quote characters in actual arguments used in function-like macros. @@ -1172,8 +1179,8 @@ 2007-06-09 Vladimir Prus * files.c (open_file): Account for the - fact that on windows, opening a directory gives - EACCES. + fact that on windows, opening a directory gives + EACCES. 2007-06-05 Joerg Wunsch @@ -1225,7 +1232,7 @@ 2007-05-14 Janis Johnson - * expr.c (cpp_classify_number): Warn about dfp constant for -pedan= tic. + * expr.c (cpp_classify_number): Warn about dfp constant for -pedantic. PR c/31924 * expr.c (interpret_float_suffix): Check for invalid suffix. diff --git a/libcpp/files.c b/libcpp/files.c index 456c0b0..f464fea 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -996,8 +996,7 @@ make_cpp_file (cpp_reader *pfile, cpp_dir *dir, const c= har *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); } diff --git a/libcpp/init.c b/libcpp/init.c index cfc16e8..ae1c0b8 100644 --- a/libcpp/init.c +++ b/libcpp/init.c @@ -258,8 +258,7 @@ cpp_destroy (cpp_reader *pfile) while (CPP_BUFFER (pfile) !=3D NULL) _cpp_pop_buffer (pfile); - if (pfile->out.base) - free (pfile->out.base); + free (pfile->out.base); if (pfile->macro_buffer) { diff --git a/libcpp/macro.c b/libcpp/macro.c index d9324a3..eba2349 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -1064,8 +1064,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, = cpp_macro *macro, macro_arg /* Free the expanded arguments. */ for (i =3D 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); } diff --git a/libcpp/pch.c b/libcpp/pch.c index 00b7794..d278f14 100644 --- a/libcpp/pch.c +++ b/libcpp/pch.c @@ -713,12 +713,9 @@ cpp_valid_state (cpp_reader *r, const char *name, int = fd) return -1; fail: - if (namebuf !=3D NULL) - free (namebuf); - if (undeftab !=3D NULL) - free (undeftab); - if (nl.defs !=3D NULL) - free (nl.defs); + free (namebuf); + free (undeftab); + free (nl.defs); return 1; } diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog index 101cda9..031793b 100644 --- a/libdecnumber/ChangeLog +++ b/libdecnumber/ChangeLog @@ -1,3 +1,12 @@ +2011-03-08 Jim Meyering + + * 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. + 2010-11-24 Nathan Froyd * dconfig.h (LIBGCC2_FLOAT_WORDS_BIG_ENDIAN): Delete. @@ -10,7 +19,7 @@ 2010-09-10 Kai Tietz - * configure: Regenerated. + * configure: Regenerated. 2010-09-08 Tristan Gingold @@ -149,7 +158,7 @@ 2009-04-01 Ben Elliston - * decContext.h: Include gstdint.h instead of . + * decContext.h: Include gstdint.h instead of . 2009-03-30 Ben Elliston @@ -401,7 +410,7 @@ * Makefile.in: Don't include decRound in library used by compiler. -2006-10-10 Brooks Moses =20 +2006-10-10 Brooks Moses * Makefile.in: Added empty "pdf" target. 2006-09-15 Kaveh R. Ghazi @@ -496,11 +505,11 @@ 2006-01-02 Paolo Bonzini - PR target/25259 - * configure.ac: Use GCC_HEADER_STDINT. - * decContext.h: Include gstdint.h. - * aclocal.m4: Regenerate. - * configure: Regenerate. + PR target/25259 + * configure.ac: Use GCC_HEADER_STDINT. + * decContext.h: Include gstdint.h. + * aclocal.m4: Regenerate. + * configure: Regenerate. 2005-12-20 Roger Sayle @@ -539,7 +548,7 @@ * decimal32.c: Ditto. * decimal64.c: Ditto. * decimal128.c: Ditto. -=09 + 2005-11-29 Ben Elliston * decUtility.c: Remove redundant #includes. @@ -556,7 +565,7 @@ 2005-11-29 Ben Elliston * decimal32.h, decimal64.h, decimal128.h: New. - * decimal32.c, decimal64.c, decimal128.c: Likewise. + * decimal32.c, decimal64.c, decimal128.c: Likewise. * decContext.c, decContext.h: Likewise. * decUtility.c, decUtility.h: Likewise. * decNumber.c, decNumber.h, decNumberLocal.h: Likewise. diff --git a/libdecnumber/decNumber.c b/libdecnumber/decNumber.c index d097cab..cf2d32e 100644 --- a/libdecnumber/decNumber.c +++ b/libdecnumber/decNumber.c @@ -711,7 +711,7 @@ decNumber * decNumberFromString(decNumber *dn, const ch= ar chars[], /* decNumberShow(dn); */ } while(0); /* [for break] */ - if (allocres!=3DNULL) free(allocres); /* drop any storage used */ + free(allocres); /* drop any storage used */ if (status!=3D0) decStatus(dn, status, set); return dn; } /* decNumberFromString */ @@ -970,8 +970,8 @@ decNumber * decNumberCompareTotalMag(decNumber *res, co= nst decNumber *lhs, decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status); } while(0); /* end protected */ - if (allocbufa!=3DNULL) free(allocbufa); /* drop any storage used */ - if (allocbufb!=3DNULL) free(allocbufb); /* .. */ + free(allocbufa); /* drop any storage used */ + free(allocbufb); /* .. */ if (status!=3D0) decStatus(res, status, set); return res; } /* decNumberCompareTotalMag */ @@ -1074,7 +1074,7 @@ decNumber * decNumberExp(decNumber *res, const decNum= ber *rhs, } while(0); /* end protected */ #if DECSUBSET - if (allocrhs !=3DNULL) free(allocrhs); /* drop any storage used */ + free(allocrhs); /* drop any storage used */ #endif /* apply significant status */ if (status!=3D0) decStatus(res, status, set); @@ -1169,7 +1169,7 @@ decNumber * decNumberFMA(decNumber *res, const decNum= ber *lhs, decAddOp(res, acc, fhs, set, 0, &status); } while(0); /* end protected */ - if (allocbufa!=3DNULL) free(allocbufa); /* drop any storage used */ + free(allocbufa); /* drop any storage used */ if (status!=3D0) decStatus(res, status, set); #if DECCHECK decCheckInexact(res, set); @@ -1296,7 +1296,7 @@ decNumber * decNumberLn(decNumber *res, const decNumb= er *rhs, } while(0); /* end protected */ #if DECSUBSET - if (allocrhs !=3DNULL) free(allocrhs); /* drop any storage used */ + free(allocrhs); /* drop any storage used */ #endif /* apply significant status */ if (status!=3D0) decStatus(res, status, set); @@ -1509,10 +1509,10 @@ decNumber * decNumberLog10(decNumber *res, const de= cNumber *rhs, decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result */ } while(0); /* [for break] */ - if (allocbufa!=3DNULL) free(allocbufa); /* drop any storage used */ - if (allocbufb!=3DNULL) free(allocbufb); /* .. */ + free(allocbufa); /* drop any storage used */ + free(allocbufb); /* .. */ #if DECSUBSET - if (allocrhs !=3DNULL) free(allocrhs); /* .. */ + free(allocrhs); /* .. */ #endif /* apply significant status */ if (status!=3D0) decStatus(res, status, set); @@ -2253,11 +2253,11 @@ decNumber * decNumberPower(decNumber *res, const de= cNumber *lhs, #endif } while(0); /* end protected */ - if (allocdac!=3DNULL) free(allocdac); /* drop any storage used */ - if (allocinv!=3DNULL) free(allocinv); /* .. */ + free(allocdac); /* drop any storage used */ + free(allocinv); /* .. */ #if DECSUBSET - if (alloclhs!=3DNULL) free(alloclhs); /* .. */ - if (allocrhs!=3DNULL) free(allocrhs); /* .. */ + free(alloclhs); /* .. */ + free(allocrhs); /* .. */ #endif if (status!=3D0) decStatus(res, status, set); #if DECCHECK @@ -2349,7 +2349,7 @@ decNumber * decNumberReduce(decNumber *res, const dec= Number *rhs, } while(0); /* end protected */ #if DECSUBSET - if (allocrhs !=3DNULL) free(allocrhs); /* .. */ + free(allocrhs); /* .. */ #endif if (status!=3D0) decStatus(res, status, set);/* then report status */ return res; @@ -3111,11 +3111,11 @@ decNumber * decNumberSquareRoot(decNumber *res, con= st decNumber *rhs, decNumberCopy(res, a); /* a is now the result */ } while(0); /* end protected */ - if (allocbuff!=3DNULL) free(allocbuff); /* drop any storage used */ - if (allocbufa!=3DNULL) free(allocbufa); /* .. */ - if (allocbufb!=3DNULL) free(allocbufb); /* .. */ + free(allocbuff); /* drop any storage used */ + free(allocbufa); /* .. */ + free(allocbufb); /* .. */ #if DECSUBSET - if (allocrhs !=3DNULL) free(allocrhs); /* .. */ + free(allocrhs); /* .. */ #endif if (status!=3D0) decStatus(res, status, set);/* then report status */ #if DECCHECK @@ -4130,10 +4130,10 @@ static decNumber * decAddOp(decNumber *res, const d= ecNumber *lhs, } } while(0); /* end protected */ - if (allocacc!=3DNULL) free(allocacc); /* drop any storage used */ + free(allocacc); /* drop any storage used */ #if DECSUBSET - if (allocrhs!=3DNULL) free(allocrhs); /* .. */ - if (alloclhs!=3DNULL) 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!=3DNULL) free(varalloc); /* drop any storage used */ - if (allocacc!=3DNULL) free(allocacc); /* .. */ + free(varalloc); /* drop any storage used */ + free(allocacc); /* .. */ #if DECSUBSET - if (allocrhs!=3DNULL) free(allocrhs); /* .. */ - if (alloclhs!=3DNULL) free(alloclhs); /* .. */ + free(allocrhs); /* .. */ + free(alloclhs); /* .. */ #endif return res; } /* decDivideOp */ @@ -5127,14 +5127,14 @@ static decNumber * decMultiplyOp(decNumber *res, co= nst decNumber *lhs, decFinish(res, set, &residue, status); /* final cleanup */ } while(0); /* end protected */ - if (allocacc!=3DNULL) free(allocacc); /* drop any storage used */ + free(allocacc); /* drop any storage used */ #if DECSUBSET - if (allocrhs!=3DNULL) free(allocrhs); /* .. */ - if (alloclhs!=3DNULL) free(alloclhs); /* .. */ + free(allocrhs); /* .. */ + free(alloclhs); /* .. */ #endif #if FASTMUL - if (allocrhi!=3DNULL) free(allocrhi); /* .. */ - if (alloclhi!=3DNULL) 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 !=3DNULL) free(allocrhs); /* drop any storage used */ - if (allocbufa!=3DNULL) free(allocbufa); /* .. */ - if (allocbuft!=3DNULL) 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!=3DNULL) free(allocbufa); /* drop any storage used */ - if (allocbufb!=3DNULL) 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, cons= t decNumber *lhs, } while(0); /* end protected */ #if DECSUBSET - if (allocrhs!=3DNULL) free(allocrhs); /* drop any storage used */ - if (alloclhs!=3DNULL) free(alloclhs); /* .. */ + free(allocrhs); /* drop any storage used */ + free(alloclhs); /* .. */ #endif return res; } /* decQuantizeOp */ @@ -6142,8 +6142,8 @@ decNumber * decCompareOp(decNumber *res, const decNum= ber *lhs, } } #if DECSUBSET - if (allocrhs!=3DNULL) free(allocrhs); /* free any storage used */ - if (alloclhs!=3DNULL) 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=3D(*u=3D=3D0 ? 0 : +1); } /* clean up and return the result */ - if (allocacc!=3DNULL) free(allocacc); /* drop any storage used */ + free(allocacc); /* drop any storage used */ return result; } /* decUnitCompare */ diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 33e2836..fc65f98 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,8 +1,12 @@ -2011-03-04 Janne Blomqvist - - PR libfortran/47802 - * intrinsics/ctime.c (strctime): Use builtins to check localtime_r - return type. +2011-03-08 Jim Meyering + + * 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-03-04 Janne Blomqvist diff --git a/libgfortran/intrinsics/move_alloc.c b/libgfortran/intrinsics/m= ove_alloc.c index 9b5497c..f76c20c 100644 --- a/libgfortran/intrinsics/move_alloc.c +++ b/libgfortran/intrinsics/move_alloc.c @@ -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 =3D 0; i < GFC_DESCRIPTOR_RANK (from); i++) { diff --git a/libgfortran/io/fbuf.c b/libgfortran/io/fbuf.c index 82b3f6b..353e5ae 100644 --- a/libgfortran/io/fbuf.c +++ b/libgfortran/io/fbuf.c @@ -51,8 +51,7 @@ fbuf_destroy (gfc_unit * u) { if (u->fbuf =3D=3D NULL) return; - if (u->fbuf->buf) - free (u->fbuf->buf); + free (u->fbuf->buf); free (u->fbuf); u->fbuf =3D NULL; } diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index d540fc4..70f4f2d 100644 --- a/libgfortran/io/format.c +++ b/libgfortran/io/format.c @@ -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 =3D NULL; - if (u->format_hash_table[hash].key !=3D NULL) - free (u->format_hash_table[hash].key); + free (u->format_hash_table[hash].key); u->format_hash_table[hash].key =3D get_mem (dtp->format_len); memcpy (u->format_hash_table[hash].key, dtp->format, dtp->format_len); diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index d7448c0..f0abeeb 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -689,8 +689,7 @@ already_open (st_parameter_open *opp, gfc_unit * u, uni= t_flags * flags) } u->s =3D NULL; - if (u->file) - free (u->file); + free (u->file); u->file =3D NULL; u->file_len =3D 0; diff --git a/libgfortran/io/unit.c b/libgfortran/io/unit.c index 1d52217..e8a9b84 100644 --- a/libgfortran/io/unit.c +++ b/libgfortran/io/unit.c @@ -483,11 +483,9 @@ free_internal_unit (st_parameter_dt *dtp) if (dtp->u.p.current_unit !=3D NULL) { - if (dtp->u.p.current_unit->ls !=3D NULL) - free (dtp->u.p.current_unit->ls); + free (dtp->u.p.current_unit->ls); =20=20=20 - if (dtp->u.p.current_unit->s) - free (dtp->u.p.current_unit->s); + free (dtp->u.p.current_unit->s); =20=20=20 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 =3D NULL; u->file_len =3D 0; diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 12536ca..fd16fbe 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -849,8 +849,7 @@ mem_flush (unix_stream * s __attribute__ ((unused))) static int mem_close (unix_stream * s) { - if (s !=3D NULL) - free (s); + free (s); return 0; } diff --git a/libgo/runtime/go-select.c b/libgo/runtime/go-select.c index 9d9f728..8f35a10 100644 --- a/libgo/runtime/go-select.c +++ b/libgo/runtime/go-select.c @@ -690,8 +690,7 @@ __go_select (size_t count, _Bool has_default, continue; } - if (allocated_buffer !=3D NULL) - free (allocated_buffer); + free (allocated_buffer); return ret; } @@ -703,8 +702,7 @@ __go_select (size_t count, _Bool has_default, if (has_default) { /* Use the default clause. */ - if (allocated_buffer !=3D NULL) - free (allocated_buffer); + free (allocated_buffer); return 0; } diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 802cf96..64f7370 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,5 +1,18 @@ 2011-03-08 Jim Meyering + * 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-03-08 Jim Meyering + avoid memory overrun in a test leading to potential double-free * testsuite/test-expandargv.c (writeout_test): Fix off-by-one error: i.e., do copy the trailing NUL byte. @@ -481,7 +494,7 @@ 2009-05-29 Kai Tietz - * pex-win32.c (pex_win32_fdopenr): Set INHERIT to false. + * pex-win32.c (pex_win32_fdopenr): Set INHERIT to false. 2009-05-29 Michael Matz @@ -512,7 +525,7 @@ 2009-04-29 Julian Brown - * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.=20=20=20=20 + * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT. (pex_win32_exec_child): Ensure each process has only one handle open on pipe endpoints. Close standard input after creating child for symmetry with standard output/standard error. @@ -530,22 +543,22 @@ section, so that the native build does detect them at configure time. * configure: Regenerated. -=09 + 2009-04-13 Ozkan Sezer - PR target/39397 - * pex-common.h (struct pex_obj): Store pid values as pid_t, - not as long (members *children and (*wait)) - * pex-common.c (pex_run_in_environment): Likewise. - * pex-win32.c (pex_win32_wait): Return pid_t and properly check - returned pid value. - * pex-djgpp.c (pex_djgpp_wait): Return pid_t. - * pex-msdos.c (pex_msdos_wait): Likewise. + PR target/39397 + * pex-common.h (struct pex_obj): Store pid values as pid_t, + not as long (members *children and (*wait)) + * pex-common.c (pex_run_in_environment): Likewise. + * pex-win32.c (pex_win32_wait): Return pid_t and properly check + returned pid value. + * pex-djgpp.c (pex_djgpp_wait): Return pid_t. + * pex-msdos.c (pex_msdos_wait): Likewise. 2009-04-07 Arnaud Patard - * libiberty/configure.ac: Fix Linux/MIPS matching rule. - * libiberty/configure: Regenerate. + * libiberty/configure.ac: Fix Linux/MIPS matching rule. + * libiberty/configure: Regenerate. 2009-03-27 Ian Lance Taylor @@ -630,7 +643,7 @@ 2008-10-08 David Edelsohn * xstrdup.c: Include after "config.h" -=20 + 2008-10-07 Jan Kratochvil * configure.ac: Call AC_SYS_LARGEFILE. diff --git a/libiberty/cp-demint.c b/libiberty/cp-demint.c index 2e8f8d2..1d1a77a 100644 --- a/libiberty/cp-demint.c +++ b/libiberty/cp-demint.c @@ -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 =3D=3D NULL || di.subs =3D=3D NULL) { - if (di.comps !=3D NULL) - free (di.comps); - if (di.subs !=3D NULL) - free (di.subs); + free (di.comps); + free (di.subs); return NULL; } diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 84f94b6..629d77b 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -1215,14 +1215,8 @@ squangle_mop_up (struct work_stuff *work) { /* clean up the B and K type mangling types. */ forget_B_and_K_types (work); - if (work -> btypevec !=3D NULL) - { - free ((char *) work -> btypevec); - } - if (work -> ktypevec !=3D NULL) - { - free ((char *) work -> ktypevec); - } + free ((char *) work -> btypevec); + free ((char *) work -> ktypevec); } @@ -1311,8 +1305,7 @@ delete_non_B_K_work_stuff (struct work_stuff *work) int i; for (i =3D 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 =3D NULL; diff --git a/libiberty/pex-common.c b/libiberty/pex-common.c index 55b63ae..6fd3fde 100644 --- a/libiberty/pex-common.c +++ b/libiberty/pex-common.c @@ -623,12 +623,9 @@ pex_free (struct pex_obj *obj) if (obj->next_input_name_allocated) free (obj->next_input_name); - if (obj->children !=3D NULL) - free (obj->children); - if (obj->status !=3D NULL) - free (obj->status); - if (obj->time !=3D NULL) - free (obj->time); + free (obj->children); + free (obj->status); + free (obj->time); if (obj->remove_count > 0) { diff --git a/libiberty/pex-msdos.c b/libiberty/pex-msdos.c index 4b77bf6..fa0f40a 100644 --- a/libiberty/pex-msdos.c +++ b/libiberty/pex-msdos.c @@ -310,10 +310,8 @@ pex_msdos_cleanup (struct pex_obj *obj) ms =3D (struct pex_msdos *) obj->sysdep; for (i =3D 0; i < PEX_MSDOS_FILE_COUNT; ++i) - if (msdos->files[i] !=3D NULL) - free (msdos->files[i]); - if (msdos->statuses !=3D NULL) - free (msdos->statuses); + free (msdos->files[i]); + free (msdos->statuses); free (msdos); obj->sysdep =3D NULL; } diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index 4427406..107ac6f 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -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; } diff --git a/libiberty/regex.c b/libiberty/regex.c index 420c7f4..d65eedb 100644 --- a/libiberty/regex.c +++ b/libiberty/regex.c @@ -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 =3D NULL #else -# define FREE_VAR(var) if (var) free (var); var =3D NULL +# define FREE_VAR(var) free (var); var =3D NULL #endif #ifdef WCHAR @@ -8111,20 +8111,17 @@ weak_alias (__regerror, regerror) void regfree (regex_t *preg) { - if (preg->buffer !=3D NULL) - free (preg->buffer); + free (preg->buffer); preg->buffer =3D NULL; preg->allocated =3D 0; preg->used =3D 0; - if (preg->fastmap !=3D NULL) - free (preg->fastmap); + free (preg->fastmap); preg->fastmap =3D NULL; preg->fastmap_accurate =3D 0; - if (preg->translate !=3D NULL) - free (preg->translate); + free (preg->translate); preg->translate =3D NULL; } #ifdef _LIBC diff --git a/libiberty/spaces.c b/libiberty/spaces.c index 67481c9..69d7a2d 100644 --- a/libiberty/spaces.c +++ b/libiberty/spaces.c @@ -53,10 +53,7 @@ spaces (int count) if (count > maxsize) { - if (buf) - { - free (buf); - } + free (buf); buf =3D (char *) malloc (count + 1); if (buf =3D=3D (char *) 0) return 0; diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 44c87be..e77ea9f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2011-03-08 Jim Meyering + + * libsupc++/del_opnt.cc (operator delete): Remove useless + if-before-free. + 2011-03-07 Jason Merrill * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust diff --git a/libstdc++-v3/libsupc++/del_opnt.cc b/libstdc++-v3/libsupc++/de= l_opnt.cc index 75051d5..29eab10 100644 --- a/libstdc++-v3/libsupc++/del_opnt.cc +++ b/libstdc++-v3/libsupc++/del_opnt.cc @@ -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); } diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog index e4a19cd..6e552ab 100644 --- a/lto-plugin/ChangeLog +++ b/lto-plugin/ChangeLog @@ -1,3 +1,7 @@ +2011-03-08 Jim Meyering + + * lto-plugin.c (free_1, free_2): Remove useless if-before-free. + 2011-02-13 Ralf Wildenhues * Makefile.in: Regenerate. @@ -376,7 +380,7 @@ (onload): Don't create the temporary directory. 2009-11-04 Richard Guenther - Rafael Avila de Espindola + Rafael Avila de Espindola * lto-plugin.c (plugin_file_info): Remove temp field. (cleanup_handler): Don't delete temporary objects. @@ -411,10 +415,10 @@ * aclocal.m4: Likewise. 2009-10-19 Rafael Avila de Espindola -=20=20=20=20 - PR40790 - * configure: Regenerate. - * configure.ac: Add AC_TYPE_UINT64_T. + + PR40790 + * configure: Regenerate. + * configure.ac: Add AC_TYPE_UINT64_T. 2009-10-16 Rafael Avila de Espindola @@ -499,7 +503,7 @@ (num_pass_through_items): New. (all_symbols_read_handler): Update to use the -pass-through option. (process_option): Replace -libgcc with -pass-through. -=09 + 2009-09-30 Rafael Avila de Espindola * lto-plugin.c (onload): Return a ld_plugin_status. Don't require @@ -655,7 +659,7 @@ 2008-09-23 Rafael Espindola - * plugin-api.h: Moved to include. + * plugin-api.h: Moved to include. 2008-09-23 Rafael Espindola diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c index 64a0164..6f8a387 100644 --- a/lto-plugin/lto-plugin.c +++ b/lto-plugin/lto-plugin.c @@ -312,8 +312,7 @@ free_1 (void) { struct ld_plugin_symbol *s =3D &symtab->syms[j]; free (s->name); - if (s->comdat_key) - free (s->comdat_key); + free (s->comdat_key); } free (symtab->syms); symtab->syms =3D NULL; @@ -342,8 +341,7 @@ free_2 (void) claimed_files =3D NULL; num_claimed_files =3D 0; - if (arguments_file_name) - free (arguments_file_name); + free (arguments_file_name); arguments_file_name =3D NULL; } --=20 1.7.4.1.299.ga459d