match.pd: Refine type conversion in result expr for below pattern: (cond (cmp (convert1?
[gcc.git] / gcc / ChangeLog
index 30fbed63c884ae04c1eee1134fb223d60210347f..7a22234ed9234453e11454e58198dac752110d98 100644 (file)
@@ -1,3 +1,180 @@
+2016-11-24  Bin Cheng  <bin.cheng@arm.com>
+
+       * match.pd: Refine type conversion in result expr for below pattern:
+       (cond (cmp (convert1? x) c1) (convert2? x) c2) -> (minmax (x c)).
+
+2016-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/78429
+       * tree.h (wi::fits_to_boolean_p): New predicate.
+       (wi::fits_to_tree_p): Use it for boolean types.
+       * tree.c (int_fits_type_p): Likewise.
+
+2016-11-24  Martin Liska  <mliska@suse.cz>
+
+       * print-tree.c (struct bucket): Remove.
+       (print_node): Add new argument which drives whether a tree node
+       is printed briefly or not.
+       (debug_tree): Replace a custom hash table with hash_set<T>.
+       * print-tree.h (print_node): Add the argument.
+
+2016-11-24  Chung-Lin Tang  <cltang@codesourcery.com>
+
+       * config/nios2/nios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.
+
+2016-11-23  Peter Bergner  <bergner@vnet.ibm.com>
+
+       PR target/78458
+       * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Return MODE
+       if it is at least NREGS wide.
+
+2016-11-23  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): For
+       TARGET_E500_DOUBLE. handle TDmode, TImode and PTImode the same as
+       TFmode, IFmode and KFmode.
+
+2016-11-23  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/rs6000/spe.md (*frob_<SPE64:mode>_ti_8): New insn
+       pattern.
+
+2016-11-23  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * combine.c (change_zero_ext): Only change the mode of a hard register
+       destination if can_change_dest_mode holds for that.
+
+2016-11-23  Jeff Law  <law@redhat.com>
+
+       * varasm.c (assemble_name): Increase buffer size for name.
+
+       * config/spu/spu.md (floatunsdidf2): Remove unused local variable.
+
+2016-11-23  Jakub Kicinski  <jakub.kicinski@netronome.com>
+
+       * doc/extend.texi: Constify first argument to __builtin_object_size.
+
+2016-11-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+       * opth-gen.awk: Use unsigned shifts for bit masks.  Allow all bits
+       to be used.  Add brackets around macro argument.
+
+2016-11-23  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (*<any_or:code>hi_1): Fix operand 2 constraints.
+
+2016-11-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR sanitizer/69278
+       * opts.c (parse_sanitizer_options): For -fsanitize=undefined,
+       restore enabling also SANITIZE_UNREACHABLE and SANITIZE_RETURN.
+
+2016-11-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/69183
+       * omp-low.c (build_outer_var_ref): Change lastprivate argument
+       to code, pass it recursively, adjust uses.  For OMP_CLAUSE_PRIVATE
+       on worksharing constructs, treat it like clauses on simd construct.
+       Formatting fix.
+       (lower_rec_input_clauses): For OMP_CLAUSE_PRIVATE_OUTER_REF pass
+       OMP_CLAUSE_PRIVATE as last argument to build_outer_var_ref.
+       (lower_lastprivate_clauses): Pass OMP_CLAUSE_LASTPRIVATE instead
+       of true as last argument to build_outer_var_ref.
+
+2016-11-23  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (*movqi_internal): Calculate mode
+       attribute of alternatives 7,8,9 depending on TARGET_AVX512DQ.
+       <TYPE_MSKMOV>: Emit kmovw for MODE_HI insn mode attribute.
+       (*k<logic><mode>): Calculate mode attribute depending on
+       TARGET_AVX512DQ.  Emit k<logic>w for MODE_HI insn mode attribute.
+       (*andqi_1): Calculate mode attribute of alternative 3 depending
+       on TARGET_AVX512DQ.  Emit kandw for MODE_HI insn mode attribute.
+       (kandn<mode>): Calculate mode attribute of alternative 2 depending
+       on TARGET_AVX512DQ.  Emit kandnw for MODE_HI insn mode attribute.
+       (kxnor<mode>): Merge insn patterns using SWI1248_AVX512BW mode
+       iterator.  Calculate mode attribute of alternative 1 depending
+       on TARGET_AVX512DQ.  Emit kxnorw for MODE_HI insn mode attribute.
+       (*one_cmplqi2_1): Calculate mode attribute of alternative 2 depending
+       on TARGET_AVX512DQ.  Emit knotw for MODE_HI insn mode attribute.
+
+2016-11-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       PR middle-end/78153
+       * gimple-fold.c (fold_stmt_1): Handle case for GIMPLE_RETURN.
+       * tree-vrp.c (extract_range_basic): Handle case for
+       CFN_BUILT_IN_STRLEN.
+
+2016-11-23  Jeff Law  <law@redhat.com>
+
+       * config/mcore/mcore.c (emit_new_cond_insn): Fix prototype.
+
+       * config/iq2000/iq2000.c (iq2000_rtx_costs): Avoid multiplication
+       in boolean context warning.
+
+       * config/ia64/ia64.c (ia64_emit_insn_before): Fix prototype.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       PR target/63250
+       * config/arm/arm-builtins.c (arm_simd_floatHF_type_node): Rename to...
+       (arm_fp16_type_node): ...This, make visibile.
+       (arm_simd_builtin_std_type): Rename arm_simd_floatHF_type_node to
+       arm_fp16_type_node.
+       (arm_init_simd_builtin_types): Likewise.
+       (arm_init_fp16_builtins): Likewise.
+       * config/arm/arm.c (arm_excess_precision): New.
+       (arm_floatn_mode): Likewise.
+       (TARGET_C_EXCESS_PRECISION): Likewise.
+       (TARGET_FLOATN_MODE): Likewise.
+       (arm_promoted_type): Only promote arm_fp16_type_node.
+       * config/arm/arm.h (arm_fp16_type_node): Declare.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/arm/arm.c (arm_convert_to_type): Delete.
+       (TARGET_CONVERT_TO_TYPE): Delete.
+       (arm_init_libfuncs): Enable trunc_optab from DFmode to HFmode.
+       (arm_libcall_uses_aapcs_base): Add trunc_optab from DF- to HFmode.
+       * config/arm/arm.h (TARGET_FP16_TO_DOUBLE): New.
+       * config/arm/arm.md (truncdfhf2): Only convert through SFmode if we
+       are in fast math mode, and have no single step hardware instruction.
+       (extendhfdf2): Only expand through SFmode if we don't have a
+       single-step hardware instruction.
+       * config/arm/vfp.md (*truncdfhf2): New.
+       (extendhfdf2): Likewise.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * targhooks.c (default_floatn_mode): Enable _Float16 if a target
+       provides HFmode.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Delete.
+       * config/m68k/m68k.h (TARGET_FLT_EVAL_METHOD): Delete.
+       * config/i386/i386.h (TARGET_FLT_EVAL_METHOD): Delete.
+       * defaults.h (TARGET_FLT_EVAL_METHOD): Delete.
+       * doc/tm.texi.in (TARGET_FLT_EVAL_METHOD): Delete.
+       * doc/tm.texi: Regenerate.
+       * system.h (TARGET_FLT_EVAL_METHOD): Poison.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * toplev.c (init_excess_precision): Delete most logic.
+       * tree.c (excess_precision_type): Rewrite to use
+       TARGET_EXCESS_PRECISION.
+       * doc/invoke.texi (-fexcess-precision): Document behaviour in a
+       more generic fashion.
+       * ginclude/float.h: Wrap definition of FLT_EVAL_METHOD in
+       __STDC_WANT_IEC_60559_TYPES_EXT__.
+
+2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * common.opt (fpermitted-flt-eval-methods): New.
+       * doc/invoke.texi (-fpermitted-flt-eval-methods): Document it.
+       * flag_types.h (permitted_flt_eval_methods): New.
+
 2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/m68k/m68k.c (m68k_excess_precision): New.
        (grid_call_permissible_in_distribute_p): Likewise.
        (grid_handle_call_in_distribute): Likewise.
        (grid_dist_follows_tiling_pattern): Likewise.
-       (grid_target_follows_gridifiable_pattern): Support standalone distribute
-       constructs.
+       (grid_target_follows_gridifiable_pattern): Support standalone
+       distribute constructs.
        (grid_var_segment): New enum.
        (grid_mark_variable_segment): New function.
        (grid_copy_leading_local_assignments): Call grid_mark_variable_segment
        (get_in_type): Return this if it is a register of
        matching size.
        (hsa_get_declaration_name): Moved to...
-        * hsa-gen.c (hsa_get_declaration_name): ...here.  Allocate
+       * hsa-gen.c (hsa_get_declaration_name): ...here.  Allocate
        temporary string on an obstack instead from ggc.
        (query_hsa_grid): Renamed to query_hsa_grid_dim, reimplemented, cut
        down to two overloads.
        (predicate_scalar_phi): Call fold_stmt using the new valueize func.
 
 2016-11-23  Martin Liska  <mliska@suse.cz>
-            Martin Jambor  <mjambor@suse.cz>
+           Martin Jambor  <mjambor@suse.cz>
 
        * doc/install.texi: Remove entry about --with-hsa-kmt-lib.
 
 2016-11-23  Aldy Hernandez  <aldyh@redhat.com>
 
        PR target/78213
-       * opts.c (finish_options): Set -fsyntax-only if running self
-       tests.
+       * opts.c (finish_options): Set -fsyntax-only if running self tests.
 
 2016-11-23  Richard Biener  <rguenther@suse.de>
 
        ior and xor operators.
        * config/aarch64/constraints.md (UsO constraint): New SImode constraint
        for constants in "and" operantions.
-       (UsP constraint): New DImode constraint for constants in "and" operations.
+       (UsP constraint): New DImode constraint for constants
+       in "and" operations.
        * config/aarch64/iterators.md (lconst2): New mode iterator.
        (LOGICAL2): New code iterator.
        * config/aarch64/predicates.md (aarch64_logical_and_immediate): New
-       predicate
-       (aarch64_logical_and_operand): New predicate allowing extended constants
-       for "and" operations.
+       predicate.
+       (aarch64_logical_and_operand): New predicate allowing extended
+       constants for "and" operations.
 
 2016-11-22  Walter Lee  <walt@tilera.com>
 
        * sel-sched-ir.h: Remove trailing blank lines.
 
 2016-11-22  Jakub Jelinek  <jakub@redhat.com>
-            Alexander Monakov  <amonakov@ispras.ru>
+           Alexander Monakov  <amonakov@ispras.ru>
 
        * internal-fn.c (expand_GOMP_USE_SIMT): New function.
        * tree.c (omp_clause_num_ops): OMP_CLAUSE__SIMT_ has 0 operands.