From: Uros Bizjak Date: Thu, 8 May 2014 19:02:28 +0000 (+0200) Subject: re PR target/61092 (wide-int merge broke alpha bootstrap) X-Git-Tag: upstream/12.2.0~63397 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6db8af6f68dd0d96bb262fbc882dbbd047502ab;p=platform%2Fupstream%2Fgcc.git re PR target/61092 (wide-int merge broke alpha bootstrap) PR target/61092 * config/alpha/alpha.c: Include gimple-iterator.h. (alpha_gimple_fold_builtin): New function. Move ALPHA_BUILTIN_UMULH folding from ... (alpha_fold_builtin): ... here. (TARGET_GIMPLE_FOLD_BUILTIN): New define. From-SVN: r210233 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 38c03f5..1ec6cf4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,12 +1,19 @@ +2014-05-08 Uros Bizjak + + PR target/61092 + * config/alpha/alpha.c: Include gimple-iterator.h. + (alpha_gimple_fold_builtin): New function. Move + ALPHA_BUILTIN_UMULH folding from ... + (alpha_fold_builtin): ... here. + (TARGET_GIMPLE_FOLD_BUILTIN): New define. + 2014-05-08 Wei Mi PR target/58066 - * config/i386/i386.c (ix86_compute_frame_layout): - Update preferred_stack_boundary for call, expanded from - tls descriptor. - * config/i386/i386.md: - (*tls_global_dynamic_32_gnu): Update RTX to depend on - SP register. + * config/i386/i386.c (ix86_compute_frame_layout): Update + preferred_stack_boundary for call, expanded from tls descriptor. + * config/i386/i386.md (*tls_global_dynamic_32_gnu): Update RTX + to depend on SP register. (*tls_local_dynamic_base_32_gnu): Ditto. (*tls_local_dynamic_32_once): Ditto. (tls_global_dynamic_64_): Set @@ -171,7 +178,7 @@ 2014-05-08 Ramana Radhakrishnan * wide-int.cc (UTItype): Define. - (UDWtype): Define for appropriate W_TYPE_SIZE. + (UDWtype): Define for appropriate W_TYPE_SIZE. 2014-05-08 Marc Glisse @@ -353,16 +360,13 @@ (maybe_skip_until): Use translate to take into account lattices when trying to do disambiguations. (get_continuation_for_phi_1): Likewise. - (get_continuation_for_phi): Adjust for added translate - arguments. + (get_continuation_for_phi): Adjust for added translate arguments. (walk_non_aliased_vuses): Likewise. - * tree-ssa-alias.h (get_continuation_for_phi): Adjust - prototype. + * tree-ssa-alias.h (get_continuation_for_phi): Adjust prototype. (walk_non_aliased_vuses): Likewise. (call_may_clobber_ref_p_1): Declare. - * tree-ssa-sccvn.c (vn_reference_lookup_3): Also - disambiguate against calls. Stop early if we are - only supposed to disambiguate. + * tree-ssa-sccvn.c (vn_reference_lookup_3): Also disambiguate against + calls. Stop early if we are only supposed to disambiguate. * tree-ssa-pre.c (translate_vuse_through_block): Adjust. 2014-05-07 Joern Rennecke @@ -1337,9 +1341,10 @@ * ipa-devirt.c (get_class_context): Allow POD to change to non-POD. 2014-05-05 Radovan Obradovic - Tom de Vries + Tom de Vries - * target.def (call_fusage_contains_non_callee_clobbers): New DEFHOOKPOD. + * target.def (call_fusage_contains_non_callee_clobbers): New + DEFHOOKPOD. * doc/tm.texi.in (@node Stack and Calling): Add Miscellaneous Register Hooks to @menu. (@node Miscellaneous Register Hooks): New node. @@ -1365,9 +1370,8 @@ 2014-05-05 Richard Biener PR middle-end/61010 - * fold-const.c (fold_binary_loc): Consistently avoid - canonicalizing X & CST away from a CST that is the mask - of a mode. + * fold-const.c (fold_binary_loc): Consistently avoid canonicalizing + X & CST away from a CST that is the mask of a mode. 2014-05-05 Jan-Benedict Glaw @@ -1686,8 +1690,7 @@ * doc/invoke.texi: Fix typo. * tree-vrp.c: Fix typos. - * gimple.c (infer_nonnull_range): Reorder operands of an && - condition. + * gimple.c (infer_nonnull_range): Reorder operands of an && condition. 2014-04-29 Zhenqiang Chen @@ -1814,8 +1817,7 @@ 2014-04-28 Richard Biener * tree-pass.h (execute_pass_list): Adjust prototype. - * passes.c (pass_manager::execute_early_local_passes): - Adjust. + * passes.c (pass_manager::execute_early_local_passes): Adjust. (do_per_function): Change callback signature, push all actual work to the callbals. (do_per_function_toporder): Likewise. @@ -1866,18 +1868,18 @@ 2014-04-25 Cary Coutant - PR debug/60929 + PR debug/60929 * dwarf2out.c (should_move_die_to_comdat): A type definition - can contain a subprogram definition, but don't move it to a - comdat unit. + can contain a subprogram definition, but don't move it to a + comdat unit. (clone_as_declaration): Copy DW_AT_abstract_origin attribute. - (generate_skeleton_bottom_up): Remove DW_AT_object_pointer attribute - from original DIE. + (generate_skeleton_bottom_up): Remove DW_AT_object_pointer attribute + from original DIE. (clone_tree_hash): Rename to... (clone_tree_partial): ...this; change callers. Copy - DW_TAG_subprogram DIEs as declarations. + DW_TAG_subprogram DIEs as declarations. (copy_decls_walk): Don't copy children of a declaration into a - type unit. + type unit. 2014-04-25 H.J. Lu @@ -1895,8 +1897,7 @@ 2014-04-25 Kyrylo Tkachov - * config/arm/arm.c (arm_cortex_a8_tune): Initialise - T16-related fields. + * config/arm/arm.c (arm_cortex_a8_tune): Initialise T16-related fields. 2014-04-25 Bill Schmidt @@ -1922,7 +1923,7 @@ clobbers. 2014-04-25 Radovan Obradovic - Tom de Vries + Tom de Vries * rtlanal.c (find_all_hard_reg_sets): Add bool implicit parameter and handle. @@ -1980,8 +1981,7 @@ 2014-04-24 Michael Meissner * doc/extend.texi (PowerPC Built-in Functions): Document new - powerpc extended divide, bcd, pack/unpack 128-bit, builtin - functions. + powerpc extended divide, bcd, pack/unpack 128-bit, builtin functions. (PowerPC AltiVec/VSX Built-in Functions): Likewise. * config/rs6000/predicates.md (const_0_to_3_operand): New @@ -2041,8 +2041,7 @@ support for decimal floating point builtin functions. (rs6000_expand_ternop_builtin): Add checks for the new builtin functions that take constant arguments. - (rs6000_invalid_builtin): Add decimal floating point builtin - support. + (rs6000_invalid_builtin): Add decimal floating point builtin support. (rs6000_init_builtins): Setup long double, _Decimal64, and _Decimal128 types for new builtin functions. (builtin_function_type): Set the unsigned flags appropriately for @@ -2093,8 +2092,7 @@ builtin functions. (UNSPEC_CDTBCD): Likewise. (UNSPEC_CBCDTD): Likewise. - (UNSPEC_DIVE): Add support for new extended divide builtin - functions. + (UNSPEC_DIVE): Add support for new extended divide builtin functions. (UNSPEC_DIVEO): Likewise. (UNSPEC_DIVEU): Likewise. (UNSPEC_DIVEUO): Likewise. @@ -2107,8 +2105,7 @@ (addg6s): Add new BCD builtin functions. (cdtbcd): Likewise. (cbcdtd): Likewise. - (UNSPEC_DIV_EXTEND): Add support for new extended divide - instructions. + (UNSPEC_DIV_EXTEND): Add support for new extended divide instructions. (div_extend): Likewise. (div_"): Likewise. (FP128_64): Add support for new builtin functions to pack/unpack @@ -2164,7 +2161,7 @@ * config/aarch64/aarch64.c (aarch64_evpc_tbl): Enable for bigendian. 2014-04-24 Radovan Obradovic - Tom de Vries + Tom de Vries * reg-notes.def (REG_NOTE (CALL_DECL)): New reg-note REG_CALL_DECL. * calls.c (expand_call, emit_library_call_value_1): Add REG_CALL_DECL @@ -2173,14 +2170,14 @@ * emit-rtl.c (try_split): Same. 2014-04-24 Radovan Obradovic - Tom de Vries + Tom de Vries * common.opt (fuse-caller-save): New option. 2014-04-24 Tejas Belagod - * config/aarch64/aarch64.c (aarch64_evpc_tbl): Reverse order of elements - for big-endian. + * config/aarch64/aarch64.c (aarch64_evpc_tbl): Reverse order of + elements for big-endian. 2014-04-24 Richard Biener @@ -2345,12 +2342,9 @@ (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): - Convert to... - (is_a_helper ::test): - ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... + (is_a_helper ::test): ...this. + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... @@ -2360,8 +2354,7 @@ Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... @@ -2371,43 +2364,35 @@ (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. - (is_a_helper ::test): - Convert to... + (is_a_helper ::test): Convert + to... (is_a_helper ::test): ...this. - (is_a_helper ::test): Convert - to... + (is_a_helper ::test): Convert to... (is_a_helper ::test): ...this. (gimple_use_ops): Update for removal of implicit pointer from the @@ -2628,7 +2613,7 @@ invalidate outputs from statements that do not produce useful outputs for threading. -2014-04-23 Venkataramanan Kumar +2014-04-23 Venkataramanan Kumar * config/aarch64/aarch64.md (stack_protect_set, stack_protect_test) (stack_protect_set_, stack_protect_test_): Add @@ -2657,41 +2642,41 @@ 2014-04-23 Kyrylo Tkachov - * config/aarch64/aarch64.md (rev162): New pattern. - (rev162_alt): Likewise. - * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle rev16 case. - * config/arm/aarch-common.c (aarch_rev16_shright_mask_imm_p): New. - (aarch_rev16_shleft_mask_imm_p): Likewise. - (aarch_rev16_p_1): Likewise. - (aarch_rev16_p): Likewise. - * config/arm/aarch-common-protos.h (aarch_rev16_p): Declare extern. - (aarch_rev16_shright_mask_imm_p): Likewise. - (aarch_rev16_shleft_mask_imm_p): Likewise. + * config/aarch64/aarch64.md (rev162): New pattern. + (rev162_alt): Likewise. + * config/aarch64/aarch64.c (aarch64_rtx_costs): Handle rev16 case. + * config/arm/aarch-common.c (aarch_rev16_shright_mask_imm_p): New. + (aarch_rev16_shleft_mask_imm_p): Likewise. + (aarch_rev16_p_1): Likewise. + (aarch_rev16_p): Likewise. + * config/arm/aarch-common-protos.h (aarch_rev16_p): Declare extern. + (aarch_rev16_shright_mask_imm_p): Likewise. + (aarch_rev16_shleft_mask_imm_p): Likewise. 2014-04-23 Kyrylo Tkachov - * config/arm/aarch-common-protos.h (alu_cost_table): Add rev field. - * config/arm/aarch-cost-tables.h (generic_extra_costs): Specify - rev cost. - (cortex_a53_extra_costs): Likewise. - (cortex_a57_extra_costs): Likewise. - * config/arm/arm.c (cortexa9_extra_costs): Likewise. - (cortexa7_extra_costs): Likewise. - (cortexa8_extra_costs): Likewise. - (cortexa12_extra_costs): Likewise. - (cortexa15_extra_costs): Likewise. - (v7m_extra_costs): Likewise. - (arm_new_rtx_costs): Handle BSWAP. + * config/arm/aarch-common-protos.h (alu_cost_table): Add rev field. + * config/arm/aarch-cost-tables.h (generic_extra_costs): Specify + rev cost. + (cortex_a53_extra_costs): Likewise. + (cortex_a57_extra_costs): Likewise. + * config/arm/arm.c (cortexa9_extra_costs): Likewise. + (cortexa7_extra_costs): Likewise. + (cortexa8_extra_costs): Likewise. + (cortexa12_extra_costs): Likewise. + (cortexa15_extra_costs): Likewise. + (v7m_extra_costs): Likewise. + (arm_new_rtx_costs): Handle BSWAP. 2013-04-23 Kyrylo Tkachov - * config/arm/arm.c (cortexa8_extra_costs): New table. - (arm_cortex_a8_tune): New tuning struct. - * config/arm/arm-cores.def (cortex-a8): Use cortex_a8 tuning struct. + * config/arm/arm.c (cortexa8_extra_costs): New table. + (arm_cortex_a8_tune): New tuning struct. + * config/arm/arm-cores.def (cortex-a8): Use cortex_a8 tuning struct. 2014-04-23 Kyrylo Tkachov - * config/arm/arm.c (arm_new_rtx_costs): Handle FMA. + * config/arm/arm.c (arm_new_rtx_costs): Handle FMA. 2014-04-23 Richard Biener @@ -2727,8 +2712,7 @@ (has_32bit_hwmult): Rename to use_32bit_hwmult. Add support for -mhwmult command line option. (msp430_hwmult_enabled): Delete. - (msp43o_output_labelref): Add support for -mhwmult command line - option. + (msp43o_output_labelref): Add support for -mhwmult command line option. * config/msp430/msp430.md (mulhisi3, umulhisi3, mulsidi3) (umulsidi3): Likewise. * config/msp430/msp430.opt (mmcu): Add Report attribute. @@ -3144,8 +3128,7 @@ * gcc/config/aarch64/aarch64-simd.md (aarch64_s): Pattern extended. - * config/aarch64/aarch64-simd-builtins.def (sqneg): Iterator - extended. + * config/aarch64/aarch64-simd-builtins.def (sqneg): Iterator extended. (sqabs): Likewise. * config/aarch64/arm_neon.h (vqneg_s64): New intrinsic. (vqnegd_s64): Likewise. @@ -3262,12 +3245,9 @@ 2014-04-22 Alex Velenko - * config/aarch64/aarch64-builtins.c (BUILTIN_VDQF_DF): Macro - added. - * config/aarch64/aarch64-simd-builtins.def (frintn): Use added - macro. - * config/aarch64/aarch64-simd.md (): Comment - corrected. + * config/aarch64/aarch64-builtins.c (BUILTIN_VDQF_DF): Macro added. + * config/aarch64/aarch64-simd-builtins.def (frintn): Use added macro. + * config/aarch64/aarch64-simd.md (): Comment corrected. * config/aarch64/aarch64.md (): Likewise. * config/aarch64/arm_neon.h (vrnd_f64): Added. (vrnda_f64): Likewise. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index df4cc1b..dc07a02 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-expr.h" #include "is-a.h" #include "gimple.h" +#include "gimple-iterator.h" #include "gimplify.h" #include "gimple-ssa.h" #include "stringpool.h" @@ -7042,9 +7043,6 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op, case ALPHA_BUILTIN_MSKQH: return alpha_fold_builtin_mskxx (op, opint, op_const, 0xff, true); - case ALPHA_BUILTIN_UMULH: - return fold_build2 (MULT_HIGHPART_EXPR, alpha_dimode_u, op[0], op[1]); - case ALPHA_BUILTIN_ZAP: opint[1] ^= 0xff; /* FALLTHRU */ @@ -7094,6 +7092,49 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op, return NULL; } } + +bool +alpha_gimple_fold_builtin (gimple_stmt_iterator *gsi) +{ + bool changed = false; + gimple stmt = gsi_stmt (*gsi); + tree call = gimple_call_fn (stmt); + gimple new_stmt = NULL; + + if (call) + { + tree fndecl = gimple_call_fndecl (stmt); + + if (fndecl) + { + tree arg0, arg1; + + switch (DECL_FUNCTION_CODE (fndecl)) + { + case ALPHA_BUILTIN_UMULH: + arg0 = gimple_call_arg (stmt, 0); + arg1 = gimple_call_arg (stmt, 1); + + new_stmt + = gimple_build_assign_with_ops (MULT_HIGHPART_EXPR, + gimple_call_lhs (stmt), + arg0, + arg1); + break; + default: + break; + } + } + } + + if (new_stmt) + { + gsi_replace (gsi, new_stmt, true); + changed = true; + } + + return changed; +} /* This page contains routines that are used to determine what the function prologue and epilogue code will do and write them out. */ @@ -9790,6 +9831,8 @@ alpha_canonicalize_comparison (int *code, rtx *op0, rtx *op1, #define TARGET_EXPAND_BUILTIN alpha_expand_builtin #undef TARGET_FOLD_BUILTIN #define TARGET_FOLD_BUILTIN alpha_fold_builtin +#undef TARGET_GIMPLE_FOLD_BUILTIN +#define TARGET_GIMPLE_FOLD_BUILTIN alpha_gimple_fold_builtin #undef TARGET_FUNCTION_OK_FOR_SIBCALL #define TARGET_FUNCTION_OK_FOR_SIBCALL alpha_function_ok_for_sibcall