]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
i386.c (decide_alg): Correctly handle maximum size of stringop algorithm.
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 16 Jun 2014 20:45:25 +0000 (22:45 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 16 Jun 2014 20:45:25 +0000 (22:45 +0200)
* config/i386/i386.c (decide_alg): Correctly handle
maximum size of stringop algorithm.

From-SVN: r211714

gcc/ChangeLog
gcc/config/i386/i386.c

index bc36d0683e479684e454c2cee80ee3f541c50170..f6485e16e0b35a73fae4eebefa0e508e45bd8225 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-16  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (decide_alg): Correctly handle
+       maximum size of stringop algorithm.
+
 2014-06-16  Yury Gribov  <y.gribov@samsung.com>
 
        * asan.c (build_check_stmt): Fix maybe-uninitialized warning.
@@ -5,8 +10,7 @@
 2014-06-16  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/61522
-       * lra-assigns.c (assign_by_spills): Check null
-       targetm.spill_class.
+       * lra-assigns.c (assign_by_spills): Check null targetm.spill_class.
 
 2014-06-16  Jan Hubicka  <hubicka@ucw.cz>
 
        (build_check_stmt): Allow non-integer lengths; add support
        for new parameter.
        (asan_instrument): Likewise.
-       (instrument_mem_region_access): Moved code to
-       build_check_stmt.
+       (instrument_mem_region_access): Moved code to build_check_stmt.
        (instrument_derefs): Likewise.
        (instrument_strlen_call): Likewise.
-       * cfgcleanup.c (old_insns_match_p): Add support for new
-       functions.
+       * cfgcleanup.c (old_insns_match_p): Add support for new functions.
        * doc/invoke.texi: Describe new parameter.
        * params.def: Define new parameter.
        * params.h: Likewise.
@@ -87,7 +89,8 @@
 
 2014-06-15  Jan Hubicka  <hubicka@ucw.cz>
 
-       * c-family/c-common.c (handle_tls_model_attribute): Use set_decl_tls_model.
+       * c-family/c-common.c (handle_tls_model_attribute): Use
+       set_decl_tls_model.
        * c-family/c-common.c (handle_tls_model_attribute): Use
        set_decl_tls_model.
        * cgraph.h (struct varpool_node): Add tls_model.
        (eliminate): Generalize stmt removal handling, remove in
        reverse dominator order to support proper debug stmt
        generation.  Update stmts before removing stmts.
-       * tree-ssa-propagate.c (propagate_tree_value): Remove
-       bogus assert.
+       * tree-ssa-propagate.c (propagate_tree_value): Remove bogus assert.
 
 2014-06-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        * ipa-visiblity.c (cgraph_externally_visible_p): Cleanup.
        (update_visibility_by_resolution_info): Consider UNDEF; fix checking;
        reset sections of symbols dragged out of the comdats.
-       (function_and_variable_visibility): Reset sections of localized symbols.
+       (function_and_variable_visibility): Reset sections of
+       localized symbols.
 
 2014-06-12  Jan Hubicka  <hubicka@ucw.cz>
 
        vcgt_p8, vcgtq_p8, vcgtz_p8, vcgtz_u8, vcgtz_u16, vcgtz_u32, vcgtz_u64,
        vcgtzq_p8, vcgtzq_u8, vcgtzq_u16, vcgtzq_u32, vcgtzq_u64, vcgtzd_u64,
        vcle_p8, vcleq_p8, vclez_p8, vclez_u64, vclezq_p8, vclezd_u64, vclt_p8,
-       vcltq_p8, vcltz_p8, vcltzq_p8, vcltzd_u64): Remove functions as they are
-       not in the spec.
+       vcltq_p8, vcltz_p8, vcltzq_p8, vcltzd_u64): Remove functions as they
+       are not in the spec.
 
 2014-06-10  Alan Lawrence  <alan.lawrence@arm.com>
 
        * sdbout.c (sdbout_one_type): Update.
        * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Update.
        * varasm.c (IN_NAMED_SECTION, get_named_section, resolve_unique_section,
-       hot_function_section, get_named_text_section, USE_SELECT_SECTION_FOR_FUNCTIONS,
-       default_function_rodata_section, make_decl_rtl, default_unique_section):
-       Update.
+       hot_function_section, get_named_text_section,
+       USE_SELECT_SECTION_FOR_FUNCTIONS, default_function_rodata_section,
+       make_decl_rtl, default_unique_section): Update.
        * config/c6x/c6x.c (c6x_in_small_data_p): Update.
        (c6x_elf_unique_section): Update.
        * config/nios2/nios2.c (nios2_in_small_data_p): Update.
        (bfin_handle_l1_data_attribute): Update.
        (bfin_handle_l2_attribute): Update.
        * config/mep/mep.c (mep_unique_section): Update.
-       * config/microblaze/microblaze.c (microblaze_elf_in_small_data_p): Update.
+       * config/microblaze/microblaze.c (microblaze_elf_in_small_data_p):
+       Update.
        * config/h8300/h8300.c (h8300_handle_eightbit_data_attribute): Update.
        (h8300_handle_tiny_data_attribute): Update.
        * config/m32r/m32r.c (m32r_in_small_data_p): Update.
 
 2014-06-11  Jan Hubicka  <hubicka@ucw.cz>
 
-       * ipa-visibility.c (function_and_variable_visibility): Disable
-       virtual table rewriting temporarily on targets not supporting
-       ONE_ONLY.
+       * ipa-visibility.c (function_and_variable_visibility): Disable virtual
+       table rewriting temporarily on targets not supporting ONE_ONLY.
 
 2014-06-11  Richard Biener  <rguenther@suse.de>
 
 
 2014-06-10  Jan Hubicka  <hubicka@ucw.cz>
 
-       * ipa-reference.c (is_proper_for_analysis): Exclude addressable and public
-       vars.
+       * ipa-reference.c (is_proper_for_analysis): Exclude addressable
+       and public vars.
        (intersect_static_var_sets): Remove.
        (propagate): Do not prune local statics.
 
        PR target/61062
        * config/arm/arm_neon.h (vtrn_s8, vtrn_s16, vtrn_u8, vtrn_u16, vtrn_p8,
        vtrn_p16, vtrn_s32, vtrn_f32, vtrn_u32, vtrnq_s8, vtrnq_s16, vtrnq_s32,
-       vtrnq_f32, vtrnq_u8, vtrnq_u16, vtrnq_u32, vtrnq_p8, vtrnq_p16, vzip_s8,
-       vzip_s16, vzip_u8, vzip_u16, vzip_p8, vzip_p16, vzip_s32, vzip_f32,
-       vzip_u32, vzipq_s8, vzipq_s16, vzipq_s32, vzipq_f32, vzipq_u8,
-       vzipq_u16, vzipq_u32, vzipq_p8, vzipq_p16, vuzp_s8, vuzp_s16, vuzp_s32,
-       vuzp_f32, vuzp_u8, vuzp_u16, vuzp_u32, vuzp_p8, vuzp_p16, vuzpq_s8,
-       vuzpq_s16, vuzpq_s32, vuzpq_f32, vuzpq_u8, vuzpq_u16, vuzpq_u32,
-       vuzpq_p8, vuzpq_p16): Correct mask for bigendian.
+       vtrnq_f32, vtrnq_u8, vtrnq_u16, vtrnq_u32, vtrnq_p8, vtrnq_p16,
+       vzip_s8, vzip_s16, vzip_u8, vzip_u16, vzip_p8, vzip_p16, vzip_s32,
+       vzip_f32, vzip_u32, vzipq_s8, vzipq_s16, vzipq_s32, vzipq_f32,
+       vzipq_u8, vzipq_u16, vzipq_u32, vzipq_p8, vzipq_p16, vuzp_s8, vuzp_s16,
+       vuzp_s32, vuzp_f32, vuzp_u8, vuzp_u16, vuzp_u32, vuzp_p8, vuzp_p16,
+       vuzpq_s8, vuzpq_s16, vuzpq_s32, vuzpq_f32, vuzpq_u8, vuzpq_u16,
+       vuzpq_u32, vuzpq_p8, vuzpq_p16): Correct mask for bigendian.
 
 2014-06-09  Jan Hubicka  <hubicka@ucw.cz>
 
        * tree.c (decl_comdat_group, decl_comdat_group_id): Constify argument.
        (decl_section_name, set_decl_section_name): New accessors.
        (find_decls_types_r): Do not walk section name
-       * tree.h (DECL_SECTION_NAME): Implement using
-       decl_section_name.
+       * tree.h (DECL_SECTION_NAME): Implement using decl_section_name.
        (decl_comdat_group, decl_comdat_group_id): Constify.
        (decl_section_name, set_decl_section_name): Update.
-       * varpool.c (varpool_finalize_named_section_flags): Use
-       get_section.
+       * varpool.c (varpool_finalize_named_section_flags): Use get_section.
        * cgraph.c (cgraph_add_thunk): Reset node instead of rebuilding.
        (cgraph_make_node_local_1): Clear section and comdat group.
        * cgraph.h (set_comdat_group): Sanity check.
        * ipa-comdats.c (ipa_comdats): Use get_section.
        * ipa.c (ipa_discover_readonly_nonaddressable_var): Likewise.
        * lto-streamer-out.c: Do not follow section names.
-       * c-family/c-common.c (handle_section_attribute):
-       Update.
+       * c-family/c-common.c (handle_section_attribute): Update.
        * lto-cgraph.c (lto_output_node): Output section.
        (lto_output_varpool_node): Likewise.
        (read_comdat_group): Rename to ...
        (input_node, input_varpool_node): Input section names.
        * tree-emutls.c (get_emutls_init_templ_addr): Update.
        (new_emutls_decl): Update.
-       (secname_for_decl): Check section names only of static
-       vars.
+       (secname_for_decl): Check section names only of static vars.
        * config/mep/mep.c (mep_unique_section): Use set_decl_section_name.
        * config/i386/winnt.c (i386_pe_unique_section): Likewise.
        * config/i386/i386.c (x86_64_elf_unique_section): Likewise.
        * config/mcore/mcore.c (mcore_unique_section): Likewise.
        * config/mips/mips.c (mips16_build_function_stub): Likewise.
        * config/v850/v850.c (v850_insert_attributes): Likewise.
-       * config/h8300/h8300.c: (h8300_handle_eightbit_data_attribute):
+       * config/h8300/h8300.c (h8300_handle_eightbit_data_attribute):
        Likewise.
        (h8300_handle_tiny_data_attribute): Likewise.
        * config/bfin/bfin.c (bfin_handle_l1_text_attribute): Likewise.
 
 2014-06-07  Jan Hubicka  <hubicka@ucw.cz>
 
-       * varasm.c (use_blocks_for_decl_p): Check symbol table instead of alias
-       attribute.
+       * varasm.c (use_blocks_for_decl_p): Check symbol table
+       instead of alias attribute.
        (place_block_symbol): Recurse on aliases.
 
 2014-06-07  Jan Hubicka  <hubicka@ucw.cz>
index 33226a9f9354e066c05da603c21a1c951b43d57e..77d54e5bcb72363c12f752caec064aebdcdfadeb 100644 (file)
@@ -23832,7 +23832,7 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size,
 {
   const struct stringop_algs * algs;
   bool optimize_for_speed;
-  int max = -1;
+  int max = 0;
   const struct processor_costs *cost;
   int i;
   bool any_alg_usable_p = false;
@@ -23870,7 +23870,7 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size,
   /* If expected size is not known but max size is small enough
      so inline version is a win, set expected size into
      the range.  */
-  if (max > 1 && (unsigned HOST_WIDE_INT) max >= max_size
+  if (((max > 1 && (unsigned HOST_WIDE_INT) max >= max_size) || max == -1)
       && expected_size == -1)
     expected_size = min_size / 2 + max_size / 2;
 
@@ -23959,7 +23959,7 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size,
             *dynamic_check = 128;
           return loop_1_byte;
         }
-      if (max == -1)
+      if (max <= 0)
        max = 4096;
       alg = decide_alg (count, max / 2, min_size, max_size, memset,
                        zero_memset, dynamic_check, noalign);