PR 68432: Add a target hook to control size/speed optab choices
[platform/upstream/gcc.git] / gcc / ChangeLog
index f908fe6..b7e853d 100644 (file)
@@ -1,3 +1,251 @@
+2015-12-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/68432
+       * coretypes.h (optimization_type): New enum.
+       * doc/tm.texi.in (TARGET_OPTAB_SUPPORTED_P): New hook.
+       * doc/tm.texi: Regenerate.
+       * target.def (optab_supported_p): New hook.
+       * targhooks.h (default_optab_supported_p): Declare.
+       * targhooks.c (default_optab_supported_p): New function.
+       * predict.h (function_optimization_type): Declare.
+       (bb_optimization_type): Likewise.
+       * predict.c (function_optimization_type): New function.
+       (bb_optimization_type): Likewise.
+       * optabs-query.h (convert_optab_handler): Define an overload
+       that takes an optimization type.
+       (direct_optab_handler): Likewise.
+       * optabs-query.c (convert_optab_handler): Likewise.
+       (direct_optab_handler): Likewise.
+       * internal-fn.h (direct_internal_fn_supported_p): Take an
+       optimization_type argument.
+       * internal-fn.c (direct_optab_supported_p): Likewise.
+       (multi_vector_optab_supported_p): Likewise.
+       (direct_internal_fn_supported_p): Likewise.
+       * builtins.c (replacement_internal_fn): Update call to
+       direct_internal_fn_supported_p.
+       * gimple-match-head.c (build_call_internal): Likewise.
+       * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
+       * tree-vect-stmts.c (vectorizable_internal_function): Likewise.
+       * tree.c (maybe_build_call_expr_loc): Likewise.
+       * config/i386/i386.c (ix86_optab_supported_p): New function.
+       (TARGET_OPTAB_SUPPORTED_P): Define.
+       * config/i386/i386.md (asinxf2): Remove optimize_insn_for_size_p check.
+       (asin<mode>2, acosxf2, acos<mode>2, log1pxf2, log1p<mode>2)
+       (expNcorexf3, expxf2, exp<mode>2, exp10xf2, exp10<mode>2, exp2xf2)
+       (exp2<mode>2, expm1xf2, expm1<mode>2, ldexpxf3, ldexp<mode>3)
+       (scalbxf3, scalb<mode>3, rint<mode>2, round<mode>2)
+       (<rounding_insn>xf2, <rounding_insn><mode>2): Likewise.
+
+2015-12-02  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * Makefile.in (GENSUPPORT_H): New macro.
+       (build/gensupport.o, build/read-rtl.o, build/genattr.o)
+       (build/genattr-common.o, build/genattrtab.o, build/genautomata.o)
+       (build/gencodes.o, build/genconditions.o, build/genconfig.o)
+       (build/genconstants.o, build/genextract.o, build/genflags.o)
+       (build/gentarget-def.o): Use it.
+       (build/genemit.o): Likewise.  Depend on internal-fn.def.
+       * genopinit.c: Move block comment to optabs.def.
+       (optab_tag, optab_def): Move to gensupport.h
+       (pattern): Likewise, renaming to optab_pattern.
+       (match_pattern): Move to gensupport.c
+       (gen_insn): Use find_optab.
+       (patterns, pattern_cmp): Replace pattern with optab_pattern.
+       (main): Likewise.  Use num_optabs.
+       * optabs.def: Add comment that was previously in genopinit.c.
+       * gensupport.h (optab_tag): Moved from genopinit.c
+       (optab_def): Likewise, expanding commentary.
+       (optab_pattern): Likewise, after renaming from pattern.
+       (optabs, num_optabs, find_optab): Declare.
+       * gensupport.c (optabs): Moved from genopinit.c.
+       (num_optabs): New variable.
+       (match_pattern): Moved from genopinit.c.
+       (find_optab): New function, extracted from genopinit.c:gen_insn.
+       * genemit.c (nofail_optabs): New variable.
+       (emit_c_code): New function.
+       (gen_expand): Check whether the instruction is an optab that isn't
+       allowed to fail.  Call emit_c_code.
+       (gen_split): Call emit_c_code here too.
+       (main): Initialize nofail_optabs.  Don't emit FAIL and DONE here.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/predicates.md (const_mask_operand): New predicate.
+       * config/s390/s390-builtins.def: Set a smaller bitmask for a few builtins.
+       * config/s390/vector.md: Change predicate from immediate_operand
+       to either const_int_operand or const_mask_operand.  Add special
+       insn conditions on patterns which have to exclude certain values.
+       * config/s390/vx-builtins.md: Likewise.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/vector.md ("*vec_set<mode>"): Change shift count
+       mode from DI to SI.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390-builtin-types.def: New builtin types added.
+       * config/s390/s390-builtins.def: Add s390_vec_splat_* definitions.
+       * config/s390/s390.c (s390_expand_builtin): Always truncate
+       constants to the mode in the pattern.
+       * config/s390/vecintrin.h: Let the vec_splat_* macros point to the
+       respective builtin __builtin_s390_vec_splat_*.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390-builtin-types.def: Sort builtin types.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390-c.c (s390_get_vstring_flags): Invert the
+       condition for the RT flag.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/constraints.md ("jKK"): New constraint.
+       * config/s390/s390.c (tm-constrs.h): Include for
+       satisfies_constraint_*.
+       (s390_legitimate_constant_p): Allow jKK constants.  Use
+       satisfies_constraint_* also for the others.
+       (legitimate_reload_vector_constant_p): Likewise.
+       (print_operand): Allow h output modifier on vectors.
+       * config/s390/vector.md ("mov<mode>"): Add vrepi.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/vector.md ("*vec_splats<mode>"): Fix constraint
+       latter I->K.
+
+2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.md ("bswap<mode>2"): Add support for strv and
+       strvg.
+       ("bswaphi2"): New pattern.
+       New splitter for HI reg-reg bswap.
+
+2015-11-27  Jiri Engelthaler  <engycz@gmail.com>
+
+       PR driver/68029
+       * opts-common.c (prune_options): Don't ignore -fdiagnostics-color 
+       if it is the first parameter.
+
+2015-12-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/68577
+       * tree-vect-stmts.c (simple_integer_narrowing): New function.
+       (vectorizable_call): Restrict internal function handling
+       to NONE and NARROW cases, using simple_integer_narrowing
+       to test for the latter.  Add cost of narrowing operation
+       and insert it where necessary.
+
+2015-12-01  Andreas Tobler  <andreast@gcc.gnu.org>
+
+       * config/rs6000/freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
+       (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
+       rs6000_current_abi to ABI_AIX or ABI_ELFv2.
+
+2015-12-01  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx-protos.h (nvptx_output_aligned_decl): Declare.
+       * config/nvptx/nvptx.h (ASM_OUTPUT_ALIGNED_DECL_COMMON,
+       ASM_OUTPUT_ALIGNED_DECL_LOCAL): Forward to nvptx_output_aligned_decl.
+       * config/nvptx/nvptx.c (write_fn_marker, write_var_marker): New.
+       (write_fn_proto, write_fn_proto_from_insn): Call write_fn_marker.
+       (init_output_initializer): Call write_var_marker.
+       (nvptx_output_aligned_decl): New.
+       (nvptx_assemble_undefined_decl, nvptx_file_end): Call write_var_marker.
+
+2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * c-common.c (parse_optimize_options): Do not silently ignore
+       -fstrict-aliasing changes.
+
+2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
+       * tree-streamer-out.c (pack_ts_type_common_value_fields): Do not
+       stream TYPE_ALIAS_SET.
+       * tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
+       stream TYPE_ALIAS_SET.
+
+2015-12-01  Nathan Sidwell  <nathan@acm.org>
+
+       * config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't
+       consider mode.
+
+2015-12-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * config/rs6000/rs6000.c (const_load_sequence_p): Handle extra
+       indirection for large and small code models.
+       (adjust_vperm): Likewise.
+
+2015-12-01  Julian Brown  <julian@codesourcery.com>
+           Cesar Philippidis  <cesar@codesourcery.com>
+           James Norris  <James_Norris@mentor.com>
+
+       * gimple-pretty-print.c (dump_gimple_omp_target): Add host_data
+       support.
+       * gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_HOST_DATA.
+       (is_gimple_omp_oacc): Add support for above.
+       * gimplify.c (omp_region_type): Add ORT_ACC_HOST_DATA.
+       (omp_notice_variable): Diagnose undefined implicit uses of
+       use_device variables in offloaded regions.
+       (gimplify_scan_omp_clauses): Add host_data, use_device
+       support. Diagnose undefined mapping of use_device variables in
+       OpenACC clauses.
+       (gimplify_omp_workshare): Add host_data support.
+       (gimplify_expr): Likewise.
+       * omp-builtins.def (BUILT_IN_GOACC_HOST_DATA): New.
+       * omp-low.c (lookup_decl_in_outer_ctx)
+       (maybe_lookup_decl_in_outer_ctx): Add optional argument to skip
+       host_data regions.
+       (scan_sharing_clauses): Support use_device.
+       (check_omp_nesting_restrictions): Support host_data.
+       (expand_omp_target): Support host_data.
+       (lower_omp_target): Skip over outer host_data regions when looking
+       up decls. Support use_device.
+       (make_gimple_omp_edges): Support host_data.
+       * tree-nested.c (convert_nonlocal_omp_clauses): Add use_device
+       clause.
+
+2015-12-01  Marek Polacek  <polacek@redhat.com>
+
+       PR middle-end/68582
+       * cgraphunit.c (check_global_declaration): Only depend on TREE_THIS_VOLATILE
+       for VAR_DECLs.
+
+2015-12-01  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR tree-optimization/68474
+       * tree-call-cdce.c (use_internal_fn): Protect call to
+       gen_shrink_wrap_conditions.
+
+2015-12-01  Christian Bruel  <christian.bruel@st.com>
+
+       PR target/68617
+       * config/arm/arm.opt (unaligned_access): Save.
+       * config/arm/arm-c.c (__ARM_FEATURE_UNALIGNED): Conditionally define.
+       * config/arm/arm.c (arm_option_override): Move unaligned_access setting
+       (arm_option_override_internal): ... here.
+       * config/arm/arm.h (TARGET_32BIT_P): New macro.
+
+2015-12-01  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/68379
+       * tree-vect-stmts.c (vectorizable_load): For BB vectorization
+       always base loads on the first used DR of a group.
+       * tree-vect-data-refs.c (vect_slp_analyze_and_verify_node_alignment):
+       Compute alignment of the first scalar element unconditionally.
+
+2015-12-01  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/68590
+       * genmatch.c (struct capture_info): Add match_use_count.
+       (capture_info::walk_match): Increment match_use_count.
+       (dt_simplify::gen_1): For GENERIC, only wrap multi-use
+       replacements in a save_expr if they occur more often than
+       in the original expression.
+
 2015-12-01  Richard Biener  <rguenther@suse.de>
 
        PR ipa/68470