Mercurial > hg > CbC > GCC_original
view gcc/ChangeLog-2014 @ 16:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line source
2014-12-31 Uros Bizjak <ubizjak@gmail.com> * diagnostic.c (build_message_string): Use xvasprintf. * final.c (output_operand_lossage): Use xvasprintf and xasprintf. * lto-wrapper.c (merge_and_complain): Use xasprintf. * targhooks.c (pch_option_mismatch): Ditto. * tree-ssa-structalias.c (create_function_info_for): Ditto. (create_variable_info_for_1): Ditto. * tree-vect-data-refs.c (vect_create_destination_var): Ditto. 2014-12-30 Anthony Green <green@moxielogic.com> * config/moxie/moxie.md (zero_extendqisi2, zero_extendhisi2): Switch from define_insn_and_split to define_insn. Fix instruction length. 2014-12-30 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.c (ix86_legitimize_address): Declare "changed" as bool. (ix86_expand_unary_operator): Declare "matching_memory" as bool. (ix86_avoid_jump_mispredicts): Declare "isjump" as bool. 2014-12-30 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.c (ix86_reassociation_width): Remove unneeded variable "res". 2014-12-30 Jan Hubicka <hubicka@ucw.cz> * ipa-inline-analysis.c (estimate_function_body_sizes): Do not free node params when called late with early=true. 2014-12-30 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.c (ix86_legitimize_address): Use std::swap. (ix86_split_fp_branch): Ditto. (ix86_expand_int_movcc): Ditto. (ix86_expand_sse_compare): Ditto. 2014-12-30 Jan Hubicka <hubicka@ucw.cz> * ipa-inline-analysis.c (edge_set_predicate): Reset size/time when target is UNREACHABLE. (evaluate_properties_for_edge): If call statemet is available, use it to determine compile time constants. (estimate_function_body_sizes): Enable predicates for early inliner. (estimate_calls_size_and_time): Speedup. (inline_merge_summary): Evaluate properties for early inliner, too. 2014-12-29 Steve Ellcey <sellcey@mips.com> * config/mips/t-mti-linux (MULTILIB_EXCEPTIONS): Add exceptions for mips32[r1] and mips64[r1] with -mnan=2008. * config/mips/t-mti-elf (MULTILIB_EXCEPTIONS): Ditto. 2014-12-27 H.J. Lu <hongjiu.lu@intel.com> PR target/64409 * config/i386/i386.c (ix86_function_type_abi): Issue an error when ms_abi attribute is used with x32. 2014-12-27 Anthony Green <green@moxielogic.com> * config/moxie/moxie-protos.h (moxie_offset_address_p): Define. * config/moxie/constraints.md (B): Replace inline test with call to moxie_offset_address_p. * config/moxie/moxie.h (GO_IF_LEGITIMATE_ADDRESS): Limit offset addressing to 16-bit offsets. * config/moxie/moxie.c (moxie_asm_trampoline_template): Remove nop, which is no longer needed for aligned write to trampoline. (moxie_trampoline_init): Adjust for smaller trampoline. (moxie_offset_address_p): New function. * config/moxie/moxie.md (*movsi, *movhi, *movqi): Adjust length attr for shorter ldo/sto instructions. * config/moxie/predicates.md: Only allow REG+CONST_INT for offset load/stores. 2014-12-27 Jan hubicka <hubicka@ucw.cz> * ipa-inline.c (max_count_real, max_relbenefit_real, half_int_min_real): Remove. (cgraph_freq_base_rec, percent_rec): New. (compute_uninlined_call_time, compute_inlined_call_time, big_speedup_p, relative_time_benefit, edge_badness): Use sreals. (update_edge_key): Update dumping. (inline_small_functions): Speedup maintainance of the heap. (ipa_inline): Initialize cgraph_freq_base_rec and percent_rec. 2014-12-27 Jan hubicka <hubicka@ucw.cz> * sreal.h (sreal::shift): Fix sanity check. 2014-12-27 Uros Bizjak <ubizjak@gmail.com> * config/i386/mmx.md (*vec_extractv2sf_1): Do not emit unpckhps. Emit movshdup for SSE3 and shufps otherwise. (*vec_extractv2si_1): Do not emit punpckhdq and unpckhps. Emit pshufd for SSE2 and shufps otherwise. 2014-12-24 Oleg Endo <olegendo@gcc.gnu.org> PR target/51244 * config/sh/sh.md (*mov_t_msb_neg): Convert split into insn_and_split. 2014-12-24 Uros Bizjak <ubizjak@gmail.com> * gengtype.h (xasprintf): Remove declaration. * gengtype.c (xasprintf): Remove. 2014-12-24 Nick Clifton <nickc@redhat.com> PR target/64160 * config/msp430/msp430.md (addsi splitter): Do not split when the destination partially overlaps the source. 2014-12-24 Anthony Green <green@moxielogic.com> * config/moxie/moxie.opt (mul.x): New option. * doc/invoke.texi (Moxie Options): Document -mmul.x. * config/moxie/moxie.md (addsi3, mulsi3, subsi3, divsi3, udivs3): Remove trailing ".l" from add, mul, sub, div and udiv instructions. (<mul>si3_highpart, <mul>sidi3): Add mul.x & umul.x instruction support (high 32-bit result of multiply). * config/moxie/moxie.c (moxie_option_override): Force availability of mul.x instructions for moxiebox target. * config/moxie/moxiebox.h (TARGET_MOXIEBOX): Define. 2014-12-22 Zhouyi Zhou <yizhouzhou@ict.ac.cn> * ira-build.c (ira_flattening): Add the current object to OBJECTS_LIVE after traversing OBJECTS_LIVE. 2014-12-23 Martin Liska <mliska@suse.cz> PR ipa/63851 PR ipa/63852 * ipa-icf.c (sem_function::merge): Ignore merge operation for a thunk created from static chain. * ipa-icf-gimple.c (func_checker::compatible_types_p): Verify that types have same restrict flag. 2014-12-22 John David Anglin <danglin@gcc.gnu.org> PR target/55023 * dse.c (scan_insn): Treat sibling call as though it does a wild read. 2014-12-22 Bin Cheng <bin.cheng@arm.com> PR rtl-optimization/62151 * combine.c (try_combine): New local variables local_elim_i1 and local_elim_i0. Set elim_i1 and elim_i0 using the local version variables. Distribute notes from i0notes or i1notes using the local variables. 2014-12-22 Martin Liska <mliska@suse.cz> * cgraphunit.c (symbol_table::process_new_functions): New inline_summaries is used. * ipa-cp.c (ipcp_cloning_candidate_p): Likewise. (devirtualization_time_bonus): Likewise. (estimate_local_effects): Likewise. (ipcp_propagate_stage): Likewise. * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Likewise. (evaluate_properties_for_edge): Likewise. (inline_summary_alloc): Likewise. (reset_inline_summary): New inline_summary argument is introduced. (inline_summary_t::remove): New function. (inline_summary_t::duplicate): Likewise. (dump_inline_edge_summary): New inline_summaries is used. (dump_inline_summary): Likewise. (estimate_function_body_sizes): Likewise. (compute_inline_parameters): Likewise. (estimate_edge_devirt_benefit): Likewise. (estimate_node_size_and_time): Likewise. (inline_update_callee_summaries): Likewise. (inline_merge_summary): Likewise. (inline_update_overall_summary): Likewise. (simple_edge_hints): Likewise. (do_estimate_edge_time): Likewise. (estimate_time_after_inlining): Likewise. (estimate_size_after_inlining): Likewise. (do_estimate_growth): Likewise. (growth_likely_positive): Likewise. (inline_generate_summary): Likewise. (inline_read_section): Likewise. (inline_read_summary): Likewise. (inline_write_summary): Likewise. (inline_free_summary): Likewise. * ipa-inline-transform.c (clone_inlined_nodes): Likewise. (inline_call): Likewise. * ipa-inline.c (caller_growth_limits): Likewise. (can_inline_edge_p): Likewise. (want_early_inline_function_p): Likewise. (compute_uninlined_call_time): Likewise. (compute_inlined_call_time): Likewise. (big_speedup_p): Likewise. (want_inline_small_function_p): Likewise. (edge_badness): Likewise. (update_caller_keys): Likewise. (update_callee_keys): Likewise. (recursive_inlining): Likewise. (inline_small_functions): Likewise. (inline_to_all_callers): Likewise. (dump_overall_stats): Likewise. (early_inline_small_functions): Likewise. * ipa-inline.h: New class inline_summary_t replaces vec<inline_summary_t>. * ipa-split.c (execute_split_functions): New inline_summaries is used. * ipa.c (walk_polymorphic_call_targets): Likewise. * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise. 2014-12-22 Martin Liska <mliska@suse.cz> * auto-profile.c: Include of symbol-summary.h is added. * cgraph.c: Likewise. * cgraphbuild.c: Likewise. * cgraphclones.c: Likewise. * cgraphunit.c: Likewise. * ipa-cp.c: Likewise. * ipa-devirt.c: Likewise. * ipa-icf.c: Likewise. * ipa-inline-analysis.c (evaluate_properties_for_edge): New ipa_node_params_sum data structure is used. (inline_node_duplication_hook): Likewise. (estimate_function_body_sizes): Likewise. (remap_edge_change_prob): Likewise. (inline_merge_summary): Likewise. * ipa-inline-transform.c: Include of symbol-summary.h is added. * ipa-inline.c (early_inliner): New ipa_node_params_sum data structure is used. * ipa-polymorphic-call.c: Include of symbol-summary.h is added. * ipa-profile.c: Include of symbol-summary.h is added. * ipa-prop.c (ipa_propagate_indirect_call_infos): New ipa_node_params_sum data structure is used. (ipa_node_params::~ipa_node_params): New function. (ipa_free_all_node_params): Destruction is simplified. (ipa_node_removal_hook): Removed. (ipa_add_new_function): Renamed from ipa_node_duplication_hook. (ipa_node_params_t::duplicate): New function. (ipa_register_cgraph_hooks): Few hooks are removed. (ipa_unregister_cgraph_hooks): Likewise. (ipa_prop_write_jump_functions): New ipa_node_params_sum is used. * ipa-prop.h (struct ipa_node_params): Destructor introduced for the structure. (ipa_check_create_node_params): Vector for ipa_node_params is replaced with function_summary. * ipa-split.c: Include of symbol-summary.h is added. * ipa-utils.c: Include of symbol-summary.h is added. * ipa.c: Include of symbol-summary.h is added. * omp-low.c: Include of symbol-summary.h is added. * tree-inline.c: Include of symbol-summary.h is added. * tree-sra.c: Include of symbol-summary.h is added. * tree-ssa-pre.c: Include of symbol-summary.h is added. 2014-12-22 Martin Liska <mliska@suse.cz> * cgraph.h (symbol_table::allocate_cgraph_symbol): Summary UID is filled up. * symbol-summary.h: New file. * gengtype.c (open_base_files): Add symbol-summary.h. * toplev.c (general_init): Call constructor of symbol_table. 2014-12-17 Oleg Endo <olegendo@gcc.gnu.org> PR target/55212 * config/sh/sh.md (*addsi3_compact): Add parentheses around && condition. Add comments. 2014-12-20 Segher Boessenkool <segher@kernel.crashing.org> PR target/64358 * config/rs6000/rs6000.c (rs6000_split_logical_inner): Swap the input operands if only the second is inverted. * config/rs6000/rs6000.md (*boolc<mode>3_internal1 for BOOL_128): Swap BOOL_REGS_OP1 and BOOL_REGS_OP2. Correct arguments to rs6000_split_logical. (*boolc<mode>3_internal2 for TI2): Swap operands[1] and operands[2]. 2014-12-20 Martin Uecker <uecker@eecs.berkeley.edu> * doc/invoke.texi: Document -Wdiscarded-array-qualifiers. * doc/extend.texi: Document new behavior for pointers to arrays with qualifiers. 2014-12-19 Jan Hubicka <hubicka@ucw.cz> * hash-table.h (struct pointer_hash): Fix formating. (hash_table_higher_prime_index): Declare pure. (hash_table_mod2, hash_table_mod1, mul_mod): Move inline; assume that uint64_t always exists. (hash_table<Descriptor, Allocator, false>): Use gcc_checking_assert. (hash_table<Descriptor, Allocator, false>::expand ()): Fix formating. (hash_table<Descriptor, Allocator, false>::clear_slot (value_type **slot)): Use checking assert. * hash-table.c: Remove #if 0 code. (hash_table_higher_prime_index): Use gcc_assert. (mul_mod, hash-table_mod1, hash_table_mod2): move to hash-table.h 2014-12-19 Matthew Fortune <matthew.fortune@imgtec.com> * config.gcc: Support mips*-img-linux* and mips*-img-elf*. * config/mips/mti-linux.h: Support mips32r6 as being the default arch. * config/mips/t-img-elf: New. * config/mips/t-img-linux: New. 2014-12-19 Matthew Fortune <matthew.fortune@imgtec.com> * config.gcc: Add mipsisa64r6 and mipsisa32r6 cpu support. * config/mips/constraints.md (ZD): Add r6 restrictions. * config/mips/gnu-user.h (DRIVER_SELF_SPECS): Add MIPS_ISA_LEVEL_SPEC. * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): Move to mips.md. * config/mips/mips-cpus.def (mips32r6, mips64r6): Define. * config/mips/mips-modes.def (CCF): New mode. * config/mips/mips-protos.h (mips_9bit_offset_address_p): New prototype. * config/mips/mips-tables.opt: Regenerate. * config/mips/mips.c (MIPS_JR): Use JALR $, <reg> for R6. (mips_rtx_cost_data): Add pseudo-processors W32 and W64. (mips_9bit_offset_address_p): New function. (mips_rtx_costs): Account for R6 multiply and FMA instructions. (mips_emit_compare): Implement R6 FPU comparisons. (mips_expand_conditional_move): Implement R6 selects. (mips_expand_conditional_trap): Account for removed trap immediate. (mips_expand_block_move): Disable inline move when LWL/LWR are removed. (mips_print_float_branch_condition): Update for R6 FPU branches. (mips_print_operand): Handle CCF mode compares. (mips_interrupt_extra_call_saved_reg_p): Do not attempt to callee-save MD_REGS for R6. (mips_hard_regno_mode_ok_p): Support CCF mode. (mips_mode_ok_for_mov_fmt_p): Likewise. (mips_secondary_reload_class): CCFmode can be loaded directly. (mips_set_fast_mult_zero_zero_p): Account for R6 multiply instructions. (mips_option_override): Ensure R6 is used with fp64. Set default mips_nan modes. Check for mips_nan support. Prevent DSP with R6. (mips_conditional_register_usage): Disable MD_REGS for R6. Disable FPSW for R6. (mips_mulsidi3_gen_fn): Support R6 multiply instructions. * config/mips/mips.h (ISA_MIPS32R6, ISA_MIPS64R6): Define. (TARGET_CPU_CPP_BUILTINS): Rework for mips32/mips64. (ISA_HAS_JR): New macro. (ISA_HAS_HILO): New macro. (ISA_HAS_R6MUL): Likewise. (ISA_HAS_R6DMUL): Likewise. (ISA_HAS_R6DIV): Likewise. (ISA_HAS_R6DDIV): Likewise. (ISA_HAS_CCF): Likewise. (ISA_HAS_SEL): Likewise. (ISA_HAS_COND_TRAPI): Likewise. (ISA_HAS_FP_MADDF_MSUBF): Likewise. (ISA_HAS_LWL_LWR): Likewise. (ISA_HAS_IEEE_754_LEGACY): Likewise. (ISA_HAS_IEEE_754_2008): Likewise. (ISA_HAS_PREFETCH_9BIT): Likewise. (MIPSR6_9BIT_OFFSET_P): New macro. (BASE_DRIVER_SELF_SPECS): Use MIPS_ISA_DRIVER_SELF_SPECS. (DRIVER_SELF_SPECS): Use MIPS_ISA_LEVEL_SPEC. (MULTILIB_ISA_DEFAULT): Handle mips32r6 and mips64r6. (MIPS_ISA_LEVEL_SPEC): Likewise. (MIPS_ISA_SYNCI_SPEC): Likewise. (ISA_HAS_64BIT_REGS): Likewise. (ISA_HAS_BRANCHLIKELY): Likewise. (ISA_HAS_MUL3): Likewise. (ISA_HAS_DMULT): Likewise. (ISA_HAS_DDIV): Likewise. (ISA_HAS_DIV): Likewise. (ISA_HAS_MULT): Likewise. (ISA_HAS_FP_CONDMOVE): Likewise. (ISA_HAS_8CC): Likewise. (ISA_HAS_FP4): Likewise. (ISA_HAS_PAIRED_SINGLE): Likewise. (ISA_HAS_MADD_MSUB): Likewise. (ISA_HAS_FP_RECIP_RSQRT): Likewise. * config/mips/mips.md (processor): Add w32 and w64. (FPCC): New mode iterator. (reg): Add CCF mode. (fpcmp): New mode attribute. (fcond): Add ordered, ltgt and ne codes. (fcond): Update code attribute. (sel): New code attribute. (selinv): Likewise. (ctrap<mode>4): Update condition. (*conditional_trap_reg<mode>): New define_insn. (*conditional_trap<mode>): Update condition. (mul<mode>3): Expand R6 multiply instructions. (<su>mulsi3_highpart): Likewise. (<su>muldi3_highpart): Likewise. (mul<mode>3_mul3_loongson): Rename... (mul<mode>3_mul3_hilo): To this. Add R6 mul instruction. (<u>mulsidi3_32bit_r6): New expander. (<u>mulsidi3_32bit): Restrict to pre-r6 multiplies. (<u>mulsidi3_32bit_r4000): Likewise. (<u>mulsidi3_64bit): Likewise. (<su>mulsi3_highpart_internal): Likewise. (mulsidi3_64bit_r6dmul): New instruction. (<su>mulsi3_highpart_r6): Likewise. (<su>muldi3_highpart_r6): Likewise. (fma<mode>4): Likewise. (movccf): Likewise. (*sel<code><GPR:mode>_using_<GPR2:mode>): Likewise. (*sel<mode>): Likewise. (<u>div<mode>3): Moved from loongson.md. Add R6 instructions. (<u>mod<mode>3): Likewise. (extvmisalign<mode>): Require ISA_HAS_LWL_LWR. (extzvmisalign<mode>): Likewise. (insvmisalign<mode>): Likewise. (mips_cache): Account for R6 displacement field sizes. (*branch_fp): Rename... (*branch_fp_<mode>): To this. Add CCFmode support. (*branch_fp_inverted): Rename... (*branch_fp_inverted_<mode>): To this. Add CCFmode support. (s<code>_<mode>): Rename... (s<code>_<SCALARF:mode>_using_<FPCC:mode>): To this. Add FCCmode condition support. (s<code>_<mode> swapped): Rename... (s<code>_<SCALARF:mode>_using_<FPCC:mode> swapped): To this. Add CCFmode condition support. (mov<mode>cc GPR): Expand R6 selects. (mov<mode>cc FPR): Expand R6 selects. (*tls_get_tp_<mode>_split): Do not .set push for >= mips32r2. * config/mips/netbsd.h (TARGET_CPU_CPP_BUILTINS): Update similarly to mips.h. (ASM_SPEC): Add mips32r6, mips64r6. * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Update for mips32r6/mips64r6. * doc/invoke.texi: Document -mips32r6,-mips64r6. * doc/md.texi: Update comment for ZD constraint. 2014-12-19 Segher Boessenkool <segher@kernel.crashing.org> PR target/64268 * combine.c (try_combine): Immediately return if any of I0,I1,I2 are the same insn. 2014-12-19 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.c (<LOGICAL:optab>_one_cmpl<mode>3): Reparameterize to... (<NLOGICAL:optab>_one_cmpl<mode>3): with extra SIMD-register variant. (xor_one_cmpl<mode>3): New define_insn_and_split. * config/aarch64/iterators.md (NLOGICAL): New define_code_iterator. 2014-12-19 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.md (<optab><mode>3, one_cmpl<mode>2): Add SIMD-register variant. * config/aarch64/iterators.md (Vbtype): Add value for SI. 2014-12-19 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize SIMD reg variant. 2014-12-19 Martin Liska <mliska@suse.cz> PR ipa/63569 * ipa-icf-gimple.c (func_checker::compare_operand): Add missing comparison for volatile flag. 2014-12-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * doc/invoke.texi (ARM options): Remove mention of Advanced RISC Machines. 2014-12-19 Xingxing Pan <xxingpan@marvell.com> * config/arm/cortex-a9-neon.md (cortex_a9_neon_vmov): Change reservation to cortex_a9_neon_dp. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/sh.c (prepare_move_operands): Split HI/QImode load/store to two move insns via r0. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/predicates.md (arith_or_int_operand): New predicate. * config/sh/sh.md (addsi3): Use arith_or_int_operand for operand 2. Return fail if operands[0] and operands[1] are overlap when operands[2] is integer constant. (*addsi3_compact): Make it define_insn_and_split which splits reg0 := reg1 + constant to reg0 = constant and reg0 := reg0 + reg1. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Declare. * config/sh/sh.c (sh_movsf_ie_ra_split_p): New function. * config/sh/sh.md (movsi_ie): Use "mr" constraint for the 8-th altarnative of operand 0. (movesf_ie): Use "X" constraint instead of "Bsc". (movsf_ie_ra): New insn_and_split. (movsf): Use movsfie_ra when lra_in_progress is true. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/predicates.md (general_movsrc_operand): Allow only valid plus address expressions. (general_movdst_operand): Likewise. (t_reg_operand): Allow (zero_extend (reg t)). * config/sh/sh-protos.h (sh_hard_regno_caller_save_mode): Declare. * config/sh/sh.c (sh_hard_regno_caller_save_mode): New function. (sh_secondary_reload): Return NO_REGS instead of FPUL_REGS in one case. * config/sh/sh.h (HARD_REGNO_CALLER_SAVE_MODE): Define. * config/sh/sh.md (untyped_call): Clobber function value registers before call. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/sh.c (sh_lra_p): New function. (TARGET_LRA_P): Define. (sh_legitimize_reload_address): Return false if sh_lra_p is true. * config/sh/sh.opt (mlra): New option. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * lra-constraints.c (process_address_1): Try if target can split displacement with targetm.legitimize_address_displacement. * target.def (legitimize_address_displacement): New hook. * targhooks.c (default_legitimize_address_displacement): New function. * targhooks.h (default_legitimize_address_displacement): Declare. * config/sh/sh.c (sh_legitimize_address_displacement): New function. (TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT): Define. * doc/tm.texi.in (TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT): New hook. * doc/tm.texi: Regenerate. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * lra-constraints.c (get_equiv): Don't return memory equivalence when targetm.cannot_substitute_mem_equiv_p is true. * target.def (cannot_substitute_mem_equiv_p): New hook. * config/sh/sh.c (sh_cannot_substitute_mem_equiv_p): New function. (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define. * doc/tm.texi.in (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): New hook. * doc/tm.texi: Regenerate. 2014-12-19 Kaz Kojima <kkojima@gcc.gnu.org> * lra-constraints.c (process_address_1): Swap base_term and index_term if INDEX_REG_CLASS is assigned to base_term already when INDEX_REG_CLASS is a single register class. 2014-12-18 Vladimir Makarov <vmakarov@redhat.com> * lra-constraints.c (lra-constraints.c): Exchange places of sclass and dclass. 2014-12-18 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/64291 * lra-remat.c (bad_for_rematerialization_p): Add UNPSEC_VLOATILE. (create_cands): Process only output reload insn with potential cands. 2014-12-18 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (ix86_expand_call): Skip setting up RAX register for -mskip-rax-setup when there are no parameters passed in vector registers. * config/i386/i386.opt (mskip-rax-setup): New option. * doc/invoke.texi: Document -mskip-rax-setup. 2014-12-18 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-simd.md (aarch64_lshr_simddi): Handle shift by 64 by moving const0_rtx. (aarch64_ushr_simddi): Delete. * config/aarch64/aarch64.md (enum unspec): Delete UNSPEC_USHR64. 2014-12-18 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.md (enum "unspec"): Remove UNSPEC_SSHR64. * config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): Change shift amount to 63 if was 64. (aarch64_sshr_simddi): Remove. 2014-12-18 Wilco Dijkstra <wilco.dijkstra@arm.com> * gcc/config/aarch64/aarch64.c (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): Define. (aarch64_min_divisions_for_recip_mul): New function. 2014-12-18 Wilco Dijkstra <wilco.dijkstra@arm.com> * config/aarch64/aarch64-protos.h (tune-params): Add code alignment tuning parameters. * gcc/config/aarch64/aarch64.c (generic_tunings): Add code alignment tuning parameters. (cortexa53_tunings): Likewise. (cortexa57_tunings): Likewise. (thunderx_tunings): Likewise. (aarch64_override_options): Use new alignment tunings. 2014-12-18 Martin Liska <mliska@suse.cz> PR tree-optimization/64330 * ipa-icf.c (sem_variable::parse): Add checking for externally visible symbols and do not introduce an alias for an external declaration. 2014-12-18 Jan Hubicka <hubicka@ucw.cz> PR bootstrap/63573 * tree-inline.c (remap_gimple_stmt): Handle gimple_call_from_thunk_p predicate. 2014-12-18 Martin Liska <mliska@suse.cz> PR ipa/64146 * ipa-icf.c (sem_function::merge): Check for decl_binds_to_current_def_p is newly added to merge operation. 2014-12-18 Bin Cheng <bin.cheng@arm.com> PR tree-optimization/62178 * tree-ssa-loop-ivopts.c (cheaper_cost_with_cand): New function. (iv_ca_replace): New function. (try_improve_iv_set): New parameter try_replace_p. Break local optimal fixed-point by calling iv_ca_replace. (find_optimal_iv_set_1): Pass new argument to try_improve_iv_set. 2014-12-17 Dehao Chen <dehao@google.com> * auto-profile.c (afdo_annotate_cfg): Invoke update_ssa in the right place. (auto_profile): Recompute inline summary after processing cgraph node. 2014-12-17 Oleg Endo <olegendo@gcc.gnu.org> PR target/51244 * config/sh/sh_treg_combine.cc (is_conditional_insn): New function. (cbranch_trace): Add member rtx* condition_rtx_in_insn, initialize it accordingly in constructor. (cbranch_trace::branch_condition_rtx_ref): New function. (cbranch_trace::branch_condition_rtx): Use branch_condition_rtx_ref. (sh_treg_combine::try_invert_branch_condition): Invert condition rtx in insn using reversed_comparison_code and validate_change instead of invert_jump_1. (sh_treg_combine::execute): Look for conditional insns in basic blocks in addition to conditional branches. * config/sh/sh.md (*movsicc_div0s): Remove combine patterns. 2014-12-17 Oleg Endo <olegendo@gcc.gnu.org> PR target/51244 * config/sh/sh_treg_combine.cc (sh_treg_combine::try_optimize_cbranch): Combine ccreg inversion and cbranch into inverted cbranch. 2014-12-17 Vladimir Makarov <vmakarov@redhat.com> * lra-constraints.c (process_alt_operands): Remove non allocatable hard regs when considering ira_prohibited_class_mode_regs. 2014-12-17 Jan Hubicka <hubicka@ucw.cz> * sreal.h (sreal::normalize): Implement inline. (sreal::normalize_up): New function. (sreal::normalize_down): New function. * sreal.c (sreal::normalize): Remove. 2014-12-17 James Greenhalgh <james.greenhalgh@arm.com> * config/aarch64/aarch64.md (generic_sched): Delete it. 2014-12-17 Jan-Benedict Glaw <jbglaw@lug-owl.de> * config/msp430/msp430.c (msp430_asm_output_addr_const_extra): Fix unused argument warning. 2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com> * dwarf2out.h (struct array_descr_info): Remove the base_decl field. * dwarf2out.c (enum dw_scalar_form): New. (struct loc_descr_context): New. (add_scalar_info): New. (add_bound_info): Add a context parameter. Use add_scalar_info. (loc_list_from_tree): Add a context parameter. Handle PLACEHOLDER_EXPR nodes for type-related expressions. Likewise for base declarations. (loc_descriptor_from_tree): Add a context parameter. (subrange_type_die): Update calls to add_bound_info. (tls_mem_loc_descriptor): Likewise. (loc_list_for_address_of_addr_expr_of_indirect_ref): Add a context parameter. Update calls to loc_list_from_tree. (add_subscript_info): Update calls to add_bound_info. (gen_array_type_die): Update calls to loc_list_from_tree and to add_bound_info. (descr_info_loc): Remove. (add_descr_info_field): Remove. (gen_descr_array_type_die): Switch add_descr_info_field calls into add_scalar_info/add_bound_info ones. (gen_subprogram_die): Update calls to loc_list_from_tree. (gen_variable_die): Likewise. 2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com> * dwarf2out.c (print_loc_descr): New. (print_dw_val): New. (print_attribute): New. (print_loc_descr): New. (print_die): Use print_dw_val. (debug_dwarf_loc_descr): New. * dwarf2out.h (debug_dwarf_loc_descr): New declaration. 2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com> * dwarf2out.c (gen_type_die_with_usage): Enable the array lang-hook even when (dwarf_version < 3 && dwarf_strict). (gen_descr_array_die): Do not output DW_AT_data_locationn, DW_AT_associated, DW_AT_allocated and DW_AT_byte_stride DWARF attributes when (dwarf_version < 3 && dwarf_strict). 2014-12-17 Pierre-Marie de Rodat <derodat@adacore.com> * dwarf2out.h (enum array_descr_ordering): New. (array_descr_dimen): Add a bounds_type structure field. (struct array_descr_info): Add a field to hold index type information and another one to hold ordering information. * dwarf2out.c (gen_type_die_with_usage): Get the main variant before invoking the array descriptor language hook. Initialize the array_descr_info structure before calling the lang-hook. (gen_descr_array_type_die): Use gen_type_die if not processing the main type variant. Replace Fortran-specific code with generic one using this new field. Add a GNAT descriptive type, if any. Output type information for the array bound subrange, if any. 2014-12-17 H.J. Lu <hongjiu.lu@intel.com> Jakub Jelinek <jakub@redhat.com> Uros Bizjak <ubizjak@gmail.com> PR target/61296 * config/i386/i386-opts.h (ix86_align_data): New enum. * config/i386/i386.c (ix86_data_alignment): Return the ABI alignment value for -malign-data=abi, the cachine line size for -malign-data=cacheline and the older GCC compatible alignment value for for -malign-data=compat. * config/i386/i386.opt (malign-data=): New. * doc/invoke.texi: Document -malign-data=. 2014-12-17 Marek Polacek <polacek@redhat.com> PR middle-end/63568 * match.pd: Add (x & ~m) | (y & m) -> ((x ^ y) & m) ^ x pattern. 2014-12-17 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/64322 * tree-vrp.c (extract_range_from_binary_expr_1): Attempt to derive range for RSHIFT_EXPR even if vr0 range is not VR_RANGE or is symbolic. 2014-12-17 Tobias Burnus <burnus@net-b.de> PR fortran/54687 * flag-types.h (gfc_init_local_real, gfc_fcoarray, gfc_convert): New enums; moved from fortran/. 2014-12-16 Jan Hubicka <hubicka@ucw.cz> * fibonacci_heap.h (min): Return m_data instead of non-existing data. 2014-12-16 Jan Hubicka <hubicka@ucw.cz> * ipa-inline-analysis.c (will_be_nonconstant_predicate): Consider return values of const calls as constants. (estimate_function_body_sizes): Expect calls to have false predicates. 2014-12-16 Jan Hubicka <hubicka@ucw.cz> * hwint.c (abs_hwi, absu_hwi): Move to ... * hwint.h (abs_hwi, absu_hwi): ... here; make inline. 2014-12-16 Marek Polacek <polacek@redhat.com> PR middle-end/64309 * match.pd: Add ((1 << A) & 1) != 0 -> A == 0 and ((1 << A) & 1) == 0 -> A != 0. 2014-12-16 Richard Biener <rguenther@suse.de> * genmatch.c (parser::parser): Initialize capture_ids. (parser::parse_pattern): Properly allocate capture_ids before using them. Set capture_ids to zero when its lifetime is supposed to finish. (parser::parse_simplify): Allocate capture_ids only if required. 2014-12-16 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> * sreal.c: Include math.h later. 2014-12-16 Felix Yang <felix.yang@huawei.com> PR rtl-optimization/64240 * ddg.c (mark_mem_use): Check *iter instead of *x. 2014-12-16 Martin Liska <mliska@suse.cz> PR ipa/64278 * sreal.c (sreal::operator*): Replace std::abs with absu_hwi. 2014-12-16 Igor Zamyatin <igor.zamyatin@intel.com> * config/i386/i386.c (ix86_address_cost): Add explicit restriction to RTL level for the check for PIC register. 2014-12-16 Uros Bizjak <ubizjak@gmail.com> * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Move from here ... * config/i386/gnu-user64.h (TARGET_CAN_SPLIT_STACK): ... and here ... * config/i386/gnu-user-common.h (TARGET_CAN_SPLIT_STACK): ... to here. 2014-12-16 Chung-Ju Wu <jasonwucj@gmail.com> PR target/64217 * config/nds32/nds32.md (casesi_internal): Add '=r' for clobber register constraint. 2014-12-15 DJ Delorie <dj@redhat.com> * config/rl78/rl78.h: Remove SHORT_IMMEDIATES_SIGN_EXTEND. 2014-12-15 Jan Hubicka <hubicka@ucw.cz> PR lto/64043 * tree-streamer.c (preload_common_nodes): Skip preloading of main_identifier_node, pid_type and optimization/option nodes. 2014-12-15 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/63397 * ira-int.h (ira_overall_cost, ira_reg_cost, ira_mem_cost): Use int64_t. (ira_load_cost, ira_store_cost, ira_shuffle_cost): Ditto. * ira.c (ira_overall_cost, ira_overall_cost_before): Ditto. (ira_reg_cost, ira_mem_cost): Ditto. (ira_load_cost, ira_store_cost, ira_shuffle_cost): Ditto. (calculate_allocation_cost, do_reload): Use the right format for int64_t values. 2014-12-15 Jan Hubicka <hubicka@ucw.cz> * sreal.h (to_double): New method. (shift): Do not ICE on 0. * sreal.c: Include math.h (sreal::to_double): New. 2014-12-15 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/64316 * simplify-rtx.c (simplify_relational_operation_1): For (eq/ne (and x y) x) and (eq/ne (and x y) y) optimizations use CONST0_RTX instead of const0_rtx. 2014-12-15 Vladimir Makarov <vmakarov@redhat.com> PR target/62642 * ira.c (rtx_moveable_p): Prevent UNSPEC_VOLATILE moves. 2014-12-15 Vladimir Makarov <vmakarov@redhat.com> * ira-int.h (ira_prohibited_class_mode_regs): Remove. (struct target_ira_int): Move x_ira_prohibited_class_mode_regs to ... * ira.h (struct target_ira): ... here. (ira_prohibited_class_mode_regs): Define. * lra-constraints.c (process_alt_operands): Add one more condition to refuse alternative when reload pseudo of given class can not hold value of given mode. 2014-12-15 Richard Biener <rguenther@suse.de> PR tree-optimization/64312 * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Use vuse_ssa_val as callback to walk_non_aliased_vuses. (vn_reference_lookup): Likewise. 2014-12-15 Segher Boessenkool <segher@kernel.crashing.org> * gcc/config/rs6000/rs6000.md (*add>mode>3_imm_dot, *add<mode>3_imm_dot2): Change the constraint for the second alternative for operand 1 from "r" to "b". 2014-12-15 Richard Biener <rguenther@suse.de> * vec.h (vec::safe_grow): Guard against a grow to zero size. 2014-12-15 Richard Biener <rguenther@suse.de> PR middle-end/64295 * match.pd (X / CST -> X * (1 / CST): Use const_binop instead of fold_binary to compute the constant to multiply with. 2014-12-15 Richard Biener <rguenther@suse.de> PR middle-end/64246 * cfgloop.c (mark_loop_for_removal): Make safe against multiple invocations on the same loop. 2014-12-15 Marek Polacek <polacek@redhat.com> PR middle-end/64292 * fold-const.c (negate_expr_p): Add INTEGRAL_TYPE_P check. 2014-12-15 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64.h (CLZ_DEFINED_VALUE_AT_ZERO): Return 2. (CTZ_DEFINED_VALUE_AT_ZERO): Update to support more modes. 2014-12-15 Jakub Jelinek <jakub@redhat.com> PR sanitizer/64265 * tsan.c (instrument_func_entry): Insert __tsan_func_entry call on edge from entry block to single succ instead of after labels of single succ of entry block. 2014-12-15 Richard Biener <rguenther@suse.de> PR tree-optimization/64284 * tree-ssa-threadupdate.c (duplicate_seme_region): Mark the loop for removal if we copied the loop header. 2014-12-14 Jan Hubicka <hubicka@ucw.cz> PR ipa/61602 * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Return bool. * ipa.c (set_writeonly_bit): Track if reference was removed. (ipa_discover_readonly_nonaddressable_vars): Return true if any references was removed. * ipa-reference.c (propagate): Return TODO_remove_functions if reference was removed. 2014-12-14 Jan Hubicka <hubicka@ucw.cz> * ipa.c (process_references): Fix conditoinal on flag_optimize 2014-12-14 Jan Hubicka <hubicka@ucw.cz> PR ipa/61558 * symtab.c (symbol_table::insert_to_assembler_name_hash symbol_table::unlink_from_assembler_name_hash): Do not ICE when DECL_ASSEMBLER_NAME is NULL. 2014-12-14 Jan Hubicka <hubicka@ucw.cz> * cgraphunit.c (analyze_functions): Always analyze targets of aliases. 2014-12-14 Jan Hubicka <hubicka@ucw.cz> PR lto/64043 * tree.c (virtual_method_call_p): Return false when OTR type has no BINFO. 2014-12-14 Jan Hubicka <hubicka@ucw.cz> * cgraphunit.c (analyze_functions): Do not analyze extern inline funtions when not optimizing; skip comdat locals. 2014-12-14 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/64037 * combine.c (setup_incoming_promotions): Pass the argument before any promotions happen to promote_function_mode. 2014-12-12 Thomas Schwinge <thomas@codesourcery.com> * config/nvptx/nvptx.h (ASM_OUTPUT_ALIGN): Define as a C statment. 2014-12-12 Vladimir Makarov <vmakarov@redhat.com> PR target/64110 * lra-constraints.c (process_alt_operands): Refuse alternative when reload pseudo of given class can not hold value of given mode. 2014-12-12 Thomas Schwinge <thomas@codesourcery.com> * gimple-walk.c (walk_gimple_op) <GIMPLE_OMP_FOR>: Also check intermediate walk_tree results for for_incr. <GIMPLE_OMP_TARGET>: Walk child_fn and data_arg, too. <GIMPLE_OMP_CRITICAL, GIMPLE_OMP_ATOMIC_STORE>: Pretty printing. 2014-12-12 Richard Sandiford <richard.sandiford@arm.com> PR middle-end/64182 * wide-int.h (wi::div_round, wi::mod_round): Fix rounding of tied cases. * double-int.c (div_and_round_double): Fix handling of unsigned cases. Use same rounding approach as wide-int.h. 2014-12-12 Marek Polacek <polacek@redhat.com> PR middle-end/64274 * fold-const.c (fold_binary_loc): Add ANY_INTEGRAL_TYPE_P check. 2014-12-12 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/64269 * tree-ssa-forwprop.c (simplify_builtin_call): Bail out if len2 or diff are too large. 2014-12-12 Richard Biener <rguenther@suse.de> PR middle-end/64280 * tree-cfg.c (replace_uses_by): Guard assert properly. 2014-12-12 Anthony Green <green@moxielogic.com> * config/moxie/moxie.md: Add use of zex instruction. 2014-12-12 Marc Glisse <marc.glisse@inria.fr> * real.h (HONOR_SNANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS, HONOR_SIGN_DEPENDENT_ROUNDING): Replace macros with 3 overloaded declarations. * real.c (HONOR_NANS): Fix indentation. (HONOR_SNANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS, HONOR_SIGN_DEPENDENT_ROUNDING): Define three overloads. * builtins.c (fold_builtin_cproj, fold_builtin_signbit, fold_builtin_fmin_fmax, fold_builtin_classify): Simplify argument of HONOR_*. * fold-const.c (operand_equal_p, fold_comparison, fold_binary_loc): Likewise. * gimple-fold.c (gimple_val_nonnegative_real_p): Likewise. * ifcvt.c (noce_try_move, noce_try_minmax, noce_try_abs): Likewise. * omp-low.c (omp_reduction_init): Likewise. * rtlanal.c (may_trap_p_1): Likewise. * simplify-rtx.c (simplify_const_relational_operation): Likewise. * tree-ssa-dom.c (record_equality, record_edge_info): Likewise. * tree-ssa-phiopt.c (value_replacement, abs_replacement): Likewise. * tree-ssa-reassoc.c (eliminate_using_constants): Likewise. * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise. 2014-12-12 Jan Hubicka <hubicka@ucw.cz> * ipa-inline.c (ipa_inline): Fix condition on when TODO_remove_unreachable_functions is needed. 2014-12-12 Jan Hubicka <hubicka@ucw.cz> * ipa-devirt.c (possible_polymorphic_call_targets): Return early if otr_type has no BINFO. 2014-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com> PR rtl-optimization/63917 * ifcvt.c (cc_in_cond): New function. (end_ifcvt_sequence): Make sure new generated insns do not clobber CC. (noce_process_if_block, check_cond_move_block): Check CC references. 2014-12-11 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64-protos.h (tune_params): Add align field. * config/aarch64/aarch64.c (generic_tunings): Specify align. (cortexa53_tunings): Likewise. (cortexa57_tunings): Likewise. (thunderx_tunings): Likewise. (aarch64_override_options): Set align_loops, align_jumps, align_functions based on what the tuning struct. 2014-12-11 Eric Botcazou <ebotcazou@adacore.com> * doc/md.texi (Insn Lengths): Fix description of (pc). 2014-12-11 Jan Hubicka <hubicka@ucw.cz> PR ipa/61324 * passes.c (execute_todo): Update call of remove_unreachable_nodes. * ipa-chkp.c (chkp_produce_thunks): Use TODO_remove_functions. * cgraphunit.c (symbol_table::process_new_functions): Add IPA_SSA_AFTER_INLINING. (ipa_passes): Update call of remove_unreachable_nodes. (symbol_table::compile): Remove call of remove_unreachable_nodes. * ipa-inline.c (inline_small_functions): Do not ICE with -flto-partition=none (ipa_inline): Update symtab->state; fix formatting update call of remove_unreachable_nodes. * passes.c (execute_todo): Update call of remove_unreachable_nodes. * cgraphclones.c (symbol_table::materialize_all_clones): Likewise. * cgraph.h (enum symtab_state): Add IPA_SSA_AFTER_INLINING. (remove_unreachable_nodes): Update. * ipa.c (process_references): Keep external references only when optimizing. (walk_polymorphic_call_targets): Keep possible polymorphic call target only when devirtualizing. (symbol_table::remove_unreachable_nodes): Remove BEFORE_INLINING_P parameter. (ipa_single_use): Update comment. * ipa-pure-const.c (cdtor_p): New function. (propagate_pure_const): Track if some cdtor was turned pure/const. (execute): Return TODO_remove_functions if needed. * ipa-comdats.c (ipa_comdats): Update comment. 2014-12-11 Aldy Hernandez <aldyh@redhat.com> * dwarf2out.c (gen_lexical_block_die): Remove unused `depth' parameter. (gen_inlined_subroutine_die): Same. (gen_block_die): Same. (decls_for_scope): Same. 2014-12-11 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64-cores.def: Change all AARCH64_FL_FPSIMD to AARCH64_FL_FOR_ARCH8. * config/aarch64/aarch64.c (all_cores): Use FLAGS from aarch64-cores.def file only. 2014-12-11 Manuel López-Ibáñez <manu@gcc.gnu.org> PR fortran/44054 * diagnostic.c (diagnostic_action_after_output): Make it extern. Take diagnostic_t argument instead of diagnostic_info. Count also DK_WERROR towards max_errors. (diagnostic_report_diagnostic): Update call according to the above. (error_recursion): Likewise. * diagnostic.h (diagnostic_action_after_output): Declare. * pretty-print.c (pp_formatted_text_data): Delete. (pp_append_r): Call output_buffer_append_r. (pp_formatted_text): Call output_buffer_formatted_text. (pp_last_position_in_text): Call output_buffer_last_position_in_text. * pretty-print.h (output_buffer_formatted_text): New. (output_buffer_append_r): New. (output_buffer_last_position_in_text): New. 2014-12-11 Kyrylo Tkachov kyrylo.tkachov@arm.com * config/aarch64/aarch64.c (aarch64_parse_extension): Update error message to say +no only when removing extension. 2014-12-11 Andrew MacLeod <amacleod@redhat.com> * config/tilepro/gen-mul-tables.cc: Add insn-codes.h to include list for generator file. Add comment indicating it is a generated file. * config/tilepro/mul-tables.c: Update generated file. * config/tilegx/mul-tables.c: Likewise. 2014-12-11 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (try_combine): Do not allow combining a PARALLEL I2 with a register move I3 if that I2 is an asm. 2014-12-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm_neon.h (vrndqn_f32): Rename to... (vrndnq_f32): ... this. (vrndqa_f32): Rename to... (vrndaq_f32): ... this. (vrndqp_f32): Rename to... (vrndpq_f32): ... this. (vrndqm_f32): Rename to... (vrndmq_f32): ... this. (vrndx_f32): New intrinsic. (vrndxq_f32): Likewise. 2014-12-11 Marek Polacek <polacek@redhat.com> * fold-const.c (fold_negate_expr): Add ANY_INTEGRAL_TYPE_P check. (extract_muldiv_1): Likewise. (maybe_canonicalize_comparison_1): Likewise. (fold_comparison): Likewise. (tree_binary_nonnegative_warnv_p): Likewise. (tree_binary_nonzero_warnv_p): Likewise. * gimple-ssa-strength-reduction.c (legal_cast_p_1): Likewise. * tree-scalar-evolution.c (simple_iv): Likewise. (scev_const_prop): Likewise. * tree-ssa-loop-niter.c (expand_simple_operations): Likewise. * tree-vect-generic.c (expand_vector_operation): Likewise. * tree.h (ANY_INTEGRAL_TYPE_CHECK): Define. (ANY_INTEGRAL_TYPE_P): Define. (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED, TYPE_OVERFLOW_TRAPS): Add ANY_INTEGRAL_TYPE_CHECK. (any_integral_type_check): New function. 2014-12-11 Tobias Burnus <burnus@net-b.de> Manuel López-Ibáñez <manu@gcc.gnu.org> * error.c (gfc_get_terminal_width): Renamed from get_terminal_width and use same-named common function. (gfc_error_init_1): Update call. 2014-12-10 Aldy Hernandez <aldyh@redhat.com> * gdbhooks.py (class DWDieRefPrinter): New class. (build_pretty_printer): Register dw_die_ref's. 2014-12-10 Ilya Tocar <ilya.tocar@intel.com> * config.gcc: Support "knl". * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knl". * config/i386/i386-c.c (ix86_target_macros_internal): Handle PROCESSOR_KNL. * config/i386/i386.c (m_KNL): Define. (processor_target_table): Add "knl". (PTA_KNL): Define. (ix86_issue_rate): Add PROCESSOR_KNL. (ix86_adjust_cost): Ditto. (ia32_multipass_dfa_lookahead): Ditto. (get_builtin_code_for_version): Handle "knl". (fold_builtin_cpu): Ditto. * config/i386/i386.h (TARGET_KNL): Define. (processor_type): Add PROCESSOR_KNL. * config/i386/i386.md (attr "cpu"): Add knl. * config/i386/x86-tune.def: Add m_KNL. 2014-12-10 Jan Hubicka <hubicka@ucw.cz> * doc/invoke.texi: (-devirtualize-at-ltrans): Document. * lto-cgraph.c (lto_output_varpool_node): Mark initializer as removed when it is not streamed to the given ltrans. (compute_ltrans_boundary): Make code adding all polymorphic call targets conditional with !flag_wpa || flag_ltrans_devirtualize. * common.opt (fdevirtualize-at-ltrans): New flag. 2014-12-10 Ilya Verbin <ilya.verbin@intel.com> * varpool.c (varpool_node::get_create): Force output of vars with "omp declare target" attribute. 2014-12-10 Marc Glisse <marc.glisse@inria.fr> * real.h (HONOR_NANS): Replace macro with 3 overloaded declarations. * real.c: Include rtl.h and options.h. (HONOR_NANS): Define three overloads. * builtins.c (fold_builtin_classify, fold_builtin_unordered_cmp): Simplify argument of HONOR_NANS. * fold-const.c (combine_comparisons, fold_truth_not_expr, fold_cond_expr_with_comparison, merge_truthop_with_opposite_arm, fold_comparison, fold_binary_loc): Likewise. * ifcvt.c (noce_try_move, noce_try_minmax): Likewise. * ipa-inline-analysis.c (add_clause, set_cond_stmt_execution_predicate): Likewise. * match.pd: Likewise. * rtlanal.c (may_trap_p_1): Likewise. * simplify-rtx.c (simplify_const_relational_operation): Likewise. * tree-if-conv.c (parse_predicate): Likewise. * tree-ssa-ccp.c (valid_lattice_transition): Likewise. * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise. * tree-ssa-phiopt.c (minmax_replacement, neg_replacement): Likewise. * tree-ssa-reassoc.c (eliminate_using_constants): Likewise. * tree-ssa-tail-merge.c (gimple_equal_p): Likewise. 2014-12-10 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/62021 * omp-low.c (simd_clone_adjust_return_type): Use vector of pointer_sized_int_node types instead vector of pointer types. (simd_clone_adjust_argument_types): Likewise. 2014-12-10 Jakub Jelinek <jakub@redhat.com> Evgeny Stupachenko <evstupac@gmail.com> PR target/64252 * config/i386/i386.c (expand_vec_perm_pblendv): If not testing_p, set dcopy.target to a new pseudo. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (*add<mode>3): Remove condition. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/40x.md (ppc403-compare): Remove "compare". config/rs6000/440.md (ppc440-compare): Remove "compare". config/rs6000/476.md (ppc476-compare): Remove "compare". config/rs6000/601.md (ppc601-compare): Remove "compare". config/rs6000/603.md (ppc603-compare): Remove "compare". config/rs6000/6xx.md (ppc604-compare): Remove "compare". config/rs6000/7450.md (ppc7450-compare): Remove "compare". config/rs6000/7xx.md (ppc750-compare): Remove "compare". config/rs6000/8540.md (ppc8540_su): Remove "compare". config/rs6000/cell.md (cell-fast-cmp, cell-cmp-microcoded): Remove "compare". config/rs6000/e300c2c3.md (ppce300c3_cmp): Remove "compare". config/rs6000/e500mc.md (e500mc_su): Remove "compare". config/rs6000/e500mc64.md (e500mc64_su2): Remove "compare". config/rs6000/e5500.md (e5500_sfx2): Remove "compare". config/rs6000/e6500.md (e6500_sfx2): Remove "compare". config/rs6000/mpc.md (mpccore-compare): Remove "compare". config/rs6000/power4.md (power4-compare): Remove "compare". config/rs6000/power5.md (power5-compare): Remove "compare". config/rs6000/power6.md (power6-compare): Remove "compare". config/rs6000/power7.md (power7-compare): Remove "compare". config/rs6000/power8.md (power8-compare): Remove "compare". Update comment. config/rs6000/rs6000.c (rs6000_adjust_cost) <TYPE_COMPARE>: Remove (three times). (is_cracked_insn): Remove TYPE_COMPARE case. (insn_must_be_first_in_group) <TYPE_COMPARE>: Remove (twice). config/rs6000/rs6000.md (type): Remove "compare". (cell_micro): Remove "compare". config/rs6000/rs64.md (rs64a-compare): Remove "compare". 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (*anddi3_2rld_dot, *anddi3_rld_dot2): Change type from "compare" to "two". 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/predicates.md (unsigned_comparison_operator): New. (signed_comparison_operator): New. * config/rs6000/rs6000-protos.h (rs6000_emit_eqne): Declare. * config/rs6000/rs6000.c (rs6000_emit_eqne): New function. (rs6000_emit_sCOND): Remove ISEL test (move it to the expander). * config/rs6000/rs6000.md (add<mode>3 for SDI): Expand DImode add to addc,adde directly, if !TARGET_POWERPC64. (sub<mode>3 for SDI): Expand DImode sub to subfc,subfe directly, if !TARGET_POWERPC64. (neg<mode>2): Delete expander. (*neg<mode>2): Rename to "neg<mode>2". (addti3, subti3): Delete. (addti3, subti3): New expanders. (*adddi3_noppc64, *subdi3_noppc64, *negdi2_noppc64): Delete. (cstore<mode>4_unsigned): New expander. (cstore<mode>4): Allow GPR as output (not just SI). Rewrite. (cstore<mode>4 for FP): Remove superfluous quotes. (*eq<mode>, *eq<mode>_compare, *plus_eqsi and splitter, *compare_plus_eqsi and splitter, *plus_eqsi_compare and splitter, *neg_eq0<mode>, *neg_eq<mode>, *ne0_<mode>, plus_ne0_<mode>, compare_plus_ne0_<mode> and splitter, *compare_plus_ne0_<mode>_1 and splitter, *plus_ne0_<mode>_compare and splitter, *leu<mode>, *leu<mode>_compare and splitter, *plus_leu<mode>, *neg_leu<mode>, *and_neg_leu<mode>, *ltu<mode>, *ltu<mode>_compare, *plus_ltu<mode>, *plus_ltu<mode>_1, *plus_ltu<mode>compare, *neg_ltu<mode>, *geu<mode>, *geu<mode>_compare and splitter, *plus_geu<mode>, *neg_geu<mode>, *and_neg_geu<mode>, *plus_gt0<mode>, *gtu<mode>, *gtu<mode>_compare, *plus_gtu<mode>, *plus_gtu<mode>_1, *plus_gtu<mode>_compare, *neg_gtu<mode>, 12 anonymous insns, and 12 anonymous splitters): Delete. (eq<mode>3, ne<mode>3): New. (*neg_eq_<mode>, *neg_ne_<mode>): New. (*plus_eq_<mode>, *plus_ne_<mode>): New. (*minus_eq_<mode>, *minus_ne_<mode>): New. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/predicates.md (adde_operand): New. * config/rs6000/rs6000.md (add<mode>3_carry): New. (*add<mode>3_imm_carry_pos): New. (*add<mode>3_imm_carry_0): New. (*add<mode>3_imm_carry_m1): New. (*add<mode>3_imm_carry_neg): New. (add<mode>3_carry_in): New. (*add<mode>3_carry_in_internal): New. (add<mode>3_carry_in_0): New. (add<mode>3_carry_in_m1): New. (subf<mode>3_carry): New. (*subf<mode>3_imm_carry_0): New. (*subf<mode>3_imm_carry_m1): New. (subf<mode>3_carry_in): New. (*subf<mode>3_carry_in_internal): New. (subf<mode>3_carry_in_0): New. (subf<mode>3_carry_in_m1): New. (subf<mode>3_carry_in_xx): New. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/rs6000.md (*add<mode>3_internal1): Rename to "*add<mode>3". (*add<mode>3_internal2, *add<mode>3_internal3, and (their splitters): Delete. (*add<mode>3_dot, *add<mode>3_dot2): New. (*add<mode>3_imm_dot, *add<mode>3_imm_dot2): New. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/rs6000.md (*add<mode>3_internal1): Remove addic alternative. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/rs6000.md (*ctr<mode>_internal1, *ctr<mode>_internal2, *ctr<mode>_internal5, *ctr<mode>_internal6): Change "r" alternatives to "b". Increase length. (splitters for these): Split to cmp+addi instead of addic. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/darwin.md (macho_low_si): Remove "r" alternative. (macho_low_di): Ditto. * config/rs6000/rs6000.md (*largetoc_low): Ditto. (tocref<mode>): Ditto. (elf_low): Ditto. * config/rs6000/spe.md (mov_si<mode>_e500_subreg0_elf_low_be): Ditto. (mov_si<mode>_e500_subreg0_elf_low_le): Ditto. (mov_si<mode>_e500_subreg4_elf_low_be): Ditto. Reformat condition. (mov_si<mode>_e500_subreg4_elf_low_le): Ditto. 2014-12-10 Segher Boessenkool <segher@kernel.crashing.org> PR target/64180 * config/rs6000/rs6000.c (TARGET_MD_ASM_CLOBBERS): Define. (rs6000_md_asm_clobbers): New function. 2014-12-10 Felix Yang <felix.yang@huawei.com> * config/aarch64/aarch64-protos.h (aarch64_function_profiler): Remove declaration of removed function. 2014-12-10 Richard Biener <rguenther@suse.de> * tree-ssa-loop-im.c (move_computations_dom_walker::before_dom_children): Clear SSA_NAME_RANGE_INFO on moved stmts. 2014-12-10 Martin Liska <mliska@suse.cz> * sreal.c (sreal::shift_right): New implementation for int64_t as m_sig. (sreal::normalize): Likewise. (sreal::to_int): Likewise. (sreal::operator+): Likewise. (sreal::operator-): Likewise. (sreal::operator*): Likewise. (sreal::operator/): Likewise. (sreal::signedless_minus): Removed. (sreal::signedless_plus): Removed. (sreal::debug): const keyword is added. * sreal.h (sreal::operator<): New implementation for int64_t as m_sig. * ipa-inline.c (recursive_inlining): LONG_MIN is replaced with sreal::min (). 2014-12-10 Martin Liska <mliska@suse.cz> * gimple-iterator.h (gsi_start_bb_nondebug): New function. * ipa-icf-gimple.c (func_checker::compare_bb): Correct iteration replaces loop based on precomputed number of non-debug statements. 2014-12-08 Alexander Ivchenko <alexander.ivchenko@intel.com> * config/linux.c (linux_has_ifunc_p): Remove. * config/linux.h (TARGET_HAS_IFUNC_P): Use default version. 2014-12-10 Mantas Mikaitis <mantas.mikaitis@arm.com> * contrib/check_GNU_style.sh (col): Got rid of cut operation from the pipe chain and instead added cut inside awk command. 2014-12-10 Richard Biener <rguenther@suse.de> PR tree-optimization/64191 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark clobbers as necessary. (eliminate_unnecessary_stmts): Keep clobbers live if we can. 2014-12-10 Jakub Jelinek <jakub@redhat.com> PR target/63594 * config/i386/sse.md (vec_dupv4sf): Move after <mask_codefor><avx512>_vec_dup_gpr<mode><mask_name> pattern. (*vec_dupv4si, *vec_dupv2di): Likewise. (<mask_codefor><avx512>_vec_dup_mem<mode><mask_name>): Merge into ... (<mask_codefor><avx512>_vec_dup_gpr<mode><mask_name>): ... this pattern. (*vec_dup<mode> AVX2_VEC_DUP_MODE splitter): Disable for TARGET_AVX512VL (for QI/HI scalar modes only if TARGET_AVX512BW is set too). * config/i386/i386.c (enum ix86_builtins): Remove IX86_BUILTIN_PBROADCASTQ256_MEM_MASK, IX86_BUILTIN_PBROADCASTQ128_MEM_MASK and IX86_BUILTIN_PBROADCASTQ512_MEM. (bdesc_args): Use __builtin_ia32_pbroadcastq512_gpr_mask, __builtin_ia32_pbroadcastq256_gpr_mask and __builtin_ia32_pbroadcastq128_gpr_mask instead of *_mem_mask regardless of OPTION_MASK_ISA_64BIT. * config/i386/avx512fintrin.h (_mm512_set1_epi64, _mm512_mask_set1_epi64, _mm512_maskz_set1_epi64): Use *_gpr_mask builtins regardless of whether TARGET_64BIT is defined or not. * config/i386/avx512vlintrin.h (_mm256_mask_set1_epi64, _mm256_maskz_set1_epi64, _mm_mask_set1_epi64, _mm_maskz_set1_epi64): Likewise. * config/i386/sse.md (*mov<mode>_internal, *avx512f_gatherdi<mode>_2): Use <MODE_SIZE> instead of GET_MODE_SIZE (<MODE>mode). 2014-12-10 Oleg Endo <olegendo@gcc.gnu.org> PR target/53513 * doc/extend.texi (__builtin_sh_set_fpscr): Fix typo. 2014-12-10 Marek Polacek <polacek@redhat.com> PR tree-optimization/61686 * tree-ssa-reassoc.c (range_entry_cmp): Use q->high instead of p->high. 2014-12-10 Kito Cheng <kito@0xlab.org> * doc/libgcc.texi: Update text to match implementation in libgcc/libgcc2.c 2014-12-09 Trevor Saunders <tsaunders@mozilla.com> * plugin.c, plugin.def, ggc.h, ggc-common.c, gengtype.h, gengtype.c, gengtype-state.c, gengtype-parse.c, gentype-lex.l, gcc-plugin.h, doc/plugins.texi, doc/gty.texi: Remove support for if_marked and param_is. 2014-12-10 Oleg Endo <olegendo@gcc.gnu.org> PR target/53513 * doc/extend.texi (__builtin_sh_get_fpscr, __builtin_sh_get_fpscr): Document it. 2014-12-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR middle-end/64225 * tree-ssa-reassoc.c (acceptable_pow_call): Disable transformation for BUILT_IN_POW when flag_errno_math is present. 2014-12-09 Ilya Verbin <ilya.verbin@intel.com> * lto-wrapper.c (compile_offload_image): Start processing in_argv from 0 instead of 1. (run_gcc): Put offload objects into offload_argv, put LTO objects and possible preceding arguments into lto_argv. Pass offload_argv to compile_images_for_offload_targets instead of argv. Use lto_argv for LTO recompilation instead of argv. 2014-12-09 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> * doc/install.texi: Describe --with-aix-soname option. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-simd.md (aarch64_get_lanedi): Remove. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> PR target/63870 * config/aarch64/aarch64-simd-builtins.def (be_checked_get_lane): Delete. * config/aarch64/aarch64-simd.md (aarch64_be_checked_get_lane<mode\>): Delete. * config/aarch64/arm_neon.h (aarch64_vget_lane_any): Use GCC vector extensions, __aarch64_lane, __builtin_aarch64_im_lane_boundsi. (__aarch64_vget_lane_f32, __aarch64_vget_lane_f64, __aarch64_vget_lane_p8, __aarch64_vget_lane_p16, __aarch64_vget_lane_s8, __aarch64_vget_lane_s16, __aarch64_vget_lane_s32, __aarch64_vget_lane_s64, __aarch64_vget_lane_u8, __aarch64_vget_lane_u16, __aarch64_vget_lane_u32, __aarch64_vget_lane_u64, __aarch64_vgetq_lane_f32, __aarch64_vgetq_lane_f64, __aarch64_vgetq_lane_p8, __aarch64_vgetq_lane_p16, __aarch64_vgetq_lane_s8, __aarch64_vgetq_lane_s16, __aarch64_vgetq_lane_s32, __aarch64_vgetq_lane_s64, __aarch64_vgetq_lane_u8, __aarch64_vgetq_lane_u16, __aarch64_vgetq_lane_u32, __aarch64_vgetq_lane_u64): Delete. (__aarch64_vdup_lane_any): Use __aarch64_vget_lane_any, remove 'q2' argument. (__aarch64_vdup_lane_f32, __aarch64_vdup_lane_f64, __aarch64_vdup_lane_p8, __aarch64_vdup_lane_p16, __aarch64_vdup_lane_s8, __aarch64_vdup_lane_s16, __aarch64_vdup_lane_s32, __aarch64_vdup_lane_s64, __aarch64_vdup_lane_u8, __aarch64_vdup_lane_u16, __aarch64_vdup_lane_u32, __aarch64_vdup_lane_u64, __aarch64_vdup_laneq_f32, __aarch64_vdup_laneq_f64, __aarch64_vdup_laneq_p8, __aarch64_vdup_laneq_p16, __aarch64_vdup_laneq_s8, __aarch64_vdup_laneq_s16, __aarch64_vdup_laneq_s32, __aarch64_vdup_laneq_s64, __aarch64_vdup_laneq_u8, __aarch64_vdup_laneq_u16, __aarch64_vdup_laneq_u32, __aarch64_vdup_laneq_u64): Remove argument to __aarch64_vdup_lane_any. (vget_lane_f32, vget_lane_f64, vget_lane_p8, vget_lane_p16, vget_lane_s8, vget_lane_s16, vget_lane_s32, vget_lane_s64, vget_lane_u8, vget_lane_u16, vget_lane_u32, vget_lane_u64, vgetq_lane_f32, vgetq_lane_f64, vgetq_lane_p8, vgetq_lane_p16, vgetq_lane_s8, vgetq_lane_s16, vgetq_lane_s32, vgetq_lane_s64, vgetq_lane_u8, vgetq_lane_u16, vgetq_lane_u32, vgetq_lane_u64, vdupb_lane_p8, vdupb_lane_s8, vdupb_lane_u8, vduph_lane_p16, vduph_lane_s16, vduph_lane_u16, vdups_lane_f32, vdups_lane_s32, vdups_lane_u32, vdupb_laneq_p8, vdupb_laneq_s8, vdupb_laneq_u8, vduph_laneq_p16, vduph_laneq_s16, vduph_laneq_u16, vdups_laneq_f32, vdups_laneq_s32, vdups_laneq_u32, vdupd_laneq_f64, vdupd_laneq_s64, vdupd_laneq_u64, vfmas_lane_f32, vfma_laneq_f64, vfmad_laneq_f64, vfmas_laneq_f32, vfmss_lane_f32, vfms_laneq_f64, vfmsd_laneq_f64, vfmss_laneq_f32, vmla_lane_f32, vmla_lane_s16, vmla_lane_s32, vmla_lane_u16, vmla_lane_u32, vmla_laneq_f32, vmla_laneq_s16, vmla_laneq_s32, vmla_laneq_u16, vmla_laneq_u32, vmlaq_lane_f32, vmlaq_lane_s16, vmlaq_lane_s32, vmlaq_lane_u16, vmlaq_lane_u32, vmlaq_laneq_f32, vmlaq_laneq_s16, vmlaq_laneq_s32, vmlaq_laneq_u16, vmlaq_laneq_u32, vmls_lane_f32, vmls_lane_s16, vmls_lane_s32, vmls_lane_u16, vmls_lane_u32, vmls_laneq_f32, vmls_laneq_s16, vmls_laneq_s32, vmls_laneq_u16, vmls_laneq_u32, vmlsq_lane_f32, vmlsq_lane_s16, vmlsq_lane_s32, vmlsq_lane_u16, vmlsq_lane_u32, vmlsq_laneq_f32, vmlsq_laneq_s16, vmlsq_laneq_s32, vmlsq_laneq_u16, vmlsq_laneq_u32, vmul_lane_f32, vmul_lane_s16, vmul_lane_s32, vmul_lane_u16, vmul_lane_u32, vmuld_lane_f64, vmuld_laneq_f64, vmuls_lane_f32, vmuls_laneq_f32, vmul_laneq_f32, vmul_laneq_f64, vmul_laneq_s16, vmul_laneq_s32, vmul_laneq_u16, vmul_laneq_u32, vmulq_lane_f32, vmulq_lane_s16, vmulq_lane_s32, vmulq_lane_u16, vmulq_lane_u32, vmulq_laneq_f32, vmulq_laneq_f64, vmulq_laneq_s16, vmulq_laneq_s32, vmulq_laneq_u16, vmulq_laneq_u32) : Use __aarch64_vget_lane_any. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> PR target/63870 * gcc/config/aarch64-builtins.c (aarch64_simd_expand_args): Update error message for SIMD_ARG_CONSTANT. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> PR target/63870 * config/aarch64/aarch64-builtins.c (aarch64_types_binopv_qualifiers, TYPES_BINOPV): Delete. (enum aarch64_builtins): Add AARCH64_BUILTIN_SIMD_LANE_CHECK and AARCH64_SIMD_PATTERN_START. (aarch64_init_simd_builtins): Register __builtin_aarch64_im_lane_boundsi; use AARCH64_SIMD_PATTERN_START. (aarch64_simd_expand_builtin): Handle AARCH64_BUILTIN_LANE_CHECK; use AARCH64_SIMD_PATTERN_START. * config/aarch64/aarch64-simd.md (aarch64_im_lane_boundsi): Delete. * config/aarch64/aarch64-simd-builtins.def (im_lane_bound): Delete. * config/aarch64/arm_neon.h (__AARCH64_LANE_CHECK): New. (__aarch64_vget_lane_f64, __aarch64_vget_lane_s64, __aarch64_vget_lane_u64, __aarch64_vset_lane_any, vdupd_lane_f64, vdupd_lane_s64, vdupd_lane_u64, vext_f32, vext_f64, vext_p8, vext_p16, vext_s8, vext_s16, vext_s32, vext_s64, vext_u8, vext_u16, vext_u32, vext_u64, vextq_f32, vextq_f64, vextq_p8, vextq_p16, vextq_s8, vextq_s16, vextq_s32, vextq_s64, vextq_u8, vextq_u16, vextq_u32, vextq_u64, vmulq_lane_f64): Use __AARCH64_LANE_CHECK. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> PR target/63950 * config/aarch64/arm_neon.h (__AARCH64_NUM_LANES, __aarch64_lane *2): New. (aarch64_vset_lane_any): Redefine using previous, same for BE + LE. (vset_lane_f32, vset_lane_f64, vset_lane_p8, vset_lane_p16, vset_lane_s8, vset_lane_s16, vset_lane_s32, vset_lane_s64, vset_lane_u8, vset_lane_u16, vset_lane_u32, vset_lane_u64): Remove number of lanes. (vld1_lane_f32, vld1_lane_f64, vld1_lane_p8, vld1_lane_p16, vld1_lane_s8, vld1_lane_s16, vld1_lane_s32, vld1_lane_s64, vld1_lane_u8, vld1_lane_u16, vld1_lane_u32, vld1_lane_u64): Call __aarch64_vset_lane_any rather than vset_lane_xxx. 2014-12-09 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.md (absdi2): Remove scratch operand by earlyclobbering result operand. * config/aarch64/aarch64-builtins.c (aarch64_types_unop_qualifiers): Remove final qualifier_internal. (aarch64_fold_builtin): Stop folding abs builtins, except on floats. 2014-12-09 Wilco Dijkstra <wilco.dijkstra@arm.com> * gcc/config/aarch64/aarch64-protos.h (tune-params): Add reasociation tuning parameters. * gcc/config/aarch64/aarch64.c (TARGET_SCHED_REASSOCIATION_WIDTH): Define. (aarch64_reassociation_width): New function. (generic_tunings): Add reassociation tuning parameters. (cortexa53_tunings): Likewise. (cortexa57_tunings): Likewise. (thunderx_tunings): Likewise. 2014-12-09 Andrew Pinski <apinski@cavium.com> Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c (AARCH64_FUSE_CMP_BRANCH): New define. (thunderx_tunings): Add AARCH64_FUSE_CMP_BRANCH to fuseable_ops. (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_CMP_BRANCH. 2014-12-09 David Malcolm <dmalcolm@redhat.com> PR jit/64166 * dumpfile.c (gcc::dump_manager::get_dump_file_info_by_switch): New function. (gcc::dump_manager::get_dump_file_name): Split out bulk of implementation into a new overloaded variant taking a dump_file_info *. * dumpfile.h (gcc::dump_manager::get_dump_file_info_by_switch): New function. (gcc::dump_manager::get_dump_file_name): New overloaded variant of this function, taking a dump_file_info *. 2014-12-09 Uros Bizjak <ubizjak@gmail.com> PR bootstrap/64213 Revert: 2014-11-28 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/64037 * combine.c (setup_incoming_promotions): Pass the argument before any promotions happen to promote_function_mode. 2014-12-09 Richard Biener <rguenther@suse.de> PR tree-optimization/64193 * tree-ssa-alias.c (walk_non_aliased_vuses): Add valueize parameter and valueize the VUSE before looking up the def stmt. * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype. * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Pass vn_valueize to walk_non_aliased_vuses. (vn_reference_lookup): Likewise. * tree-ssa-dom.c (lookup_avail_expr): Pass NULL as valueize callback to walk_non_aliased_vuses. 2014-12-09 Richard Biener <rguenther@suse.de> PR middle-end/64199 * fold-const.c (fold_binary_loc): Use TREE_OVERFLOW_P. 2014-12-09 Richard Biener <rguenther@suse.de> PR tree-optimization/64191 * tree-vect-stmts.c (vect_stmt_relevant_p): Clobbers are not relevant (nor are their uses). 2014-12-09 Ilya Enkovich <ilya.enkovich@intel.com> * lto/lto-partition.c (privatize_symbol_name): Correctly privatize instrumentation clones. 2014-12-09 Ilya Enkovich <ilya.enkovich@intel.com> * lto-cgraph.c (input_cgraph_1): Don't break existing instrumentation clone references. * lto/lto-symtab.c (lto_cgraph_replace_node): Redirect instrumented_version references appropriately. 2014-12-09 Ilya Enkovich <ilya.enkovich@intel.com> PR bootstrap/63995 * tree-chkp.c (chkp_make_static_bounds): Share bounds var between nodes sharing assembler name. 2014-12-08 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/64204 * config/rs6000/rs6000.c (rs6000_emit_move): Do not split TFmode constant moves if -mupper-regs-df. * config/rs6000/rs6000.md (mov<mode>_64bit_dm): Optimize moving 0.0L to TFmode. (movtd_64bit_nodm): Likewise. (mov<mode>_32bit, FMOVE128 case): Likewise. 2014-12-08 Sandra Loosemore <sandra@codesourcery.com> * simplify-rtx.c (simplify_relational_operation_1): Handle simplification identities for BICS patterns. 2014-12-08 Trevor Saunders <tsaunders@mozilla.com> * config/nvptx/nvptx.c: Convert htabs to hash_table. 2014-12-08 David Edelsohn <dje.gcc@gmail.com> PR target/64226 * config/rs6000/rs6000.c (rs6000_secondary_reload_inner) [SYMBOL_REF]: Do not explicitly call create_TOC_reference for TARGET_TOC. Always use rs6000_emit_move. 2014-12-08 Mark Wielaard <mjw@redhat.com> PR debug/60782 * dwarf2out.c (modified_type_die): Handle TYPE_QUAL_ATOMIC. 2014-11-15 David Wohlferd <dw@LimeGreenSocks.com> PR target/61692 * cfgexpand.c (expand_asm_operands): Count all inline asm params. 2014-12-08 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * cgraph.h (xstrdup_for_dump): New function. * cgraph.c (cgraph_node::get_create): Replace use of xstrdup within fprintf with xstrdup_for_dump. (cgraph_edge::make_speculative): Likewise. (cgraph_edge::resolve_speculation): Likewise. (cgraph_edge::redirect_call_stmt_to_callee): Likewise. (cgraph_node::dump): Likewise. * cgraphclones.c (symbol_table::materialize_all_clones): Likewise. * ipa-cp.c (perhaps_add_new_callers): Likewise. * ipa-inline.c (report_inline_failed_reason): Likewise. (want_early_inline_function_p): Likewise. (edge_badness): Likewise. (update_edge_key): Likewise. (flatten_function): Likewise. (inline_always_inline_functions): Likewise. * ipa-profile.c (ipa_profile): Likewise. * ipa-prop.c (ipa_print_node_jump_functions): Likewise. (ipa_make_edge_direct_to_target): Likewise. (remove_described_reference): Likewise. (propagate_controlled_uses): Likewise. * ipa-utils.c (ipa_merge_profiles): Likewise. 2014-12-08 Bernd Edlinger <bernd.edlinger@hotmail.de> PR ipa/64049 * ipa-polymorphic-call.c (pa_polymorphic_call_context::ipa_polymorphic_call): Allow RESULT_DECL. 2014-12-08 Alex Velenko <Alex.Velenko@arm.com> * config/aarch64/aarch64.md (and_one_cmpl<mode>3_compare0_no_reuse): New define_insn. * (and_one_cmpl_<SHIFT:optab><mode>3_compare0_no_reuse): Likewise. 2014-12-08 Felix Yang <felix.yang@huawei.com> Haijian Zhang <z.zhanghaijian@huawei.com> Jiji Jiang <jiangjiji@huawei.com> Pengfei Sui <suipengfei@huawei.com> * config/aarch64/arm_neon.h (vrecpe_u32, vrecpeq_u32): Rewrite using builtin functions. (vfma_f32, vfmaq_f32, vfmaq_f64, vfma_n_f32, vfmaq_n_f32, vfmaq_n_f64, vfms_f32, vfmsq_f32, vfmsq_f64): Likewise. (vhsub_s8, vhsub_u8, vhsub_s16, vhsub_u16, vhsub_s32, vhsub_u32, vhsubq_s8, vhsubq_u8, vhsubq_s16, vhsubq_u16, vhsubq_s32, vhsubq_u32, vsubhn_s16, vsubhn_u16, vsubhn_s32, vsubhn_u32, vsubhn_s64, vsubhn_u66, vrsubhn_s16, vrsubhn_u16, vrsubhn_s32, vrsubhn_u32, vrsubhn_s64, vrsubhn_u64, vsubhn_high_s16, vsubhn_high_u16, vsubhn_high_s32, vsubhn_high_u32, vsubhn_high_s64, vsubhn_high_u64, vrsubhn_high_s16, vrsubhn_high_u16, vrsubhn_high_s32, vrsubhn_high_u32, vrsubhn_high_s64, vrsubhn_high_u64): Likewise. * config/aarch64/iterators.md (VDQ_SI): New mode iterator. * config/aarch64/aarch64.md (define_c_enum "unspec"): Add UNSPEC_URECPE. * config/aarch64/aarch64-simd.md (aarch64_urecpe<mode>): New pattern. * config/aarch64/aarch64-simd-builtins.def (shsub, uhsub, subhn, rsubhn, subhn2, rsubhn2, urecpe): New builtins. 2014-12-08 Ilya Tocar <ilya.tocar@intel.com> * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Handle v64qi. * config/i386/sse.md (VEC_PERM_AVX2): Add v64qi. 2014-12-08 Ilya Tocar <ilya.tocar@intel.com> * config/i386/i386.c (expand_vec_perm_broadcast_1): Handle v64qi. (expand_vec_perm_vpermi2_vpshub2): New. (ix86_expand_vec_perm_const_1): Use it. (ix86_vectorize_vec_perm_const_ok): Handle v64qi. * config/i386/sse.md (VEC_PERM_CONST): Add v64qi. 2014-12-08 Ilya Enkovich <ilya.enkovich@intel.com> * tree-chkp.c (chkp_build_returned_bound): Don't predict return bounds for strchr calls. 2014-12-08 Ilya Enkovich <ilya.enkovich@intel.com> * tree-chkp.c (chkp_call_returns_bounds_p): New. (chkp_build_returned_bound): Use zero bounds as returned by calls not returning bounds. 2014-12-08 Richard Biener <rguenther@suse.de> * builtins.c (fold_builtin_0): Remove unused ignore parameter. (fold_builtin_1): Likewise. (fold_builtin_3): Likewise. (fold_builtin_varargs): Likewise. (fold_builtin_2): Likewise. Do not fold stpcpy here. (fold_builtin_n): Adjust. (fold_builtin_stpcpy): Move to gimple-fold.c. (gimple_fold_builtin_stpcpy): Moved and gimplified from builtins.c. (gimple_fold_builtin): Fold stpcpy here. 2014-12-07 Trevor Saunders <tsaunders@mozilla.com> * symtab.c (symtab_node::verify): Check for section attribute before asserting something isn't in a section and a comdat group. 2014-12-07 Oleg Endo <olegendo@gcc.gnu.org> PR target/50751 * config/sh/sh.md (extendqihi2): Allow only for TARGET_SH1. 2014-12-07 Eric Botcazou <ebotcazou@adacore.com> * compare-elim.c: Fix head comment. (conforming_compare): Remove redundant test. (can_eliminate_compare): New function extracted from... (before_dom_children): ...here. Use it, replace direct uses of flag_non_call_exceptions and tidy up. (maybe_select_cc_mode): Tidy up. 2014-12-07 Felix Yang <felix.yang@huawei.com> Shanyao Chen <chenshanyao@huawei.com> * config/aarch64/aarch64-simd.md (clrsb<mode>2, popcount<mode>2): New patterns. * config/aarch64/aarch64-simd-builtins.def (clrsb, popcount): New builtins. * config/aarch64/arm_neon.h (vcls_s8, vcls_s16, vcls_s32, vclsq_s8, vclsq_s16, vclsq_s32, vcnt_p8, vcnt_s8, vcnt_u8, vcntq_p8, vcntq_s8, vcntq_u8): Rewrite using builtin functions. 2014-12-07 Jan Hubicka <hubicka@ucw.cz> * symtab.c (symtab_node::equal_address_to): New function. * cgraph.h (symtab_node::equal_address_to): Declare. * fold-const.c (fold_comparison, fold_binary_loc): Use it. * c-family/c-common.c: Refuse weaks for symbols that can not change visibility. 2014-12-07 Jonathan Wakely <jwakely@redhat.com> * doc/invoke.texi (Warning Options): Fix spelling and grammar. 2014-12-06 James Greenhalgh <james.greenhalgh@arm.com> Sebastian Pop <s.pop@samsung.com> Brian Rzycki <b.rzycki@samsung.com> PR tree-optimization/54742 * params.def (max-fsm-thread-path-insns, max-fsm-thread-length, max-fsm-thread-paths): New. * doc/invoke.texi (max-fsm-thread-path-insns, max-fsm-thread-length, max-fsm-thread-paths): Documented. * tree-cfg.c (split_edge_bb_loc): Export. * tree-cfg.h (split_edge_bb_loc): Declared extern. * tree-ssa-threadedge.c (simplify_control_stmt_condition): Restore the original value of cond when simplification fails. (fsm_find_thread_path): New. (fsm_find_control_statement_thread_paths): New. (thread_through_normal_block): Call find_control_statement_thread_paths. * tree-ssa-threadupdate.c (dump_jump_thread_path): Pretty print EDGE_FSM_THREAD. (verify_seme): New. (duplicate_seme_region): New. (thread_through_all_blocks): Generate code for EDGE_FSM_THREAD edges calling duplicate_seme_region. * tree-ssa-threadupdate.h (jump_thread_edge_type): Add EDGE_FSM_THREAD. 2014-12-06 H.J. Lu <hongjiu.lu@intel.com> PR target/64200 * config/i386/i386.c (decide_alg): Don't assert "alg != libcall" for TARGET_INLINE_STRINGOPS_DYNAMICALLY. 2014-12-05 Jakub Jelinek <jakub@redhat.com> PR sanitizer/64170 * sanopt.c (maybe_optimize_asan_check_ifn): If base_checks is non-NULL, call maybe_get_dominating_check on it even if g is non-NULL. 2014-12-05 Jeff Law <law@redhat.com> * doc/md.texi: Note problems using function calls to determine insn lengths and point readers to a potential workaround. 2014-12-05 Andreas Schwab <schwab@linux-m68k.org> * combine.c (is_parallel_of_n_reg_sets) (can_split_parallel_of_n_reg_sets): Only define if !HAVE_cc0. 2014-12-05 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64-simd-builtins.def (bswap): Use CF2 rather than CF10 so 2 is appended on the code. * config/aarch64/aarch64-simd.md (bswap<mode>): Rename to ... (bswap<mode>2): This so it matches for the optabs. 2014-12-05 Thomas Preud'homme <thomas.preudhomme@arm.com> * regrename.c (find_best_rename_reg): Rename to ... (find_rename_reg): This. Also add a parameter to skip tick check. * regrename.h: Likewise. * config/c6x/c6x.c (try_rename_operands): Adapt to above renaming. 2014-12-05 Martin Jambor <mjambor@suse.cz> PR ipa/64192 * ipa-prop.c (ipa_compute_jump_functions_for_edge): Convert alignment from bits to bytes after checking they are byte-aligned. 2014-12-05 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64-opts.h (AARCH64_CORE): Rename IDENT to SCHED. * config/aarch64/aarch64.h (AARCH64_CORE): Likewise. * config/aarch64/aarch64.c (AARCH64_CORE): Rename X to IDENT, IDENT to SCHED. 2014-12-05 Bin Cheng <bin.cheng@arm.com> * config/aarch64/aarch64.md (load_pair<mode>): Split to load_pairsi, load_pairdi, load_pairsf and load_pairdf. (load_pairsi, load_pairdi, load_pairsf, load_pairdf): Split from load_pair<mode>. New alternative to support int/fp registers in fp/int mode patterns. (store_pair<mode>:): Split to store_pairsi, store_pairdi, store_pairsf and store_pairdi. (store_pairsi, store_pairdi, store_pairsf, store_pairdf): Split from store_pair<mode>. New alternative to support int/fp registers in fp/int mode patterns. (*load_pair_extendsidi2_aarch64): New pattern. (*load_pair_zero_extendsidi2_aarch64): New pattern. (aarch64-ldpstp.md): Include. * config/aarch64/aarch64-ldpstp.md: New file. * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp): New. (extract_base_offset_in_addr): New. (aarch64_operands_ok_for_ldpstp): New. (aarch64_operands_adjust_ok_for_ldpstp): New. * config/aarch64/aarch64.c (enum sched_fusion_type): New enum. (TARGET_SCHED_FUSION_PRIORITY): New hook. (fusion_load_store): New functon. (extract_base_offset_in_addr): New function. (aarch64_gen_adjusted_ldpstp): New function. (aarch64_sched_fusion_priority): New function. (aarch64_operands_ok_for_ldpstp): New function. (aarch64_operands_adjust_ok_for_ldpstp): New function. 2014-12-05 Olivier Hainque <hainque@adacore.com> * defaults.h: (DWARF_REG_TO_UNWIND_COLUMN): Define default. * dwarf2cfi.c (init_one_dwarf_reg_size): Honor DWARF_REG_TO_UNWIND_COLUMN. 2014-12-05 Olivier Hainque <hainque@adacore.com> * dwarf2cfi.c (init_one_dwarf_reg_size): New helper, processing one particular reg for expand_builtin_init_dwarf_reg_sizes. (expand_builtin_init_dwarf_reg_sizes): Rework to use helper and account for dwarf register spans. 2014-12-05 Ilya Enkovich <ilya.enkovich@intel.com> PR target/64003 * config/i386/i386.md (*jcc_1_bnd): New. (*jcc_2_bnd): New. (jump_bnd): New. (*jcc_1): Remove bnd prefix. (*jcc_2): Likewise. (jump): Likewise. 2014-12-05 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64.c (aarch64_parse_cpu): Don't define selected_tune. (aarch64_override_options): Use selected_cpu's tuning. 2014-12-05 David Edelsohn <dje.gcc@gmail.com> * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_LOCAL): Append alignment to section name. Increase default alignment to word. 2014-12-05 Martin Jambor <mjambor@suse.cz> * cgraph.h (cgraph_node): New method expand_all_artificial_thunks. (cgraph_edge): New method redirect_callee_duplicating_thunks. * cgraphclones.c (duplicate_thunk_for_node): Donot expand newly created thunks. (redirect_edge_duplicating_thunks): Turned into edge method redirect_callee_duplicating_thunks. (cgraph_node::expand_all_artificial_thunks): New method. (create_clone): Call expand_all_artificial_thunks. * ipa-cp.c (perhaps_add_new_callers): Call redirect_callee_duplicating_thunks instead of redirect_callee. Also call expand_all_artificial_thunks. 2014-12-05 Ilya Enkovich <ilya.enkovich@intel.com> PR target/64056 * doc/sourcebuild.texi: Add mempcpy and stpcpy for Effective-Target Keywords. 2014-12-05 Manuel López-Ibáñez <manu@gcc.gnu.org> * diagnostic.h (diagnostic_expand_location): New inline function. * diagnostic.c (diagnostic_build_prefix): Use it. (diagnostic_show_locus): Likewise. 2014-12-04 H.J. Lu <hongjiu.lu@intel.com> PR bootstrap/64189 * configure.ac (HAVE_LD_PIE_COPYRELOC): Always define. * configure: Regenerated. 2014-12-04 Manuel López-Ibáñez <manu@gcc.gnu.org> * diagnostic.c (diagnostic_color_init): New. * diagnostic.h: Declare. * gcc.c (driver::global_initializations): Use it. (driver_handle_option): Handle -fdiagnostics-color_. * toplev.c: Do not include diagnostic-color.h. (process_options): Do not initialize color diagnostics here. * common.opt (fdiagnostics-color=): Add Driver. * opts-global.c (init_options_once): Initialize color here. * opts.c (common_handle_option): Use diagnostics_color_init. * diagnostic-color.h: Fix comment. 2014-12-04 David Malcolm <dmalcolm@redhat.com> * tree-pretty-print.c (INDENT): Rename "buffer" to "pp". (NIY): Likewise. (buffer): Rename this variable to... (tree_pp): ...this. (do_niy): Rename param from "buffer" to "pp". (dump_decl_name): Likewise. (dump_function_name): Likewise. (dump_function_declaration): Likewise. (dump_array_domain): Likewise. (dump_omp_clause): Likewise. (dump_omp_clauses): Likewise. (dump_location): Likewise. (dump_block_node): Likewise. (dump_generic_node): Likewise. (print_declaration): Likewise. (print_struct_decl): Likewise. (print_call_name): Likewise. (pretty_print_string): Likewise. (newline_and_indent): Likewise. (print_generic_decl): Update for renaming of "buffer" to "tree_pp". (print_generic_stmt): Likewise. (print_generic_stmt_indented): Likewise. (print_generic_expr): Likewise. (maybe_init_pretty_print): Likewise. 2014-12-04 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * tree-pretty-print.c: Eliminate include of <new>. (buffer): Convert this variable from a pretty_printer to a pretty_printer *. (initialized): Eliminate this variable in favor of the NULL-ness of "buffer". (print_generic_decl): Update for "buffer" becoming a pointer. (print_generic_stmt): Likewise. (print_generic_stmt_indented): Likewise. (print_generic_expr): Likewise. (maybe_init_pretty_print): Likewise, allocating "buffer" on the heap and using its non-NULL-ness to ensure idempotency. 2014-12-04 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * ipa-prop.c (ipa_register_cgraph_hooks): Guard insertion of ipa_add_new_function on function_insertion_hook_holder being non-NULL. * ipa-reference.c (ipa_reference_c_finalize): Remove node_removal_hook_holder and node_duplication_hook_holder if they've been added to symtab. * toplev.c (toplev::finalize): Call ipa_reference_c_finalize before cgraph_c_finalize so that the former can access "symtab". 2014-12-04 David Malcolm <dmalcolm@redhat.com> * doc/cfg.texi (GIMPLE statement iterators): Add note about gphi_iterator, and use one in the example. * doc/gimple.texi (Tuple specific accessors): Add missing GIMPLE_GOTO section and menu item. (gimple_build_asm, gimple gimple_build_assign_with_ops) gimple_call_mark_uninlinable, gimple_call_cannot_inline_p): Remove description of removed functions. (gimple_build_assign, gimple_build_bind, gimple_build_call, gimple_build_call_from_tree, gimple_build_call_vec, gimple_build_catch, gimple_build_cond, gimple_build_cond_from_tree, gimple_build_debug_bind, gimple_build_eh_filter, gimple_build_label, gimple_build_goto, gimple_build_omp_atomic_load, gimple_build_omp_atomic_store, gimple_build_omp_continue, gimple_build_omp_critical, gimple_build_omp_for, gimple_build_omp_parallel, gimple_build_omp_sections, gimple_build_omp_single, gimple_build_return, gimple_build_resx, gimple_build_switch, gimple_build_try): Update return type within description to reflect changes in gimple.h to using gimple subclasses. (gimple_build_asm_vec): Update return type, params and description. (gimple_asm_ninputs): Update param. (gimple_asm_noutputs, gimple_asm_nclobbers, gimple_asm_input_op gimple_asm_set_input_op, gimple_asm_output_op gimple_asm_set_output_op, gimple_asm_clobber_op, gimple_asm_set_clobber_op, gimple_asm_string, gimple_asm_volatile_p, gimple_asm_set_volatile, gimple_bind_vars, gimple_bind_set_vars, gimple_bind_append_vars, gimple_bind_body, gimple_bind_set_body, gimple_bind_add_stmt, gimple_bind_add_seq, gimple_bind_block, gimple_bind_set_block, gimple_call_set_fn, gimple_call_return_type, gimple_call_set_chain, gimple_call_set_tail, gimple_call_tail_p, gimple_call_copy_skip_args, gimple_catch_types, gimple_catch_types_ptr, gimple_catch_handler, gimple_catch_set_types, gimple_catch_set_handler, gimple_cond_set_code, gimple_cond_set_lhs, gimple_cond_set_rhs, gimple_cond_true_label, gimple_cond_set_true_label, gimple_cond_set_false_label, gimple_cond_false_label, gimple_cond_make_false, gimple_cond_make_true, gimple_eh_filter_set_types, gimple_eh_filter_set_failure, gimple_eh_must_not_throw_fndecl, gimple_eh_must_not_throw_set_fndecl, gimple_label_label, gimple_label_set_label, gimple_goto_set_dest, gimple_omp_atomic_load_set_lhs, gimple_omp_atomic_load_lhs, gimple_omp_atomic_load_set_rhs, gimple_omp_atomic_load_rhs, gimple_omp_atomic_store_set_val, gimple_omp_atomic_store_val, gimple_omp_continue_control_def, gimple_omp_continue_control_def_ptr, gimple_omp_continue_set_control_def, gimple_omp_continue_control_use, gimple_omp_continue_control_use_ptr, gimple_omp_continue_set_control_use, gimple_omp_critical_name, gimple_omp_critical_name_ptr, gimple_omp_critical_set_name, gimple_omp_parallel_clauses_ptr, gimple_omp_parallel_set_clauses, gimple_omp_parallel_child_fn, gimple_omp_parallel_child_fn_ptr, gimple_omp_parallel_set_child_fn, gimple_omp_parallel_data_arg, gimple_omp_parallel_data_arg_ptr, gimple_omp_parallel_set_data_arg, gimple_omp_single_set_clauses, gimple_phi_set_result, gimple_phi_set_arg, gimple_resx_region, gimple_resx_set_region, gimple_return_retval, gimple_return_set_retval, gimple_switch_num_labels, gimple_switch_set_num_labels, gimple_switch_index, gimple_switch_set_index, gimple_switch_label, gimple_switch_set_label, gimple_switch_default_label, gimple_switch_set_default_label, gimple_try_set_eval, gimple_try_set_cleanup): Update initial param within description to reflect changes in gimple.h to using gimple subclasses. (Adding a new GIMPLE statement code): Update to reflect gimple statement subclassing. 2014-12-04 Sriraman Tallam <tmsriram@google.com> H.J. Lu <hongjiu.lu@intel.com> * configure.ac (HAVE_LD_PIE_COPYRELOC): Defined to 1 if Linux/x86-64 linker supports PIE with copy reloc. * config.in: Regenerated. * configure: Likewise. * config/i386/i386.c (legitimate_pic_address_disp_p): Allow pc-relative address for undefined, non-weak, non-function symbol reference in 64-bit PIE if linker supports PIE with copy reloc. * doc/sourcebuild.texi: Document pie_copyreloc target. 2014-12-04 Marek Polacek <polacek@redhat.com> PR middle-end/56917 * fold-const.c (fold_unary_loc): Perform the negation in A's type when transforming ~ (A - 1) or ~ (A + -1) to -A. 2014-12-04 Tobias Burnus <burnus@net-b.de> * Makefile.in: Remove CLOOGLIB and CLOOGINC. 2014-12-04 Richard Biener <rguenther@suse.de> * doc/match-and-simplify.texi: Update for recent changes. 2014-12-04 Martin Jambor <mjambor@suse.cz> * ipa-prop.h (ipa_alignment): New type. (ipa_jump_func): New field alignment. (ipcp_transformation_summary) New type. (ipcp_grow_transformations_if_necessary): Declare. (ipa_node_agg_replacements): Removed. (ipcp_transformations): Declare. (ipcp_get_transformation_summary): New function. (ipa_get_agg_replacements_for_node): Use it. * ipa-cp.c (ipcp_param_lattices): New field alignment. (print_all_lattices): Also print alignment. (alignment_bottom_p): New function. (set_alignment_to_bottom): Likewise. (set_all_contains_variable): Also set alignment to bottom. (initialize_node_lattices): Likewise. (propagate_alignment_accross_jump_function): New function. (propagate_constants_accross_call): Call it. (ipcp_store_alignment_results): New function. (ipcp_driver): Call it. * ipa-prop.c (ipa_node_agg_replacements): Removed. (ipcp_transformations): New. (ipa_print_node_jump_functions_for_edge): Also print alignment. (ipa_set_jf_unknown): New function. (detect_type_change_from_memory_writes): Use ipa_set_jf_unknown. (ipa_compute_jump_functions_for_edge): Also calculate alignment. (update_jump_functions_after_inlining): Use ipa_set_jf_unknown. (ipcp_grow_transformations_if_necessary): New function. (ipa_set_node_agg_value_chain): Use ipcp_transformations. (ipa_node_removal_hook): Likewise. (ipa_node_duplication_hook): Also duplicate alignment results. (ipa_write_jump_function): Also stream alignments. (ipa_read_jump_function): Use ipa_set_jf_unknown, also stream alignments. (write_agg_replacement_chain): Renamed to write_ipcp_transformation_info, also stream alignments. (read_agg_replacement_chain): Renamed to read_ipcp_transformation_info, also stream alignments. (ipa_prop_write_all_agg_replacement): Renamed to ipcp_write_transformation_summaries. Stream always. (ipa_prop_read_all_agg_replacement): Renamed to ipcp_read_transformation_summaries. (ipcp_update_alignments): New function. (ipcp_transform_function): Call it, free also alignments. 2014-12-04 Richard Biener <rguenther@suse.de> * gimple-fold.c (replace_stmt_with_simplification): Properly fail when maybe_push_res_to_seq fails. 2014-12-04 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> * config/aarch64/aarch64.md (define_insn "prefetch"): New. 2014-12-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> * doc/install.texi: Remove mentions of cloog and ppl. * doc/invoke.texi: Likewise 2014-12-04 Jakub Jelinek <jakub@redhat.com> PR c++/56493 * convert.c (convert_to_real, convert_to_expr, convert_to_complex): Handle COMPOUND_EXPR. 2014-12-04 Richard Biener <rguenther@suse.de> * builtins.c (target_newline): Export. (target_percent_s_newline): Likewise. (fold_builtin_1): Do not fold printf functions here. (fold_builtin_2): Likewise. (fold_builtin_3): Likewise, do not fold strncat. (fold_builtin_strncat): Move to gimple-fold.c. (fold_builtin_printf): Likewise. * builtins.h (target_newline): Declare. (target_percent_s_newline): Likewise. * gimple-fold.c (gimple_fold_builtin_strncat): Move from builtins.c and gimplify. (gimple_fold_builtin_printf): Likewise. (gimple_fold_builtin): Fold strncat, printf, printf_unlocked, vprintf, printf_chk and vprintf_chk here. 2014-12-03 David Edelsohn <dje.gcc@gmail.com> * config/rs6000/rs6000.md (floatsidf2_internal): Use std::swap. (floatunssidf2_internal): Same. * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Same. (rs6000_emit_int_cmove): Same. (rs6000_sched_reorder): Same. (altivec_expand_vec_perm_const): Same. (rs6000_expand_vec_perm_const_1): Same. 2014-12-03 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> PR rtl-optimization/64010 * reload.c (push_reload): Before reusing a register contained in an operand as input reload register, ensure that it is not used in CALL_INSN_FUNCTION_USAGE. 2014-12-03 Ulrich Drepper <drepper@gmail.com> * Makefile.in: Use $(LN_S) instead of $(LN) -s and remove file first if it exists. 2014-12-03 Jakub Jelinek <jakub@redhat.com> * expmed.c (expand_mult): Use std::swap. PR c/59708 * expmed.c (expand_widening_mult): Return const0_rtx if coeff is 0. * doc/gimple.texi (gimple_build_assign_with_ops): Remove. (gimple_build_assign): Document the new overloads. 2014-12-03 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/64019 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Do not create LO_SUM address for constant addresses if the type can go in Altivec registers. 2014-12-03 Manuel López-Ibáñez <manu@gcc.gnu.org> PR fortran/44054 * pretty-print.c (output_buffer::output_buffer): Init flush_p to true. (pp_flush): Flush only if flush_p. (pp_really_flush): New. * pretty-print.h (struct output_buffer): Add flush_p. (pp_really_flush): Declare. 2014-12-03 Jakub Jelinek <jakub@redhat.com> * Makefile.in (ALL_HOST_BACKEND_OBJS): Add $(GENGTYPE_OBJS), gcc-ar.o, gcc-nm.o and gcc-ranlib.o. (GENGTYPE_OBJS): New. (gengtype-lex.o, gengtype-parse.o, gengtype-state.o, gengtype.o): Remove explicit dependencies. (CFLAGS-gengtype-lex.o, CFLAGS-gengtype-parse.o, CFLAGS-gengtype-state.o, CFLAGS-gengtype.o): Add -DHOST_GENERATOR_FILE instead of -DGENERATOR_FILE. (CFLAGS-errors.o): New. * gengtype.c: Instead of testing GENERATOR_FILE define, test HOST_GENERATOR_FILE. If defined, include config.h and define GENERATOR_FILE afterwards, otherwise include bconfig.h. * gengtype-parse.c: Likewise. * gengtype-state.c: Likewise. * gengtype-lex.l: Likewise. * errors.c: Likewise. 2014-12-03 Joern Rennecke <joern.rennecke@embecosm.com> * config/epiphany/epiphany.c (epiphany_override_options): If TARGET_SOFT_CMPSF is not enabled, set flag_finite_math_only. * config/epiphany/epiphany.md (mov<mode>cc): Don't use reverse_condition_maybe_unordered if flag_finite_math_only is set. 2014-12-03 Andrew Stubbs <ams@codesourcery.com> Revert: 2014-09-17 Andrew Stubbs <ams@codesourcery.com> * config/arm/arm.c (arm_option_override): Reject -mfpu=neon when architecture is older than ARMv7. 2014-12-03 Richard Biener <rguenther@suse.de> * builtins.c (target_percent_c): Export. (fold_builtin_fprintf): Move to gimple-fold.c. (fold_builtin_2): Do not fold fprintf functions. (fold_builtin_3): Likewise. (fold_builtin_4): Remove. (fold_builtin_n): Do not call fold_builtin_4. * builtins.h (target_percent_c): Declare. * gimple-fold.c (gimple_fold_builtin_fprintf): Move from builtins.c and gimplify. (gimple_fold_builtin): Fold fprintf, fprintf_unlocked, vfprintf, fprintf_chk and vfprintf_chk here. 2014-12-03 Martin Jambor <mjambor@suse.cz> PR ipa/64153 * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Check type sizes before view_converting. 2014-12-03 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/64151 PR rtl-optimization/64156 * ira-costs.c (scan_one_insn): Revert r218266. 2014-12-03 Richard Biener <rguenther@suse.de> * builtins.c (fold_builtin_fpclassify): Change to take array of arguments instead of CALL_EXPR tree. (MAX_ARGS_TO_FOLD_BUILTIN): Remove. (fold_builtin_n): Dispatch to fold_builtin_varargs. (fold_call_expr): Always use fold_builtin_n. (fold_builtin_call_array): Change to not build the unfolded call, always use fold_builtin_n. (fold_builtin_varargs): Change to take array of arguments instead of CALL_EXPR tree. (fold_call_stmt): Always use fold_builtin_n. * tree.c (build_call_expr_loc_array): Use fold_build_call_array_loc. * fold-const.c (fold_build_call_array_loc): Build the call if fold_builtin_call_array returned NULL_TREE. * gimple-fold.c (gimple_fold_stmt_to_constant_1): Do not build a CALL_EXPR and use fold_builtin_call_array instead of fold_call_expr. 2014-12-03 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>, orn<mode>3, bic<mode>3, add<mode>3, sub<mode>3, neg<mode>2, abs<mode>2, and<mode>3, ior<mode>3, xor<mode>3, one_cmpl<mode>2, aarch64_simd_lshr<mode> ,arch64_simd_ashr<mode>, aarch64_simd_imm_shl<mode>, aarch64_simd_reg_sshl<mode>, aarch64_simd_reg_shl<mode>_unsigned, aarch64_simd_reg_shr<mode>_signed, ashl<mode>3, lshr<mode>3, ashr<mode>3, vashl<mode>3, reduc_plus_scal_<mode>, aarch64_vcond_internal<mode><mode>, vcondu<mode><mode>, aarch64_cm<optab><mode>, aarch64_cmtst<mode>): Change VDQ to VDQ_I. (mul<mode>3): Change VDQM to VDQ_BHSI. (aarch64_simd_vec_set<mode>,vashr<mode>3, vlshr<mode>3, vec_set<mode>, aarch64_mla<mode>, aarch64_mls<mode>, <su><maxmin><mode>3, aarch64_<sur>h<addsub><mode>): Change VQ_S to VDQ_BHSI. (*aarch64_<su>mlal<mode>, *aarch64_<su>mlsl<mode>, aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>, aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>, aarch64_<sur>shll_n<mode>): Change VDW to VD_BHSI. (*aarch64_combinez<mode>, *aarch64_combinez_be<mode>): Change VDIC to VD_BHSI. * config/aarch64/aarch64-simd-builtins.def (saddl, uaddl, ssubl, usubl, saddw, uaddw, ssubw, usubw, shadd, uhadd, srhadd, urhadd, sshll_n, ushll_n): Change BUILTIN_VDW to BUILTIN_VD_BHSI. * config/aarch64/iterators.md (SDQ_I, VDQ, VQ_S, VSDQ_I_BHSI, VDQM, VDW, VDIC, VDQQHS): Remove. (Vwtype): Update comment (changing VDW to VD_BHSI). 2014-12-03 Richard Biener <rguenther@suse.de> PR middle-end/14541 * builtins.c (fold_builtin_logarithm): Implement simplifications ... * match.pd: ... here as patterns. 2014-12-03 Prachi Godbole <prachi.godbole@imgtec.com> * config/mips/p5600.md (define_automaton, define_cpu_unit): Replace p5600_agen_pipe and p5600_alu_pipe with p5600_agen_alq_pipe. (p5600_int_arith_1, p5600_int_arith_2, p5600_int_arith_4): Change reservation order. 2014-12-03 Tom de Vries <tom@codesourcery.com> PR rtl-optimization/63957 * doc/invoke.texi: Replace -fuse-caller-save with -fipa-ra. * final.c (rest_of_handle_final): Replace flag_use_caller_save with flag_ipa_ra. (get_call_reg_set_usage): Same. * lra-assigns.c (lra_assign): Same. * lra-constraints.c (need_for_call_save_p): Same. * lra-lives.c (process_bb_lives): Same. * lra.c (lra): Same. * calls.c (expand_call): Same. (emit_library_call_value_1): Same. * config/arm/arm.c (arm_option_override): Same. * opts.c (default_options_table): Replace OPT_fuse_caller_save with OPT_fipa_ra. * target.def (call_fusage_contains_non_callee_clobbers): Replace fuse-caller-save with fipa-ra. * doc/tm.texi (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS): Same. * common.opt: Same. 2014-12-03 Yury Gribov <y.gribov@samsung.com> * sanopt.c (maybe_get_single_definition): New function. (maybe_get_dominating_check): Ditto. (can_remove_asan_check): Ditto. (struct tree_map_traits): New struct. (struct sanopt_ctx): Use custom traits for asan_check_map. (maybe_optimize_ubsan_null_ifn): Move code to maybe_get_dominating_check. (maybe_optimize_asan_check_ifn): Move code and take non-SSA expressions into account when optimizing. (sanopt_optimize_walker): Optimize ASan checks even when recovering. 2014-12-03 Ilya Enkovich <ilya.enkovich@intel.com> * config/i386/constraints.md (Yr): New. * config/i386/i386.h (reg_class): Add NO_REX_SSE_REGS. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add alternatives which use only NO_REX_SSE_REGS. (vec_set<mode>_0): Likewise. (*vec_setv4sf_sse4_1): Likewise. (sse4_1_insertps): Likewise. (*sse4_1_extractps): Likewise. (*sse4_1_mulv2siv2di3<mask_name>): Likewise. (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3): Likewise. (*sse4_1_eqv2di3): Likewise. (sse4_2_gtv2di3): Likewise. (*vec_extractv4si): Likewise. (*vec_concatv2si_sse4_1): Likewise. (vec_concatv2di): Likewise. (<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise. (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise. (<sse4_1_avx2>_mpsadbw): Likewise. (<sse4_1_avx2>packusdw<mask_name>): Likewise. (<sse4_1_avx2>_pblendvb): Likewise. (sse4_1_pblendw): Likewise. (sse4_1_phminposuw): Likewise. (sse4_1_<code>v8qiv8hi2<mask_name>): Likewise. (sse4_1_<code>v4qiv4si2<mask_name>): Likewise. (sse4_1_<code>v4hiv4si2<mask_name>): Likewise. (sse4_1_<code>v2qiv2di2<mask_name>): Likewise. (sse4_1_<code>v2hiv2di2<mask_name>): Likewise. (sse4_1_<code>v2siv2di2<mask_name>): Likewise. (sse4_1_ptest): Likewise. (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Likewise. (sse4_1_round<ssescalarmodesuffix>): Likewise. * config/i386/subst.md (mask_prefix4): New. * config/i386/x86-tune.def (X86_TUNE_AVOID_4BYTE_PREFIXES): New. 2014-12-03 Segher Boessenkool <segher@kernel.crashing.org> PR rtl-optimization/52714 * combine.c (try_combine): Allow combining two insns into two new insns if at least one of those is a noop. 2014-12-03 Bin Cheng <bin.cheng@arm.com> * target.def (fusion_priority): Wrap code with @smallexample. * doc/tm.texi: Regenerated. 2014-12-03 Manuel López-Ibáñez <manu@gcc.gnu.org> * diagnostic.c (diagnostic_show_locus): Honor override_column when placing the caret. 2014-12-02 Dmitry Vyukov <dvyukov@google.com> * asan.c: (asan_finish_file): Use default priority for constructors in kernel mode. 2014-12-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> PR target/64115 * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove invalid UNSPEC_TOCREL sanity check under ENABLE_CHECKING. 2014-12-02 H.J. Lu <hongjiu.lu@intel.com> PR target/64108 * config/i386/i386.c (decide_alg): Stop only if there aren't any usable algorithms. 2014-12-02 Tom de Vries <tom@codesourcery.com> PR rtl-optimization/63718 * config/arm/arm.c (arm_option_override): Disable fuse-caller-save for Thumb1. 2014-12-02 Richard Biener <rguenther@suse.de> * match.pd: When combining divisions exclude the degenerate case involving INT_MIN from overflow handling. 2014-12-02 Wilco Dijkstra <wilco.dijkstra@arm.com> * ira-costs.c (scan_one_insn): Improve spill cost adjustment. 2014-12-02 Martin Jambor <mjambor@suse.cz> PR ipa/63814 * ipa-cp.c (same_node_or_its_all_contexts_clone_p): New function. (cgraph_edge_brings_value_p): New parameter dest, use same_node_or_its_all_contexts_clone_p and check availability. (cgraph_edge_brings_value_p): Likewise. (get_info_about_necessary_edges): New parameter dest, pass it to cgraph_edge_brings_value_p. Update caller. (gather_edges_for_value): Likewise. (perhaps_add_new_callers): Use cgraph_edge_brings_value_p to check both the destination and availability. 2014-12-02 Uros Bizjak <ubizjak@gmail.com> PR target/64113 * config/alpha/alpha.md (call_value_osf_tlsgd): Do not split insn using post-reload splitter. Use peephole2 pass instead. (call_value_osf_tlsldm): Ditto. (TLS_CALL): New int iterator. (tls): New int attribute. (call_value_osf_<tls>): Merge insn pattern from call_value_osf_tlsgd and call_value_tlsldm using TLS_CALL int iterator. 2014-12-02 Richard Biener <rguenther@suse.de> Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c: Include hash-set.h. (fatal_at): Add source_location overload. (parser::record_operlist): New method. (parser::push_simplify): Likewise. (parser::oper_lists_set): New member. (parser::oper_lists): Likewise. (parser::parse_operation): Record seen operator list references. (parser::parse_c_expr): Likewise. (parser::parse_simplify): Init oper_lists_set and oper_lists and use push_simplify. (parser::parser): Init oper_lists_set and oper_lists. 2014-12-02 Richard Biener <rguenther@suse.de> * match.pd: Restrict division combining to trunc_div and exact_div. 2014-12-02 Jakub Jelinek <jakub@redhat.com> * config/sparc/sparc.c (sparc_atomic_assign_expand_fenv): Remove NULL last argument from create_tmp_var calls. * config/mips/mips.c (mips_atomic_assign_expand_fenv): Likewise. * config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Likewise. * config/i386/i386.c (add_condition_to_bb, ix86_atomic_assign_expand_fenv): Likewise. * config/mep/mep.c (mep_gimplify_va_arg_expr): Likewise. * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise. * config/aarch64/aarch64-builtins.c (aarch64_atomic_assign_expand_fenv): Likewise. * config/stormy16/stormy16.c (xstormy16_gimplify_va_arg_expr): Likewise. * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Likewise. * config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Likewise. * config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise. * config/alpha/alpha.c (alpha_gimple_fold_builtin): Use gimple_build_assign instead of gimple_build_assign_with_ops and swap the order of first two arguments. * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin): Likewise. Remove last NULL_TREE argument. 2014-12-01 Segher Boessenkool <segher@kernel.crashing.org> PR rtl-optimization/59278 * combine (reg_dead_at_p): Consider REG_UNUSED notes. 2014-12-01 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (try_combine): Use is_parallel_of_n_reg_sets some more. 2014-12-01 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (is_parallel_of_n_reg_sets): New function. (can_split_parallel_of_n_reg_sets): New function. (try_combine): If I2 is a PARALLEL of two SETs, split it into two insns if possible. 2014-12-01 Tobias Burnus <burnus@net-b.de> Jack Howarth <howarth@bromo.med.uc.edu> PR middle-end/64017 * configure.ac (ac_has_isl_schedule_constraints_compute_schedule): New check. * doc/install.texi (ISL): Permit ISL 0.14. * graphite-optimize-isl.c (getScheduleForBandList, optimize_isl): Conditionally use ISL 0.13+ functions. * graphite-interchange.c: Make 'extern "C"' conditional. * graphite-isl-ast-to-gimple.c: Ditto. * graphite-poly.c: Ditto. * graphite-sese-to-poly.c: Ditto. * config.in: Regenerate. * gcc/configure: Regenerate. 2014-12-01 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (distribute_links): Handle multiple SETs. 2014-12-01 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (struct insn_link): New field `regno'. (alloc_insn_link): New parameter `regno'. Use it. (find_single_use): Check the new field. (can_combine_def_p, can_combine_use_p): New functions. Split off from ... (create_log_links): ... here. Correct data type of `regno'. Adjust call to alloc_insn_link. (adjust_for_new_dest): Find regno, use it in call to alloc_insn_link. (try_combine): Check reg_used_between_p when combining a PARALLEL as earlier insn. Adjust call to alloc_insn_link. (distribute_links): Check the new field. 2014-12-01 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * real.c (real_from_string): Add missing mpfr_clear. 2014-12-01 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * tree-ssa-math-opts.c (execute_cse_sincos_1): Fix a missing release of stmts by converting it to an auto_vec. 2014-12-01 Richard Biener <rguenther@suse.de> * Makefile.in (gimple-match.o-warn): Use -Wno-unused instead of -Wno-unused-variable and -Wno-unused-but-set-variable to restore bootstrap with old GCC. (generic-match.o-warn): Likewise. 2014-12-01 Richard Biener <rguenther@suse.de> * fold-const.c (const_binop): Handle POINTER_PLUS_EXPR. Properly handle FIXED_CST shifts by INTEGER_CST. (const_binop): Move COMPLEX_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_FIX_TRUNC_EXPR, VEC_WIDEN_MULT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_EVEN_EXPR and VEC_WIDEN_MULT_ODD_EXPR handling here from ... (fold_binary_loc): ... here. Call const_binop overload with result type. 2014-12-01 Marek Polacek <polacek@redhat.com> Jakub Jelinek <jakub@redhat.com> PR sanitizer/64121 * ubsan.c (instrument_object_size): Stop searching if the base occurs in abnormal phi. 2014-12-01 Marek Polacek <polacek@redhat.com> PR sanitizer/63956 * ubsan.c (is_ubsan_builtin_p): Check also built-in class. 2014-12-01 Jakub Jelinek <jakub@redhat.com> * gimple.h (gimple_build_assign_stat): Remove prototype. (gimple_build_assign): Remove define. Add overload prototypes with tree lhs and either a tree rhs, or enum tree_code and 1, 2 or 3 tree operands. * gimple.c (gimple_build_assign_stat): Renamed to... (gimple_build_assign): ... this. Add overloads with enum tree_code and 1, 2 or 3 tree operands. (gimple_build_assign_with_ops): Remove 1 and 2 operand overloads. Rename the 3 operand overload to ... (gimple_build_assign_1): ... this. Make it static inline. * tree-ssa-strlen.c (get_string_length): Use gimple_build_assign instead of gimple_build_assign_with_ops, swap the order of first two arguments and adjust formatting where necessary. * tree-vect-slp.c (vect_get_constant_vectors, vect_create_mask_and_perm): Likewise. * tree-ssa-forwprop.c (simplify_rotate): Likewise. * asan.c (build_shadow_mem_access, maybe_create_ssa_name, maybe_cast_to_ptrmode, asan_expand_check_ifn): Likewise. * tsan.c (instrument_builtin_call): Likewise. * tree-chkp.c (chkp_compute_bounds_for_assignment, chkp_generate_extern_var_bounds): Likewise. * tree-loop-distribution.c (generate_memset_builtin): Likewise. * tree-ssa-loop-im.c (rewrite_reciprocal): Likewise. * gimple-builder.c (build_assign, build_type_cast): Likewise. * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise. * value-prof.c (gimple_divmod_fixed_value, gimple_mod_pow2, gimple_mod_subtract): Likewise. * gimple-match-head.c (maybe_push_res_to_seq): Likewise. * tree-vect-patterns.c (vect_recog_dot_prod_pattern, vect_recog_sad_pattern, vect_handle_widen_op_by_const, vect_recog_widen_mult_pattern, vect_recog_pow_pattern, vect_recog_widen_sum_pattern, vect_operation_fits_smaller_type, vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern, vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast, adjust_bool_pattern, vect_recog_bool_pattern): Likewise. * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge, insert_initializers, introduce_cast_before_cand, replace_one_candidate): Likewise. * tree-ssa-math-opts.c (insert_reciprocals, powi_as_mults_1, powi_as_mults, build_and_insert_binop, build_and_insert_cast, pass_cse_sincos::execute, bswap_replace, convert_mult_to_fma): Likewise. * tree-tailcall.c (adjust_return_value_with_ops, update_accumulator_with_ops): Likewise. * tree-predcom.c (reassociate_to_the_same_stmt): Likewise. * tree-ssa-reassoc.c (build_and_add_sum, optimize_range_tests_to_bit_test, update_ops, maybe_optimize_range_tests, rewrite_expr_tree, linearize_expr, negate_value, repropagate_negates, attempt_builtin_powi, reassociate_bb): Likewise. * tree-vect-loop.c (vect_is_simple_reduction_1, get_initial_def_for_induction, vect_create_epilog_for_reduction): Likewise. * ipa-split.c (split_function): Likewise. * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement, abs_replacement, neg_replacement): Likewise. * tree-profile.c (gimple_gen_edge_profiler): Likewise. * tree-vrp.c (simplify_truth_ops_using_ranges, simplify_float_conversion_using_ranges, simplify_internal_call_using_ranges): Likewise. * gimple-fold.c (rewrite_to_defined_overflow, gimple_build): Likewise. * tree-vect-generic.c (expand_vector_divmod, optimize_vector_constructor): Likewise. * ubsan.c (ubsan_expand_null_ifn, ubsan_expand_objsize_ifn, instrument_bool_enum_load): Likewise. * tree-ssa-loop-manip.c (create_iv): Likewise. * omp-low.c (lower_rec_input_clauses, expand_omp_for_generic, expand_omp_for_static_nochunk, expand_omp_for_static_chunk, expand_cilk_for, simd_clone_adjust): Likewise. * trans-mem.c (expand_transaction): Likewise. * tree-vect-data-refs.c (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment, vect_permute_load_chain, vect_shift_permute_load_chain): Likewise. * tree-vect-stmts.c (vect_init_vector, vectorizable_mask_load_store, vectorizable_simd_clone_call, vect_gen_widened_results_half, vect_create_vectorized_demotion_stmts, vectorizable_conversion, vectorizable_shift, vectorizable_operation, vectorizable_store, permute_vec_elements, vectorizable_load): Likewise. 2014-12-01 Richard Biener <rguenther@suse.de> PR middle-end/64111 * tree.c (int_cst_hasher::hash): Use TYPE_UID instead of htab_hash_pointer to not break PCH. 2014-12-01 Richard Biener <rguenther@suse.de> PR tree-optimization/15346 * Makefile.in (gimple-match.o-warn): Remove -Wno-unused-parameter, add -Wno-unused-but-set-variable. * match.pd: Combine two successive divisions. 2014-12-01 Richard Biener <rguenther@suse.de> PR middle-end/64126 * match.pd: Allow conversions in ~A + 1 -> -A, add -A - 1 -> ~A and -1 - A -> ~A. * fold-const.c (fold_binary_loc): Remove transforms here. 2014-12-01 Maciej W. Rozycki <macro@codesourcery.com> * config/mips/mips.c (mips16_build_call_stub): Move the save of the return address in $18 ahead of passing arguments to FPRs. 2014-12-01 Ilya Enkovich <ilya.enkovich@intel.com> PR target/64055 * tree-chkp.c (chkp_find_bound_slots_1): Allow non constant values in array domain. 2014-12-01 Yuri Rumyantsev <ysrumyan@gmail.com> PR tree-optimization/63941 * tree-if-conv.c (add_to_predicate_list): Delete wrong assertion that DOM_BB has non-true predicate, conditionally set non-true predicate for BB. 2014-12-01 Martin Jambor <mjambor@suse.cz> PR ipa/63551 * ipa-inline-analysis.c (evaluate_conditions_for_known_args): Convert value of the argument to the type of the value in the condition. 2014-12-01 Oleg Endo <olegendo@gcc.gnu.org> PR target/63986 PR target/51244 * config/sh/sh.c (sh_unspec_insn_p, sh_insn_operands_modified_between_p): New functions. (sh_split_movrt_negc_to_movt_xor): Do not delete insn if its operands are modified or if it has side effects, may trap or is volatile. 2014-11-29 Jakub Jelinek <jakub@redhat.com> * gimple-expr.h (create_tmp_var_raw, create_tmp_var, create_tmp_reg): Add default NULL value to last argument. * tree-ssanames.h (make_ssa_name, copy_ssa_name): Likewise. * gimple-low.c (lower_builtin_posix_memalign): Remove NULL last argument from create_tmp_var_raw, create_tmp_var, create_tmp_reg, make_ssa_name and copy_ssa_name calls. * tree-ssa-strlen.c (get_string_length): Likewise. * tree-emutls.c (gen_emutls_addr, lower_emutls_1): Likewise. * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise. * tree-vect-slp.c (vect_get_constant_vectors): Likewise. * ipa-prop.c (ipa_modify_call_arguments): Likewise. * tree-ssa-forwprop.c (simplify_rotate): Likewise. * tree-ssa-ccp.c (fold_builtin_alloca_with_align): Likewise. * asan.c (build_shadow_mem_access, maybe_create_ssa_name, maybe_cast_to_ptrmode, asan_expand_check_ifn): Likewise. * tsan.c (instrument_expr, instrument_builtin_call, instrument_func_entry): Likewise. * varpool.c (add_new_static_var): Likewise. * tree-loop-distribution.c (generate_memset_builtin): Likewise. * gimplify.c (internal_get_tmp_var, gimplify_return_expr, gimplify_modify_expr_to_memcpy, gimplify_modify_expr_to_memset, gimplify_init_ctor_eval_range, gimplify_init_constructor, gimplify_omp_atomic, gimplify_expr): Likewise. * gimple-builder.c (build_assign, build_type_cast): Likewise. * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1, slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge, vect_loop_versioning): Likewise. * tree-if-conv.c (version_loop_for_if_conversion): Likewise. * gimple-match-head.c (maybe_push_res_to_seq): Likewise. * tree-vect-patterns.c (vect_handle_widen_op_by_const, vect_recog_widen_mult_pattern, vect_operation_fits_smaller_type, vect_recog_over_widening_pattern): Likewise. * tree-sra.c (build_ref_for_offset, create_access_replacement): Likewise. * tree-cfg.c (make_blocks): Likewise. * tree-eh.c (lower_eh_constructs_2, lower_resx, lower_eh_dispatch): Likewise. * tree-ssa-propagate.c (update_call_from_tree): Likewise. * tree-complex.c (get_component_ssa_name, expand_complex_div_wide): Likewise. * tree-ssa-math-opts.c (build_and_insert_cast): Likewise. * tree-tailcall.c (update_accumulator_with_ops): Likewise. * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm, execute_load_motion, reassociate_to_the_same_stmt): Likewise. * tree-ssa-reassoc.c (build_and_add_sum, optimize_range_tests_to_bit_test, update_ops, maybe_optimize_range_tests, rewrite_expr_tree, linearize_expr, negate_value, repropagate_negates): Likewise. * tree-vect-loop.c (vect_is_simple_reduction_1, vect_create_epilog_for_reduction): Likewise. * ipa-split.c (split_function): Likewise. * tree-inline.c (remap_ssa_name, setup_one_parameter, declare_return_variable, tree_function_versioning): Likewise. * tree-cfgcleanup.c (fixup_noreturn_call): Likewise. * cfgexpand.c (update_alias_info_with_stack_vars, expand_used_vars): Likewise. * tree-ssa-phiopt.c (conditional_replacement, abs_replacement, neg_replacement): Likewise. * gimplify-me.c (force_gimple_operand_1, gimple_regimplify_operands): Likewise. * tree-vrp.c (simplify_truth_ops_using_ranges, simplify_float_conversion_using_ranges, simplify_internal_call_using_ranges): Likewise. * tree-switch-conversion.c (emit_case_bit_tests, build_one_array, build_arrays, gen_def_assigns): Likewise. * gimple-fold.c (gimple_fold_builtin_memory_op, gimple_fold_builtin_strcat, gimple_fold_call, gimple_build): Likewise. * tree-vect-generic.c (expand_vector_divmod, optimize_vector_constructor): Likewise. * ubsan.c (ubsan_encode_value, ubsan_expand_null_ifn, ubsan_expand_objsize_ifn, instrument_si_overflow, instrument_bool_enum_load, instrument_nonnull_arg): Likewise. * tree-outof-ssa.c (insert_backedge_copies): Likewise. * tree-ssa-loop-manip.c (create_iv, tree_transform_and_unroll_loop): Likewise. * omp-low.c (scan_omp_parallel, lower_rec_simd_input_clauses, lower_rec_input_clauses, lower_lastprivate_clauses, expand_parallel_call, expand_omp_for_static_chunk, expand_omp_atomic_pipeline, expand_omp_target, maybe_add_implicit_barrier_cancel, lower_omp_single_simple, lower_omp_critical, lower_omp_for, task_copyfn_copy_decl, lower_depend_clauses, lower_omp_target, lower_omp_1, ipa_simd_modify_stmt_ops, simd_clone_adjust): Likewise. * tree-parloops.c (take_address_of, create_phi_for_local_result, create_call_for_reduction_1, separate_decls_in_region, create_parallel_loop): Likewise. * graphite-sese-to-poly.c (rewrite_cross_bb_scalar_dependence, handle_scalar_deps_crossing_scop_limits): Likewise. * trans-mem.c (lower_transaction, build_tm_load, build_tm_store, expand_assign_tm, expand_call_tm, expand_transaction, ipa_tm_insert_gettmclone_call): Likewise. * tree-vect-data-refs.c (bump_vector_ptr, vect_setup_realignment): Likewise. * tree-vect-stmts.c (vect_init_vector, vectorizable_mask_load_store, vectorizable_call, vectorizable_simd_clone_call, vectorizable_conversion, vectorizable_store, permute_vec_elements, vectorizable_load): Likewise. 2014-11-29 Tobias Burnus <burnus@net-b.de> Manuel López-Ibáñez <manu@gcc.gnu.org> * opt-functions.awk (lang_enabled_by): Support || for enabled-by. * optc-gen.awk: Ditto. * doc/options.texi (LangEnabledBy, EnabledBy): Document the || syntax. 2014-11-28 Mike Stump <mikestump@comcast.net> * bitmap.c (bitmap_ior): Zap current as it could be deleted. (bitmap_ior_and_compl): Likewise. 2014-11-28 Vladimir Makarov <vmakarov@redhat.com> PR target/64061 * lra.c (lra_substitute_pseudo): Ignore constant with int mode for subreg. 2014-11-28 Segher Boessenkool <segher@kernel.crashing.org> PR target/64093 * config/rs6000/rs6000.md (and<mode>3): Don't generate and<mode>3_imm unless rs6000_gen_cell_microcode is true. 2014-11-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/64087 * lra-lives.c (process_bb_lives): Add debug output. (lra_create_live_ranges): Don't remove dead insn on the second call of lra_create_live_ranges_1. 2014-11-28 H.J. Lu <hongjiu.lu@intel.com> PR rtl-optimization/64037 * combine.c (setup_incoming_promotions): Pass the argument before any promotions happen to promote_function_mode. 2014-11-28 Evgeny Stupachenko <evstupac@gmail.com> * tree-vect-data-refs.c (vect_transform_grouped_load): Limit shift permutations to loads group of size 3. 2014-11-28 Jiong Wang <jiong.wang@arm.com> * config/arm/arm.md (copysignsf3): New pattern. (copysigndf3): Likewise. 2014-11-28 Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> * omp-low.c (lower_omp_critical): Mark critical sections inside target functions as offloadable. 2014-11-28 Ilya Verbin <ilya.verbin@intel.com> * lto-wrapper.c (run_gcc): Set have_lto and have_offload if at least one file contains sections with LTO and offload IR, respectively. 2014-11-28 Ilya Verbin <ilya.verbin@intel.com> * cgraphunit.c (ipa_passes): Handle flag_generate_offload. (symbol_table::compile): Set flag_generate_offload if there is something to offload. * common.opt (flag_generate_offload): New Variable declaration. * dwarf2out.c (dwarf2out_finish): Handle flag_generate_offload. * ipa-inline-analysis.c (inline_generate_summary): Do not skip if flag_generate_offload is set. * lto-streamer.c (gate_lto_out): Handle flag_generate_offload. * passes.c (ipa_write_summaries): Do not skip if flag_generate_offload is set. * toplev.c (compile_file): Emit LTO marker if offload info has been previously emitted. Do not emit lto_slim marker if flag_generate_offload is without flag_generate_lto. * tree.c (free_lang_data): Do not skip if flag_generate_offload is set. 2014-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm-cores.def (cortex-a17.cortex-a7): New entry. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a17.cortex-a7. * config/arm/t-aprofile: Add cortex-a17.cortex-a7 entry to MULTILIB_MATCHES. 2014-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.md (generic_sched): Specify cortexa17 in 'no' list. Include cortex-a17.md. * config/arm/arm.c (arm_issue_rate): Specify 2 for cortexa17. * config/arm/arm-cores.def (cortex-a17): New entry. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=cortex-a17. * config/arm/cortex-a17.md: New file. * config/arm/cortex-a17-neon.md: New file. * config/arm/driver-arm.c (arm_cpu_table): Add entry for cortex-a17. * config/arm/t-aprofile: Add cortex-a17 entries to MULTILIB_MATCHES. 2014-11-28 Richard Biener <rguenther@suse.de> PR middle-end/64084 * genmatch.c (dt_node::gen_kids_1): New function, split out from dt_node::gen_kids. (decision_tree::cmp_node): DT_TRUE are generally not equal. (decision_tree::find_node): Treat DT_TRUE as barrier for node CSE on the same level. (dt_node::append_node): Do not keep DT_TRUE last. (dt_node::gen_kids): Emit code after each DT_TRUE node seen. 2014-11-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/arm/t-aprofile (MULTILIB_MATCHES): New entry for -march=armv8-a+crc. 2014-11-27 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (preferred_for_size): New attribute (*pushxf): Split Yx*r constraints to r,*r. Use preferred_for_size attribute to conditionally disable alternative 1. (*pushdf): Split Yd*r constraints to r,*r. Use preferred_for_size and prefered_for_speed attributes to conditionally disable alternative 1. (*movxf_internal): Split Yx*r constraints to r,*r. Use preferred_for_size attribute to conditionally disable alternatives 3 and 4. (*movdf_internal): Split Yd*r constraints to r,*r. Use preferred_for_size and prefered_for_speed attributes to conditionally disable alternatives 3 and 4. * config/i386/constraints.md (Yd, Yx): Remove register constraints. 2014-11-27 Eric Botcazou <ebotcazou@adacore.com> * dwarf2out.c (set_block_origin_self): Skip nested functions. 2014-11-27 H.J. Lu <hongjiu.lu@intel.com> PR target/63833 * config/i386/i386.h (REAL_PIC_OFFSET_TABLE_REGNUM): Use R15_REG for 64-bit. * config/i386/rdos64.h (REAL_PIC_OFFSET_TABLE_REGNUM): Removed. 2014-11-27 Martin Liska <mliska@suse.cz> David Malcolm <dmalcolm@redhat.com> * ipa-icf.c (sem_function::equals_private): int* is replaced with auto_vec. (sem_function::bb_dict_test): Likewise. * ipa-icf.h: Likewise. 2014-11-27 Richard Biener <rguenther@suse.de> PR middle-end/64088 * fold-const.c (const_unop): Re-instantiate missing condition before calling fold_abs_const. PR tree-optimization/64088 * tree-ssa-tail-merge.c (update_debug_stmt): After resetting the stmt break from the loop over use operands. 2014-11-27 Ilya Tocar <ilya.tocar@intel.com> * config/i386/cpuid.h (bit_MPX, bit_BNDREGS, bit_BNDCSR): Define. * config/i386/i386.c (get_builtin_code_for_version): Add avx512f. (fold_builtin_cpu): Ditto. * doc/extend.texi: Documment it. 2014-11-27 Jakub Jelinek <jakub@redhat.com> PR middle-end/64067 * expr.c (expand_expr_addr_expr_1) <case COMPOUND_LITERAL_EXPR>: Handle it by returning address of COMPOUND_LITERAL_EXPR_DECL not only if modifier is EXPAND_INITIALIZER, but whenever COMPOUND_LITERAL_EXPR_DECL is non-NULL and TREE_STATIC. PR tree-optimization/64024 * tree-vectorizer.h (struct _stmt_vec_info): Remove simd_clone_fndecl field. Add simd_clone_info field. (STMT_VINFO_SIMD_CLONE_FNDECL): Remove. (STMT_VINFO_SIMD_CLONE_INFO): Define. * tree-vect-stmts.c (vectorizable_simd_clone_call): Adjust for STMT_VINFO_SIMD_CLONE_FNDECL becoming first element of STMT_VINFO_SIMD_CLONE_INFO vector. For linear arguments, remember base and linear_step from analysis phase and use it during transform phase, biased by the difference between LOOP_VINFO_NITERS{_UNCHANGED,} multiplied by linear_step. (free_stmt_vec_info): Release STMT_VINFO_SIMD_CLONE_INFO. PR lto/64025 * alias.c (find_base_term): Use std::swap. Prefer tmp2 if it is CONSTANT_P other than CONST_INT. 2014-11-27 Thomas Preud'homme <thomas.preudhomme@arm.com> PR target/59593 * config/arm/arm.c (dump_minipool): dispatch to consttable pattern based on mode size. * config/arm/arm.md (consttable_1): Move from config/arm/thumb1.md and make it TARGET_EITHER. (consttable_2): Move from config/arm/thumb1.md, make it TARGET_EITHER and move HFmode handling from consttable_4 to it. (consttable_4): Move HFmode handling to consttable_2 pattern. * config/arm/thumb1.md (consttable_1): Move to config/arm/arm.md. (consttable_2): Ditto. 2014-11-27 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.c (try_to_simplify): Allow gimple_fold_stmt_to_constant_1 to follow SSA edges. 2014-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/64083 * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not forcibly mark loop for removal the wrong way. 2014-11-27 Richard Biener <rguenther@suse.de> PR middle-end/63704 * alias.c (mems_in_disjoint_alias_sets_p): Remove assert and instead return false when !fstrict-aliasing. 2014-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/61634 * tree-vect-slp.c: Include gimple-walk.h. (vect_detect_hybrid_slp_stmts): Rewrite to propagate hybrid down the SLP tree for one scalar statement. (vect_detect_hybrid_slp_1): New walker function. (vect_detect_hybrid_slp_2): Likewise. (vect_detect_hybrid_slp): Properly handle pattern statements in a pre-scan over all loop stmts. 2014-11-27 Zhenqiang Chen <zhenqiang.chen@linaro.org> Revert: 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/aarch64/aarch64.c (aarch64_code_to_ccmode, aarch64_convert_mode, aarch64_gen_ccmp_first, aarch64_gen_ccmp_next): New functions. (TARGET_GEN_CCMP_FIRST, TARGET_GEN_CCMP_NEXT): Define. 2014-11-26 Jakub Jelinek <jakub@redhat.com> * gcc.c (SANITIZER_SPEC): Don't error on -fsanitize=thread without -pie or -shared, error on -fsanitize=thread -static instead. 2014-11-26 Bernd Edlinger <bernd.edlinger@hotmail.de> PR ipa/61190 * cgraph.h (symtab_node::call_for_symbol_and_aliases): Fix comment. (cgraph_node::function_or_virtual_thunk_symbol): New function. (cgraph_node::call_for_symbol_and_aliases): Fix comment. (cgraph_node::call_for_symbol_thunks_and_aliases): Adjust comment. Add new optional parameter exclude_virtual_thunks. * cgraph.c (cgraph_node::call_for_symbol_thunks_and_aliases): Add new optional parameter exclude_virtual_thunks. (cgraph_node::set_const_flag): Don't propagate to virtual thunks. (cgraph_node::set_pure_flag): Likewise. (cgraph_node::function_symbol): Simplified. (cgraph_node::function_or_virtual_thunk_symbol): New function. * ipa-pure-const.c (analyze_function): For virtual thunks set pure_const_state to IPA_NEITHER. (propagate_pure_const): Use function_or_virtual_thunk_symbol. 2014-11-26 Richard Biener <rguenther@suse.de> PR middle-end/63738 * tree-data-ref.c (split_constant_offset_1): Do not follow SSA edges for SSA names with SSA_NAME_OCCURS_IN_ABNORMAL_PHI. 2014-11-26 Richard Biener <rguenther@suse.de> * fold-const.h (const_unop): Declare. (const_binop): Likewise. * fold-const.c (const_binop): Export overload that expects a type parameter and dispatches to fold_relational_const as well. Check both operand kinds for guarding the transforms. (const_unop): New function, with constant folding from fold_unary_loc. (fold_unary_loc): Dispatch to const_unop for tcc_constant operand. Remove constant folding done there from the simplifications. (fold_binary_loc): Check for constants using CONSTANT_CLASS_P. (fold_negate_expr): Remove dead code from the REAL_CST case. Avoid building garbage in the COMPLEX_CST case. * gimple-match-head.c (gimple_resimplify1): Dispatch to const_unop. (gimple_resimplify2): Dispatch to const_binop. (gimple_simplify): Likewise. 2014-11-26 Ilya Enkovich <ilya.enkovich@intel.com> PR bootstrap/63995 * tree-chkp-opt.c (chkp_reduce_bounds_lifetime): Ignore debug statement when searching for a new position for bounds load/creation statement. 2014-11-26 Marek Polacek <polacek@redhat.com> PR sanitizer/63788 * asan.c (initialize_sanitizer_builtins): Add BT_FN_SIZE_CONST_PTR_INT var. Conditionally build BUILT_IN_OBJECT_SIZE decl. (ATTR_PURE_NOTHROW_LEAF_LIST): Define. 2014-11-26 Ilya Enkovich <ilya.enkovich@intel.com> PR lto/64075 * tree-streamer-in.c (unpack_ts_function_decl_value_fields): Use proper size for function_code bitfield. (pack_ts_function_decl_value_fields): Likewise. 2014-11-21 Mark Wielaard <mjw@redhat.com> * doc/invoke.texi (-gdwarf-@{version}): Mention experimental DWARFv5. * opts.c (common_handle_option): Accept -gdwarf-5. * dwarf2out.c (is_cxx): Add DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14. (lower_bound_default): Likewise. Plus DW_LANG_C11. (gen_compile_unit_die): Output DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 or DW_LANG_C11. (output_compilation_unit_header): Output at most a DWARFv4 header. (output_skeleton_debug_sections): Likewise. (output_line_info): Likewise. (output_aranges): Document header version number. 2014-11-26 Richard Biener <rguenther@suse.de> * gimple-fold.c (get_symbol_constant_value): Allow all GIMPLE register type zero-constants. 2014-11-26 Mark Wielaard <mjw@redhat.com> * dwarf2out.c (gen_subprogram_die): Add DW_AT_noreturn when the function decl has TREE_THIS_VOLATILE. 2014-11-26 Richard Biener <rguenther@suse.de> PR tree-optimization/62238 * tree-predcom.c (ref_at_iteration): Unshare the expression before gimplifying it. (prepare_initializers_chain): Discard unused seq. 2014-11-26 Prachi Godbole <prachi.godbole@imgtec.com> * config/mips/mips.c (mips_rtx_cost_data): Fix memory_latency cost for p5600. 2014-11-25 Vladimir Makarov <vmakarov@redhat.com> * ira-lives.c (process_bb_node_lives): Make code with conditional REAL_PIC_OFFSET_TABLE_REGNUM. 2014-11-25 Vladimir Makarov <vmakarov@redhat.com> PR target/63527 * ira-lives.c (process_bb_node_lives): Check and remove conflict of pic pseudo with pic hard reg. 2014-11-25 Rohit <rohitarulraj@freescale.com> PR bootstrap/63703 * config/rs6000/darwin.h (REGISTER_NAMES): Update based on 32 newly added GCC hard register numbers for SPE high registers. 2014-11-25 Segher Boessenkool <segher@kernel.crashing.org> * bt-load.c (migrate_btr_defs): Get the key of a heap entry before removing it, not after. 2014-11-25 Segher Boessenkool <segher@kernel.crashing.org> * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Remove PATTERN call. 2014-11-25 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/sysv4.h (ASM_OUTPUT_REG_POP): Use addi instead of addic. 2014-11-25 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (iorxor, IORXOR): Delete code_attrs. (rest of file): Replace those with code resp. CODE. 2014-11-25 Tom de Vries <tom@codesourcery.com> * tree-cfg.c (verify_sese): New function. (move_sese_region_to_fn): Call verify_sese. * tree-cfg.h (verify_sese): Declare. 2014-11-25 Richard Biener <rguenther@suse.de> PR lto/64065 * lto-streamer-out.c (output_struct_function_base): Stream last_clique field. * lto-streamer-in.c (input_struct_function_base): Likewise. 2014-11-25 Martin Liska <mliska@suse.cz> PR bootstrap/64050 PR ipa/64060 * sreal.c (sreal::operator+): Addition fixed. (sreal::signedless_plus): Negative numbers are handled correctly. (sreal::operator-): Subtraction is fixed. (sreal::signedless_minus): Negative numbers are handled correctly. * sreal.h (sreal::operator<): Equal negative numbers are compared correctly. (sreal::shift): New checking asserts are introduced. Operation is fixed. 2014-11-25 Richard Biener <rguenther@suse.de> PR tree-optimization/61927 * tree-vect-loop.c (vect_analyze_loop_2): Revert ordering of group and pattern analysis to the one in GCC 4.8. 2014-11-25 Ilya Tocar <ilya.tocar@intel.com> Jakub Jelinek <jakub@redhat.com> * gcc.c (handle_foffload_option): Remove unnecessary calls to strchr, strlen, strncpy. * lto-wrapper.c (append_offload_options): Likewise. 2014-11-25 Eric Botcazou <ebotcazou@adacore.com> * config/rs6000/rs6000.c (rs6000_call_aix): For the AIX ABI, do not load the static chain if the call was originally direct. 2014-11-25 Jan Hubicka <hubicka@ucw.cz> PR ipa/64059 * ipa-prop.c (ipa_analyze_call_uses): Don't call get_dynamic_type when devirtualization is disabled. 2014-11-24 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/63965 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Do not set Altivec & -16 mask if the type is not valid for Altivec registers. (rs6000_secondary_reload_memory): Add support for ((reg + const) + reg) that occurs during push_reload processing. * config/rs6000/altivec.md (altivec_mov<mode>): Add instruction alternative for moving constant vectors which are easy altivec constants to GPRs. Set the length attribute each of the alternatives. * config/rs6000/rs6000-cpus.def: Undo November 21st changes, a work in progress patch was committed instead of the fixes for 63965. * config/rs6000/rs6000.c: Likewise. 2014-11-22 Jan Hubicka <hubicka@ucw.cz> PR ipa/63671 * ipa-inline-transform.c (can_remove_node_now_p_1): Handle alises and -fno-devirtualize more carefully. (can_remove_node_now_p): Update. 2014-11-24 Andrew Pinski <apinski@cavium.com> PR rtl-opt/63972 * shrink-wrap.c (move_insn_for_shrink_wrap): Allow LO_SUM also. 2014-11-24 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-simd.md (vec_shr<mode>): New. 2014-11-24 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Refactor by combining switch statements and make arrays into scalars. 2014-11-24 David Edelsohn <dje.gcc@gmail.com> PR c++/58561 * dbxout.c: Include stringpool.h (dbxout_type) [default]: Ignore auto type. 2014-11-24 Richard Biener <rguenther@suse.de> PR tree-optimization/63679 * tree-ssa-sccvn.c: Include ipa-ref.h, plugin-api.h and cgraph.h. (copy_reference_ops_from_ref): Fix non-constant ADDR_EXPR case to properly leave off at -1. (fully_constant_vn_reference_p): Generalize folding from constant initializers. (vn_reference_lookup_3): When looking through aggregate copies handle offsetted reads and try simplifying the result to a constant. * gimple-fold.h (fold_ctor_reference): Export. * gimple-fold.c (fold_ctor_reference): Likewise. 2014-11-24 Petr Murzin <petr.murzin@intel.com> * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge (vec_duplicate (vec_select)). 2014-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c (AARCH64_FUSE_ADRP_LDR): Define. (cortexa53_tunings): Specify AARCH64_FUSE_ADRP_LDR in fuseable_ops. (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_ADRP_LDR. 2014-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c (AARCH64_FUSE_MOVK_MOVK): Define. (cortexa53_tunings): Specify AARCH64_FUSE_MOVK_MOVK in fuseable_ops. (cortexa57_tunings): Likewise. (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_MOVK_MOVK. 2014-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * sched-deps.c (sched_macro_fuse_insns): Do not check modified_in_p in the not conditional jump case. * doc/tm.texi (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description. * target.def (TARGET_SCHED_MACRO_FUSION_PAIR_P): Update description. 2014-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c: Include tm-constrs.h (AARCH64_FUSE_ADRP_ADD): Define. (cortexa57_tunings): Add AARCH64_FUSE_ADRP_ADD to fuseable_ops. (cortexa53_tunings): Likewise. (aarch_macro_fusion_pair_p): Handle AARCH64_FUSE_ADRP_ADD. 2014-11-24 Martin Liska <mliska@suse.cz> * ipa-inline.c (edge_badness): long is replaced by sreal as fibonacci_heap template type. (update_edge_key): Likewise. (inline_small_functions): Likewise. 2014-11-24 Martin Liska <mliska@suse.cz> * predict.c (propagate_freq): More elegant sreal API is used. (estimate_bb_frequencies): Precomputed constants replaced by integer constants. * sreal.c (sreal::normalize): New function. (sreal::to_int): Likewise. (sreal::operator+): Likewise. (sreal::operator-): Likewise. (sreal::signedless_plus): Likewise. (sreal::signedless_minus): Likewise. (sreal::operator/): Negative number support is added. * sreal.h: Definition of new functions added. (inline sreal operator<<): New function. (inline sreal operator>>): Likewise. 2014-11-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64-protos.h (struct tune_params): Add fuseable_ops field. * config/aarch64/aarch64.c (generic_tunings): Specify fuseable_ops. (cortexa53_tunings): Likewise. (cortexa57_tunings): Likewise. (thunderx_tunings): Likewise. (aarch64_macro_fusion_p): New function. (aarch_macro_fusion_pair_p): Likewise. (TARGET_SCHED_MACRO_FUSION_P): Define. (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise. (AARCH64_FUSE_MOV_MOVK): Likewise. (AARCH64_FUSE_NOTHING): Likewise. 2014-11-24 Martin Liska <mliska@suse.cz> PR lto/63968 * bb-reorder.c (find_traces_1_round): decreate_key is replaced with replace_key method. * fibonacci_heap.h (fibonacci_heap::insert): New argument. (fibonacci_heap::replace_key_data): Likewise. (fibonacci_heap::replace_key): New method that can even increment key, this operation costs O(log N). (fibonacci_heap::extract_min): New argument. (fibonacci_heap::delete_node): Likewise. 2014-11-24 Richard Biener <rguenther@suse.de> PR tree-optimization/55334 * function.h (struct function): Add last_clique member. * tree-inline.c (remap_dependence_clique): New function. (remap_gimple_op_r): Remap dependence cliques in MEM_REFs. (copy_tree_body_r): Likewise. (copy_cfg_body): Free dependence map. (copy_gimple_seq_and_replace_locals): Likewise. * tree-pretty-print.c (dump_generic_node): Dump dependence info. * tree-ssa-alias.c (refs_may_alias_p_1): Use dependence info to answer alias query. * tree-ssa-structalias.c: Include tree-phinodes.h, ssa-iterators.h, tree-pretty-print.h and gimple-walk.h. (struct variable_info): Add is_restrict_var flag and ruid member. (new_var_info): Initialize is_restrict_var. (make_constraint_from_restrict): Likewise. (create_variable_info_for): Exclude restricts from global vars from new handling. (intra_create_variable_infos): But not those from parameters. (visit_loadstore): New function. (maybe_set_dependence_info): Likewise. (compute_dependence_clique): Likewise. (compute_may_aliases): Call compute_dependence_clique. * tree-data-ref.c (dr_analyze_indices): Copy dependence info to fake MEM_REF. (dr_may_alias_p): Use recorded dependence info to answer alias query. * tree-core.h (struct tree_base): Add clique, base struct in union. * tree.h (MR_DEPENDENCE_CLIQUE): New macro. (MR_DEPENDENCE_BASE): Likewise. * tree-inline.h (dependence_hasher): New hash-map kind. (struct copy_body_data): Add dependence_map pointer. * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Avoid throwing away dependence info. * tree-streamer-in.c (unpack_value_fields): Stream dependence info. * tree-streamer-out.c (streamer_pack_tree_bitfields): Likewise. 2014-11-23 Oleg Endo <olegendo@gcc.gnu.org> PR target/53976 * config/sh/sh_optimize_sett_clrt.cc (sh_optimize_sett_clrt::find_last_ccreg_values): Return bool instead of void. Abort at complex edges. (sh_optimize_sett_clrt::execute): Do nothing if find_last_ccreg_values returned false. 2014-11-22 John David Anglin <danglin@gcc.gnu.org> PR other/63694 * configure.ac: Check for strtol, strtoul, strtoll and strtoull declarations. * configure: Regenerated. * config.in: Regenerated. 2014-11-22 Jan Hubicka <hubicka@ucw.cz> * ipa.c (symbol_table::remove_unreachable_nodes): Mark all inline clones as having abstract origin used. * ipa-inline-transform.c (can_remove_node_now_p_1): Drop abstract origin check. (clone_inlined_nodes): Copy abstract originflag. * lto-cgraph.c (compute_ltrans_boundary): Use get_create to get abstract origin node. 2014-11-22 Uros Bizjak <ubizjak@gmail.com> * params.def (PARAM_MAX_COMPLETELY_PEELED_INSNS): Increase to 200. * config/i386/i386.c (ix86_option_override_internal): Do not increase PARAM_MAX_COMPLETELY_PEELED_INSNS. 2014-11-22 Oleg Endo <olegendo@gcc.gnu.org> PR target/63783 PR target/51244 * config/sh/sh_treg_combine.cc (sh_treg_combine::make_not_reg_insn): Do not emit bitwise not insn. Emit logical not insn sequence instead. Adjust related comments throughout the file. 2014-11-22 Oleg Endo <olegendo@gcc.gnu.org> PR target/63986 PR target/51244 * config/sh/sh.c (sh_is_logical_t_store_expr, sh_try_omit_signzero_extend): Use rtx_insn* for insn argument. (sh_split_movrt_negc_to_movt_xor): New function. (sh_find_set_of_reg): Move to ... * config/sh/sh-protos.h (sh_find_set_of_reg): ... here and convert to template function. (set_of_reg): Use rtx_insn* for insn member. (sh_is_logical_t_store_expr, sh_try_omit_signzero_extend): Use rtx_insn* for insn argument. * config/sh/sh.md (movrt_negc, *movrt_negc): Split into movt-xor sequence using new sh_split_movrt_negc_to_movt_xor function. (movrt_xor): Allow also for SH2A. (*movt_movrt): Delete insns and splits. 2014-11-22 Marc Glisse <marc.glisse@inria.fr> PR tree-optimization/60770 * tree-sra.c (clobber_subtree): New function. (sra_modify_constructor_assign): Call it. 2014-11-21 Vladimir Makarov <vmakarov@redhat.com> PR target/63897 * lra-lives.c (mark_regno_live, mark_regno_dead): Remove last argument. (process_bb_lives): Rename dead_insn_p on remove_p and global_live_info_p on dead_insn_p. Calculate local live info unconditionally. Remove last argument in calls mark_regno_live and mark_regno_dead. Reorganize body of EXECUTE_IF_SET_IN_BITMAP. (lra_create_live_ranges): Rename to lra_create_live_ranges_1. Return bool. Rename global_live_info_p on dead_insn_p. Return flag of live info change. (lra_create_live_ranges): New. 2014-11-21 Jakub Jelinek <jakub@redhat.com> PR target/63848 PR target/63975 * internal-fn.c (expand_arith_overflow_result_store, expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow): Use do_compare_rtx_and_jump instead of emit_cmp_and_jump_insns everywhere, adjust arguments to those functions. Use unsignedp = true for EQ, NE, GEU, LEU, LTU and GTU comparisons. PR tree-optimization/64006 * tree-vrp.c (stmt_interesting_for_vrp): Return true for {ADD,SUB,MUL}_OVERFLOW internal calls. (vrp_visit_assignment_or_call): For {ADD,SUB,MUL}_OVERFLOW internal calls, check if any REALPART_EXPR/IMAGPART_EXPR immediate uses would change their value ranges and return SSA_PROP_INTERESTING if so, or SSA_PROP_NOT_INTERESTING if there are some REALPART_EXPR/IMAGPART_EXPR immediate uses interesting for vrp. 2014-11-21 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/63965 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Do not set Altivec & -16 mask if the type is not valid for Altivec registers. (rs6000_secondary_reload_memory): Add support for ((reg + const) + reg) that occurs during push_reload processing. * config/rs6000/altivec.md (altivec_mov<mode>): Add instruction alternative for moving constant vectors which are easy altivec constants to GPRs. Set the length attribute each of the alternatives. 2014-11-21 Matthew Fortune <matthew.fortune@imgtec.com> * configure.ac: When checking for MIPS .module support ensure that o32 FPXX is supported to avoid a second configure check. * configure: Regenerate. 2014-11-21 Jiong Wang <jiong.wang@arm.com> * config/aarch64/iterators.md (VS): New mode iterator. (vsi2qi): New mode attribute. (VSI2QI): Likewise. * config/aarch64/aarch64-simd-builtins.def: New entry for ctz. * config/aarch64/aarch64-simd.md (ctz<mode>2): New pattern for ctz. * config/aarch64/aarch64-builtins.c (aarch64_builtin_vectorized_function): Support BUILT_IN_CTZ. 2014-11-21 H.J. Lu <hongjiu.lu@intel.com> PR bootstrap/63784 * configure: Regenerated. 2014-11-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/arm_neon.h (vsqrt_f64): New intrinsic. 2014-11-21 Ilya Tocar <ilya.tocar@intel.com> * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCOMMIT_UNSET, OPTION_MASK_ISA_PCOMMIT_SET): New. (ix86_handle_option): Handle OPT_mpcommit. * config.gcc: Add pcommitintrin.h * config/i386/pcommitintrin.h: New file. * config/i386/cpuid.h (bit_PCOMMIT): Define. * config/i386/driver-i386.c (host_detect_local_cpu): Detect pcommit. * config/i386/i386-c.c (ix86_target_macros_internal): Define __PCOMMIT__. * config/i386/i386.c (ix86_target_string): Add -mpcommit. (PTA_PCOMMIT): Define. (ix86_option_override_internal): Handle new option. (ix86_valid_target_attribute_inner_p): Add pcommit. (ix86_builtins): Add IX86_BUILTIN_PCOMMIT. (bdesc_special_args): Add __builtin_ia32_pcommit. * config/i386/i386.h (TARGET_PCOMMIT, TARGET_PCOMMIT_P): Define. * config/i386/i386.md (unspecv): Add UNSPECV_PCOMMIT. (pcommit): New instruction. * config/i386/i386.opt: Add mpcommit. * config/i386/x86intrin.h: Include pcommitintrin.h. 2014-11-20 Mark Wielaard <mjw@redhat.com> PR debug/38757 * config/avr/avr-c.c (avr_cpu_cpp_builtins): Use lang_GNU_C. * config/darwin.c (darwin_file_end): Use lang_GNU_CXX. (darwin_override_options): Likewise. * config/ia64/ia64.c (ia64_struct_retval_addr_is_first_parm_p): Likewise. * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Likewise. * dbxout.c (get_lang_number): Likewise. (dbxout_type): Likewise. (dbxout_symbol_location): Likewise. * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype also for DW_LANG_{C,C99,ObjC}. (highest_c_language): New function. (gen_compile_unit_die): Call highest_c_language to merge LTO TRANSLATION_UNIT_LANGUAGE. Use strncmp language_string to determine if DW_LANG_C99 or DW_LANG_C89 should be returned. * fold-const.c (fold_cond_expr_with_comparison): Use lang_GNU_CXX. * langhooks.h (struct lang_hooks): Add version comment to name. (lang_GNU_C): New function declaration. (lang_GNU_CXX): Likewise. * langhooks.c (lang_GNU_C): New function. (lang_GNU_CXX): Likewise. * vmsdbgout.c (vmsdbgout_init): Use lang_GNU_C and lang_GNU_CXX. 2014-11-21 Ilya Tocar <ilya.tocar@intel.com> * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLWB_UNSET, OPTION_MASK_ISA_CLWB_SET): New. (ix86_handle_option): Handle OPT_mclwb. * config.gcc: Add clwbintrin.h. * config/i386/clwbintrin.h: New file. * config/i386/cpuid.h (bit_CLWB): Define. * config/i386/driver-i386.c (host_detect_local_cpu): Detect clwb. * config/i386/i386-c.c (ix86_target_macros_internal): Define __CLWB__. * config/i386/i386.c (ix86_target_string): Add -mclwb. (PTA_CLWB): Define. (ix86_option_override_internal): Handle new option. (ix86_valid_target_attribute_inner_p): Add clwb. (ix86_builtins): Add IX86_BUILTIN_CLWB. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_clwb. (ix86_expand_builtin): Handle IX86_BUILTIN_CLWB. * config/i386/i386.h (TARGET_CLWB, TARGET_CLWB_P): Define. * config/i386/i386.md (unspecv): Add UNSPECV_CLWB. (clwb): New instruction. * config/i386/i386.opt: Add mclwb. * config/i386/x86intrin.h: Include clwbintrin.h. 2014-11-21 Ilya Tocar <ilya.tocar@intel.com> * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI_SET OPTION_MASK_ISA_AVX512VBMI_UNSET): New. (ix86_handle_option): Handle OPT_mavx512vbmi. * config.gcc: Add avx512vbmiintrin.h, avx512vbmivlintrin.h. * config/i386/avx512vbmiintrin.h: New file. * config/i386/avx512vbmivlintrin.h: Ditto. * config/i386/cpuid.h (bit_AVX512VBMI): New. * config/i386/driver-i386.c (host_detect_local_cpu): Detect avx512vbmi. * config/i386/i386-c.c (ix86_target_macros_internal): Define __AVX512VBMI__. * config/i386/i386.c (ix86_target_string): Add -mavx512vbmi. (PTA_AVX512VBMI): Define. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add avx512vbmi, (ix86_builtins): Add IX86_BUILTIN_VPMULTISHIFTQB512, IX86_BUILTIN_VPMULTISHIFTQB256, IX86_BUILTIN_VPMULTISHIFTQB128, IX86_BUILTIN_VPERMVARQI512_MASK, IX86_BUILTIN_VPERMT2VARQI512, IX86_BUILTIN_VPERMT2VARQI512_MASKZ, IX86_BUILTIN_VPERMI2VARQI512, IX86_BUILTIN_VPERMVARQI256_MASK, IX86_BUILTIN_VPERMVARQI128_MASK, IX86_BUILTIN_VPERMT2VARQI256, IX86_BUILTIN_VPERMT2VARQI256_MASKZ, IX86_BUILTIN_VPERMT2VARQI128, IX86_BUILTIN_VPERMI2VARQI256, IX86_BUILTIN_VPERMI2VARQI128. (bdesc_special_args): Add __builtin_ia32_vpmultishiftqb512_mask, __builtin_ia32_vpmultishiftqb256_mask, __builtin_ia32_vpmultishiftqb128_mask, __builtin_ia32_permvarqi512_mask, __builtin_ia32_vpermt2varqi512_mask, __builtin_ia32_vpermt2varqi512_maskz, __builtin_ia32_vpermi2varqi512_mask, __builtin_ia32_permvarqi256_mask, __builtin_ia32_permvarqi128_mask, __builtin_ia32_vpermt2varqi256_mask, __builtin_ia32_vpermt2varqi256_maskz, __builtin_ia32_vpermt2varqi128_mask, __builtin_ia32_vpermt2varqi128_maskz, __builtin_ia32_vpermi2varqi256_mask, __builtin_ia32_vpermi2varqi128_mask. (ix86_hard_regno_mode_ok): Allow big masks for AVX512VBMI. * config/i386/i386.h (TARGET_AVX512VBMI, TARGET_AVX512VBMI_P): Define. * config/i386/i386.opt: Add mavx512vbmi. * config/i386/immintrin.h: Include avx512vbmiintrin.h, avx512vbmivlintrin.h. * config/i386/sse.md (unspec): Add UNSPEC_VPMULTISHIFT. (VI1_AVX512VL): New iterator. (<avx512>_permvar<mode><mask_name>): Use it. (<avx512>_vpermi2var<mode>3_maskz): Ditto. (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Ditto. (<avx512>_vpermi2var<mode>3_mask): Ditto. (<avx512>_vpermt2var<mode>3_maskz): Ditto. (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Ditto. (<avx512>_vpermt2var<mode>3_mask): Ditto. (vpmultishiftqb<mode><mask_name>): Ditto. 2014-11-21 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> PR rtl-optimization/63952 * optabs.c (prepare_cmp_insn): Do not call can_compare_p for CCmode. * config/s390/s390.md ("cbranchcc4"): Accept any s390_comparison. Remove incorrect TARGET_HARD_FLOAT check and no-op expander code. 2014-11-21 Ilya Tocar <ilya.tocar@intel.com> * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512IFMA_SET, OPTION_MASK_ISA_AVX512IFMA_UNSET): New. (ix86_handle_option): Handle OPT_mavx512ifma. * config.gcc: Add avx512ifmaintrin.h, avx512ifmavlintrin.h. * config/i386/avx512ifmaintrin.h: New file. * config/i386/avx512ifmaivlntrin.h: Ditto. * config/i386/cpuid.h (bit_AVX512IFMA): New. * config/i386/driver-i386.c (host_detect_local_cpu): Detect avx512ifma. * config/i386/i386-c.c (ix86_target_macros_internal): Define __AVX512IFMA__. * config/i386/i386.c (ix86_target_string): Add -mavx512ifma. (PTA_AVX512IFMA): Define. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add avx512ifma. (ix86_builtins): Add IX86_BUILTIN_VPMADD52LUQ512, IX86_BUILTIN_VPMADD52HUQ512, IX86_BUILTIN_VPMADD52LUQ256, IX86_BUILTIN_VPMADD52HUQ256, IX86_BUILTIN_VPMADD52LUQ128, IX86_BUILTIN_VPMADD52HUQ128, IX86_BUILTIN_VPMADD52LUQ512_MASKZ, IX86_BUILTIN_VPMADD52HUQ512_MASKZ, IX86_BUILTIN_VPMADD52LUQ256_MASKZ, IX86_BUILTIN_VPMADD52HUQ256_MASKZ, IX86_BUILTIN_VPMADD52LUQ128_MASKZ, IX86_BUILTIN_VPMADD52HUQ128_MASKZ. (bdesc_special_args): Add __builtin_ia32_vpmadd52luq512_mask, __builtin_ia32_vpmadd52luq512_maskz, __builtin_ia32_vpmadd52huq512_mask, __builtin_ia32_vpmadd52huq512_maskx, __builtin_ia32_vpmadd52luq256_mask, __builtin_ia32_vpmadd52luq256_maskz, __builtin_ia32_vpmadd52huq256_mask, __builtin_ia32_vpmadd52huq256_maskz, __builtin_ia32_vpmadd52luq128_mask, __builtin_ia32_vpmadd52luq128_maskz, __builtin_ia32_vpmadd52huq128_mask, __builtin_ia32_vpmadd52huq128_maskz, * config/i386/i386.h (TARGET_AVX512IFMA, TARGET_AVX512IFMA_P): Define. * config/i386/i386.opt: Add mavx512ifma. * config/i386/immintrin.h: Include avx512ifmaintrin.h, avx512ifmavlintrin.h. * config/i386/sse.md (unspec): Add UNSPEC_VPMADD52LUQ, UNSPEC_VPMADD52HUQ. (VPMADD52): New iterator. (vpmadd52type): New attribute. (vpamdd52huq<mode>_maskz): New. (vpamdd52luq<mode>_maskz): Ditto. (vpamdd52<vpmadd52type><mode><sd_maskz_name>): Ditto. (vpamdd52<vpmadd52type><mode>_mask): Ditto. 2014-11-21 Alan Lawrence <alan.lawrence@arm.com> Revert: 2014-09-22 Alan Lawrence <alan.lawrence@arm.com> * fold-const.c (tree_swap_operands_p): Strip only sign-preserving NOPs. 2014-11-21 Andrew Bennett <andrew.bennett@imgtec.com> * config/mips/mips.c (mips_process_sync_loop): Place a nop in the delay slot of the branch likely instruction. (mips_output_sync_loop): Ensure mips_branch_likely is set before calling mips_output_sync_loop. (mips_sync_loop_insns): Likewise. 2014-11-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR/target 63673 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Allow the base pointer of vec_vsx_ld and vec_vsx_st to take a pointer to double. 2014-11-21 Georg-Johann Lay <avr@gjlay.de> Forward-port from 2014-10-30 4_9-branch r216934 PR target/63633 * config/avr/avr-protos.h (regmask): New inline function. (avr_fix_inputs, avr_emit3_fix_outputs): New protos. * config/avr/avr.c (avr_fix_operands, avr_move_fixed_operands) (avr_fix_inputs, avr_emit3_fix_outputs): New functions. * config/avr/avr-fixed.md (mulqq3_nomul, muluqq3_nomul) (mul<ALL2QA>3, mul<ALL4A>3, <usdiv><ALL1Q>3, <usdiv><ALL2QA>3) (<usdiv><ALL4A>3, round<ALL124QA>3): Fix input operands. * config/avr/avr-dimode.md (add<ALL8>3, sub<ALL8>3) (<ss_addsub><ALL8S>3, <us_addsub><ALL8U>3, cbranch<ALL8>4) (<di_shifts><ALL8>3, <any_extend>mulsidi3): Fix input operands. * config/avr/avr.md (mulqi3_call, mulhi3_call, mulsi3, mulpsi3) (mulu<QIHI>si3, muls<QIHI>si3, mulohisi3, <any_extend>mulhisi3) (usmulhisi3, <any_extend>mulhi3_highpart, mulsqipsi3) (fmul, fmuls, fmulsu): Fix operands. Turn insn into expander as needed. 2014-11-21 Jakub Jelinek <jakub@redhat.com> PR target/61137 * config/ia64/ia64.c (ia64_attribute_takes_identifier_p): New function. (TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Redefine to it. 2014-11-21 James Greenhalgh <james.greenhalgh@arm.com> * config/aarch64/aarch64-simd.md (aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>): Add a tab between output mnemonic and operands. (aarch64_simd_vec_unpack<su>_lo_<mode>): Likewise. (aarch64_simd_vec_unpack<su>_hi_<mode>): Likewise. 2014-11-21 Evgeny Stupachenko <evstupac@gmail.com> * config/i386/i386.c (ix86_option_override_internal): Increase PARAM_MAX_COMPLETELY_PEELED_INSNS. 2014-11-21 Evgeny Stupachenko <evstupac@gmail.com> PR target/60451 * config/i386/i386.c (expand_vec_perm_even_odd_pack): New. (expand_vec_perm_even_odd_1): Add new expand for V8HI mode, replace for V16QI, V16HI and V32QI modes. (ix86_expand_vec_perm_const_1): Add new expand. 2014-11-21 Nick Clifton <nickc@redhat.com> * config/rl78/rl78-real.md (movqi_from_es): New pattern. * config/rl78/rl78.c (struct machine_function): Add uses_es field. (rl78_expand_prologue): Save the ES register in interrupt handlers that use it. (rl78_expand_epilogue): Restore the ES register if necessary. (rl78_start_function): Mention if the function uses the ES register. (rl78_lo16): Record the use of the ES register. (transcode_memory_rtx): Likewise. 2014-11-21 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/61773 * tree-ssa-strlen.c (get_string_length): Don't assert stpcpy has been prototyped if si->stmt is BUILT_IN_MALLOC. PR target/63910 * simplify-rtx.c (simplify_immed_subreg): Return NULL for integer modes wider than MAX_BITSIZE_MODE_ANY_INT. If not using CONST_WIDE_INT, make sure r fits into CONST_DOUBLE. 2014-11-21 Markus Trippelsdorf <markus@trippelsdorf.de> * config/rs6000/rs6000.c (includes_rldic_lshift_p): Use HOST_WIDE_INT_M1U instead of ~0. (includes_rldicr_lshift_p): Likewise. 2014-11-21 Chung-Ju Wu <jasonwucj@gmail.com> * config/nds32/nds32.c (nds32_legitimate_address_p): For LO_SUM, we need to look into its operand to determine if it is a valid address. 2014-11-21 Chung-Ju Wu <jasonwucj@gmail.com> * config/nds32/nds32.c (nds32_emit_stack_push_multiple): Add new vaarg_p argument and create correct CFI info. (nds32_expand_prologue): Pass true or false to nds32_emit_stack_push_multiple function. 2014-11-21 Chung-Ju Wu <jasonwucj@gmail.com> * config/nds32/nds32.c (nds32_expand_prologue): Set fp_adjust_insn as RTX_FRAME_RELATED_P rtx. 2014-11-21 Chung-Ju Wu <jasonwucj@gmail.com> * config/nds32/nds32.opt (march): Add help message. 2014-11-20 Patrick Palka <ppalka@gcc.gnu.org> * tree-vrp.c (test_for_singularity): New parameter strict_overflow_p. Set *strict_overflow_p to true if signed overflow must be undefined for the return value to satisfy the conditional. (simplify_cond_using_ranges): Don't perform the simplification if it violates overflow rules. 2014-11-20 Marek Polacek <polacek@redhat.com> * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Fix typo. 2014-11-20 Andrew Stubbs <ams@codesourcery.com> * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Warn if a loop condition would be removed due to undefined behaviour. 2014-11-20 Andrew Pinski <apinski@cavium.com> PR ipa/63981 PR ipa/63982 * ipa-polymorphic-call.c (possible_placement_new): Use POINTER_SIZE instead of GET_MODE_BITSIZE (Pmode). (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise. (extr_type_from_vtbl_ptr_store): Likewise. 2014-11-20 Markus Trippelsdorf <markus@trippelsdorf.de> * config/rs6000/constraints.md: Avoid signed integer overflows. * config/rs6000/predicates.md: Likewise. * config/rs6000/rs6000.c (num_insns_constant_wide): Likewise. (includes_rldic_lshift_p): Likewise. (includes_rldicr_lshift_p): Likewise. * emit-rtl.c (const_wide_int_htab_hash): Likewise. * loop-iv.c (determine_max_iter): Likewise. (iv_number_of_iterations): Likewise. * tree-ssa-loop-ivopts.c (get_computation_cost_at): Likewise. * varasm.c (get_section_anchor): Likewise. 2014-11-20 Charles Baylis <charles.baylis@linaro.org> PR target/63870 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Pass expression to aarch64_simd_lane_bounds. * config/aarch64/aarch64-protos.h (aarch64_simd_lane_bounds): Update prototype. * config/aarch64/aarch64-simd.md: (aarch64_combinez<mode>): Update call to aarch64_simd_lane_bounds. (aarch64_get_lanedi): Likewise. (aarch64_ld2_lane<mode>): Likewise. (aarch64_ld3_lane<mode>): Likewise. (aarch64_ld4_lane<mode>): Likewise. (aarch64_im_lane_boundsi): Likewise. * config/aarch64/aarch64.c (aarch64_simd_lane_bounds): Add exp parameter. Report calling function in error message if exp is non-NULL. 2014-11-20 Segher Boessenkool <segher@kernel.crashing.org> PR target/60111 * config/sh/sh.c: Use signed char for signed field. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * cfgexpand.c, gimple-ssa.h, trans-mem.c: Replace htab with hash_table. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * ipa-utils.c, lto-section-in.c, lto-streamer.h, tree-scalar-evolution.c: Replace htab with hash_table. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * lto-section-in.c (lto_delete_in_decl_state): Adjust. (lto_free_function_in_decl_state): Likewise. * lto-streamer-out.c (copy_function_or_variable): Likewise. * lto-streamer.h (lto_file_decl_data_get_ ## name): Likewise. (lto_file_decl_data_num_ ## name ## s): Likewise. (struct lto_tree_ref_table): Remove. (struct lto_in_decl_state): Replace lto_tree_ref_table with vec<tree>. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * hash-map.h (hash_map::iterator): New class. (hash_map::begin): New method. (hash_map::end): Likewise. * alias.c, config/alpha/alpha.c, dwarf2asm.c, omp-low.c, tree.h: replace splay_tree with hash_map. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * hash-table.h (hash_table::hash_table): Call alloc_entries. (hash_table::alloc_entries): new method. (hash_table::expand): Call alloc_entries. (hash_table::empty): Likewise. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * config/i386/i386.c, function.c, trans-mem.c, tree-core.h, tree.c, tree.h, ubsan.c, varasm.c: Use hash_table instead of htab. 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> * doc/gty.texi: Document the new cache gty attribute. * gengtype.c (finish_cache_funcs): New function. (write_roots): Call gt_clear_cache on global variables with the cache gty attribute. * ggc-common.c (ggc_mark_roots): Call gt_clear_caches. * ggc.h (gt_clear_caches): New declaration. * hash-table.h (struct ggc_cache_hasher): New hasher for caches in gc memory. (gt_cleare_cache): New function. * emit-rtl.c, rtl.h, tree.c: Use hash_table instead of htab. 2014-11-20 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (try_combine): Prefer to delete dead SETs inside a PARALLEL over keeping them. 2014-11-20 Segher Boessenkool <segher@kernel.crashing.org> * combine.c (combine_validate_cost): Always print the insn costs to the dump file. 2014-11-20 Richard Henderson <rth@redhat.com> PR target/63977 * config/i386/i386.c (ix86_static_chain): Reinstate the check for DECL_STATIC_CHAIN. 2014-11-20 Tejas Belagod <tejas.belagod@arm.com> * config/aarch64/aarch64-protos.h (aarch64_classify_symbol): Fixup prototype. * config/aarch64/aarch64.c (aarch64_expand_mov_immediate, aarch64_cannot_force_const_mem, aarch64_classify_address, aarch64_classify_symbolic_expression): Fixup call to aarch64_classify_symbol. (aarch64_classify_symbol): Add range-checking for symbol + offset addressing for tiny and small models. 2014-11-20 Richard Biener <rguenther@suse.de> PR middle-end/63962 * match.pd ((p +p off1) +p off2 -> (p +p (off1 + off2))): Guard with single-use operand 0. 2014-11-20 Richard Biener <rguenther@suse.de> PR tree-optimization/63677 * tree-ssa-dom.c: Include gimplify.h for unshare_expr. (avail_exprs_stack): Make a vector of pairs. (struct hash_expr_elt): Replace stmt member with vop member. (expr_elt_hasher::equal): Simplify. (initialize_hash_element): Adjust. (initialize_hash_element_from_expr): Likewise. (dom_opt_dom_walker::thread_across_edge): Likewise. (record_cond): Likewise. (dom_opt_dom_walker::before_dom_children): Likewise. (print_expr_hash_elt): Likewise. (remove_local_expressions_from_table): Restore previous state if requested. (record_equivalences_from_stmt): Record &x + CST as constant &MEM[&x, CST] for further propagation. (vuse_eq): New function. (lookup_avail_expr): For loads use the alias oracle to see whether a candidate from the expr hash is usable. (avail_expr_hash): Do not hash VUSEs. 2014-11-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> PR target/59593 * config/arm/arm.md (*movhi_insn): Use right formatting for immediate. 2014-11-20 Igor Zamyatin <igor.zamyatin@intel.com> PR sanitizer/63845 * function.c (assign_parms): Move init of pic_offset_table_rtx from here to... * cfgexpand.c (expand_used_vars): ...here. 2014-11-19 Jan Hubicka <hubicka@ucw.cz> * tree.c (free_lang_data_in_type): If BINFO has no important information in it, set it to NULL. (get_binfo_at_offset): Do not walk fields, only bases. * ipa-utils.h (polymorphic_type_binfo_p): Be ready for BINFO_TYPE to be NULL. * ipa-polymorphic-call.c (record_known_type): Likewise. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * ipa-icf.c (sem_item_optimizer::~sem_item_optimizer): Free each congruence_class_group *. 2014-11-19 Uros Bizjak <ubizjak@gmail.com> PR target/63947 * config/i386/i386.c (put_condition_code) <case LTU, case GEU>: Output "b" and "nb" suffix for FP mode. 2014-11-19 Jan Hubicka <hubicka@ucw.cz> PR bootstrap/63963 * tree-streamer-out.c (write_ts_function_decl_tree_pointers): Stream out DECL_FUNCTION_SPECIFIC_TARGET * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): Stream in DECL_FUNCTION_SPECIFIC_TARGET. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * pass_manager.h (GCC_PASS_LISTS): Add all_late_ipa_passes. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * lra.c (lra): After creating live ranges in preparation for call to lra_inheritance, set live_p to true. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * tree-ssa-threadedge.c (thread_across_edge): Don't just release "path", delete it. * tree-ssa-threadupdate.c (delete_jump_thread_path): Likewise. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * tree-ssa-pre.c (do_regular_insertion): Convert "avail" from vec<> to auto_vec<> to fix a leak. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * dwarf2out.c (dwarf2out_c_finalize): Free producer_string. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * ira-costs.c (ira_costs_c_finalize): New function. * ira.h (ira_costs_c_finalize): New prototype. * toplev.c (toplev::finalize): Call ira_costs_c_finalize. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * ipa-reference.c (ipa_reference_c_finalize): Release optimization_summary_obstack. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * toplev.c (toplev::finalize): Free opts_obstack. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * toplev.c (toplev::finalize): Clean up save_decoded_options. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges): Convert local bbs_in_hot_partition from vec<> to auto_vec<>. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * config/alpha/alpha.c (alpha_option_override): Remove static from "handle_trap_shadows_info" and "align_insns_info". * config/i386/i386.c (ix86_option_override): Likewise for "insert_vzeroupper_info". * config/rl78/rl78.c (rl78_asm_file_start): Likewise for "rl78_devirt_info" and "rl78_move_elim_info". * config/rs6000/rs6000.c (rs6000_option_override): Likewise for "analyze_swaps_info". * context.c (gcc::context::~context): New. * context.h (gcc::context::~context): New. * dumpfile.c (dump_files): Add "false" initializers for new field "owns_strings". (gcc::dump_manager::~dump_manager): New. (gcc::dump_manager::dump_register): Add param "take_ownership". * dumpfile.h (struct dump_file_info): Add field "owns_strings". (gcc::dump_manager::~dump_manager): New. (gcc::dump_manager::dump_register): Add param "take_ownership". * pass_manager.h (gcc::pass_manager::operator delete): New. (gcc::pass_manager::~pass_manager): New. * passes.c (pass_manager::register_one_dump_file): Pass "true" to new "owns_strings" argument to dump_register. (pass_manager::operator delete): New. (delete_pass_tree): New function. (pass_manager::~pass_manager): New. * statistics.c (statistics_early_init): Pass "false" to new "owns_strings" argument to dump_register. * toplev.c (toplev::finalize): Clean up the context and thus the things it owns. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * reginfo.c (finish_subregs_of_mode): Replace obstack_finish with obstack_free when cleaning up valid_mode_changes_obstack. 2014-11-19 David Malcolm <dmalcolm@redhat.com> PR jit/63854 * opts.c (finalize_options_struct): New. * opts.h (finalize_options_struct): New. * toplev.c (toplev::finalize): Call finalize_options_struct on global_options and global_options_set. 2014-11-19 Manuel López-Ibáñez <manu@gcc.gnu.org> Jakub Jelinek <jakub@redhat.com> PR driver/36312 PR driver/63837 * gcc.c (process_command): Don't check for input/output filename equality if output is HOST_BIT_BUCKET. * toplev.c (init_asm_output): Likewise. 2014-11-19 David Malcolm <dmalcolm@redhat.com> Merger of git branch "gimple-classes-v2-option-3". * ChangeLog.gimple-classes: New. * coretypes.h (struct gcond): Add forward decl. (struct gdebug): Likewise. (struct ggoto): Likewise. (struct glabel): Likewise. (struct gswitch): Likewise. (struct gassign): Likewise. (struct gasm): Likewise. (struct gcall): Likewise. (struct gtransaction): Likewise. (struct greturn): Likewise. (struct gbind): Likewise. (struct gcatch): Likewise. (struct geh_filter): Likewise. (struct geh_mnt): Likewise. (struct geh_else): Likewise. (struct gresx): Likewise. (struct geh_dispatch): Likewise. (struct gphi): Likewise. (struct gtry): Likewise. (struct gomp_atomic_load): Likewise. (struct gomp_atomic_store): Likewise. (struct gomp_continue): Likewise. (struct gomp_critical): Likewise. (struct gomp_for): Likewise. (struct gomp_parallel): Likewise. (struct gomp_task): Likewise. (struct gomp_sections): Likewise. (struct gomp_single): Likewise. (struct gomp_target): Likewise. (struct gomp_teams): Likewise. * doc/gimple.texi (Class hierarchy of GIMPLE statements): Update for renaming of gimple subclasses. * gdbhooks.py: Update. * gimple-iterator.c (gsi_for_phi): New. (gsi_start_phis): Strengthen return type from gimple_stmt_iterator to gphi_iterator. * gimple-iterator.h (struct gphi_iterator): New subclass of gimple_stmt_iterator. (gsi_for_phi): New prototype. (gsi_start_phis): Strengthen return type from gimple_stmt_iterator to gphi_iterator. (gsi_next_nonvirtual_phi): Strengthen param from gimple_stmt_iterator * to gphi_iterator *, and local "phi" from gimple to gphi *. * gsstruct.def: Update for renamings of classes. * gimple.c (gimple_build_return): Strengthen return type from gimple to greturn *. (gimple_call_reset_alias_info): Strengthen param to gcall *. (gimple_build_call_1): Strengthen return type from gimple to gcall *. (gimple_build_call_vec): Likewise. (gimple_build_call): Likewise. (gimple_build_call_valist): Likewise. (gimple_build_call_internal_1): Likewise. (gimple_build_call_internal): Likewise. (gimple_build_call_internal_vec): Likewise. (gimple_build_call_from_tree): Likewise. (gimple_build_assign_stat): Strengthen return type from gimple to gassign *. (gimple_build_assign_with_ops): Likewise. (gimple_build_assign_with_ops): Likewise. (gimple_build_cond): Strengthen return type from gimple to gcond *. (gimple_build_cond_from_tree): Likewise. (gimple_cond_set_condition_from_tree): Require a gcond *. (gimple_build_label): Strengthen return type from gimple to glabel *. (gimple_build_goto): Strengthen return type from gimple to ggoto *. (gimple_build_bind): Strengthen return type from gimple to gbind *. (gimple_build_asm_1): Strengthen return type from gimple to gasm *. (gimple_build_asm_vec): Likewise. (gimple_build_catch): Strengthen return type from gimple to gcatch *. (gimple_build_eh_filter): Strengthen return type from gimple to geh_filter *. (gimple_build_eh_must_not_throw): Strengthen return type from gimple to geh_mnt *. (gimple_build_eh_else): Strengthen return type from gimple to geh_else *. (gimple_build_try): Update for renaming of gimple_statement_try to gtry. (gimple_build_resx): Strengthen return type from gimple to gresx *. (gimple_build_switch_nlabels): Strengthen return type from gimple to gswitch *. (gimple_build_switch): Likewise. (gimple_build_eh_dispatch): Strengthen return type from gimple to geh_dispatch *. (gimple_build_debug_bind_stat): Strengthen return type from gimple to gdebug *. (gimple_build_debug_source_bind_stat): Strengthen return type from gimple to gdebug *. (gimple_build_omp_critical): Strengthen return type from gimple to gomp_critical *. (gimple_build_omp_for): Strengthen return type from gimple to gomp_for *. (gimple_build_omp_parallel): Strengthen return type from gimple to gomp_parallel *. (gimple_build_omp_task): Strengthen return type from gimple to gomp_task *. (gimple_build_omp_continue): Strengthen return type from gimple to gomp_continue *. (gimple_build_omp_sections): Strengthen return type from gimple to gomp_sections *. (gimple_build_omp_single): Strengthen return type from gimple to gomp_single *. (gimple_build_omp_target): Strengthen return type from gimple to gomp_target *. (gimple_build_omp_teams): Strengthen return type from gimple to gomp_teams *. (gimple_build_omp_atomic_load): Strengthen return type from gimple to gomp_atomic_load *. (gimple_build_omp_atomic_store): Strengthen return type from gimple to gomp_atomic_store *. (gimple_build_transaction): Strengthen return type from gimple to gtransaction *. (empty_stmt_p): Replace check for GIMPLE_BIND with a dyn_cast. (gimple_call_fnspec): Require a const gcall *. (gimple_call_arg_flags): Likewise. (gimple_call_return_flags): Likewise. (gimple_set_bb): Add a checked cast. (gimple_copy): Within the cases, add locals of the appropriate subclass and use in place of "stmt" and "copy" for typesafety. (gimple_has_side_effects): Add a checked cast. (gimple_could_trap_p_1): Likewise. (gimple_call_copy_skip_args): Require a gcall *, and return one. (gimple_asm_clobbers_memory_p): Require a const gasm *. (infer_nonnull_range): Replace a check for GIMPLE_RETURN with a dyn_cast, introducing local "return_stmt" and using ti in place of "stmt". * gimple.h (gimple_vec): Eliminate this typedef. (struct gimple_statement_call): Rename to... (struct gcall): ...this. (struct gimple_statement_bind): Rename to... (struct gbind): ...this. (struct gimple_statement_catch): Rename to... (struct gcatch): ...this. (struct gimple_statement_eh_filter): Rename to... (struct geh_filter): ...this. (struct gimple_statement_eh_else): Rename to... (struct geh_else): ...this. (struct gimple_statement_eh_mnt): Rename to... (struct geh_mnt): ...this. (struct gimple_statement_phi): Rename to... (struct gphi): ...this. (struct gimple_statement_resx): Rename to... (struct gresx): ...this. (struct gimple_statement_eh_dispatch): Rename to... (struct geh_dispatch): ...this. (struct gimple_statement_try): Rename to... (struct gtry): ...this. (struct gimple_statement_asm): Rename to... (struct gasm): ...this. (struct gimple_statement_omp_critical): Rename to... (struct gomp_critical): ...this. (struct gimple_statement_omp_for): Rename to... (struct gomp_for): ...this. (struct gimple_statement_omp_parallel): Rename to... (struct gomp_parallel): ...this. (struct gimple_statement_omp_target): Rename to... (struct gomp_target): ...this. (struct gimple_statement_omp_task): Rename to... (struct gomp_task): ...this. (struct gimple_statement_omp_sections): Rename to... (struct gomp_sections): ...this. (struct gimple_statement_omp_continue): Rename to... (struct gomp_continue): ...this. (struct gimple_statement_omp_single): Rename to... (struct gomp_single): ...this. (struct gimple_statement_omp_teams): Rename to... (struct gomp_teams): ...this. (struct gimple_statement_omp_atomic_load): Rename to... (struct gomp_atomic_load): ...this. (struct gimple_statement_omp_atomic_store :): Rename to... (struct gomp_atomic_store :): ...this. (struct gimple_statement_transaction): Rename to... (struct gtransaction): ...this. (struct gcond): New subclass. (struct gdebug): New subclass. (struct ggoto): New subclass. (struct glabel): New subclass. (struct gswitch): New subclass. (struct gassign): New subclass. (struct greturn): New subclass. (is_a_helper <gimple_statement_asm *>::test): Rename to... (is_a_helper <gasm *>::test): ...this. (is_a_helper <gimple_statement_bind *>::test): Rename to... (is_a_helper <gbind *>::test): ...this. (is_a_helper <gassign *>::test): New. (is_a_helper <gimple_statement_call *>::test): Rename to... (is_a_helper <gcall *>::test): ...this. (is_a_helper <gimple_statement_catch *>::test): Rename to... (is_a_helper <gcatch *>::test): ...this. (is_a_helper <gimple_statement_resx *>::test): Rename to... (is_a_helper <gresx *>::test): ...this. (is_a_helper <gcond *>::test): New. (is_a_helper <gdebug *>::test): New. (is_a_helper <ggoto *>::test): New. (is_a_helper <glabel *>::test): New. (is_a_helper <gimple_statement_eh_dispatch *>::test): Rename to... (is_a_helper <geh_dispatch *>::test): ...this. (is_a_helper <gimple_statement_eh_else *>::test): Rename to... (is_a_helper <geh_else *>::test): ...this. (is_a_helper <gimple_statement_eh_filter *>::test): Rename to... (is_a_helper <geh_filter *>::test): ...this. (is_a_helper <gimple_statement_eh_mnt *>::test): Rename to... (is_a_helper <geh_mnt *>::test): ...this. (is_a_helper <gimple_statement_omp_atomic_load *>::test): Rename to... (is_a_helper <gomp_atomic_load *>::test): ...this. (is_a_helper <gimple_statement_omp_atomic_store *>::test): Rename to... (is_a_helper <gomp_atomic_store *>::test): ...this. (is_a_helper <gimple_statement_omp_continue *>::test): Rename to... (is_a_helper <gomp_continue *>::test): ...this. (is_a_helper <gimple_statement_omp_critical *>::test): Rename to... (is_a_helper <gomp_critical *>::test): ...this. (is_a_helper <gimple_statement_omp_for *>::test): Rename to... (is_a_helper <gomp_for *>::test): ...this. (is_a_helper <gimple_statement_omp_parallel *>::test): Rename to... (is_a_helper <gomp_parallel *>::test): ...this. (is_a_helper <gimple_statement_omp_target *>::test): Rename to... (is_a_helper <gomp_target *>::test): ...this. (is_a_helper <gimple_statement_omp_sections *>::test): Rename to... (is_a_helper <gomp_sections *>::test): ...this. (is_a_helper <gimple_statement_omp_single *>::test): Rename to... (is_a_helper <gomp_single *>::test): ...this. (is_a_helper <gimple_statement_omp_teams *>::test): Rename to... (is_a_helper <gomp_teams *>::test): ...this. (is_a_helper <gimple_statement_omp_task *>::test): Rename to... (is_a_helper <gomp_task *>::test): ...this. (is_a_helper <gimple_statement_phi *>::test): Rename to... (is_a_helper <gphi *>::test): ...this. (is_a_helper <gimple_statement_transaction *>::test): Rename to... (is_a_helper <gtransaction *>::test): ...this. (is_a_helper <greturn *>::test): New. (is_a_helper <gswitch *>::test): New. (is_a_helper <gimple_statement_try *>::test): Rename to... (is_a_helper <gtry *>::test): ...this. (is_a_helper <const gimple_statement_asm *>::test): Rename to... (is_a_helper <const gasm *>::test): ...this. (is_a_helper <const gimple_statement_bind *>::test): Rename to... (is_a_helper <const gbind *>::test): ...this. (is_a_helper <const gimple_statement_call *>::test): Rename to... (is_a_helper <const gcall *>::test): ...this. (is_a_helper <const gimple_statement_catch *>::test): Rename to... (is_a_helper <const gcatch *>::test): ...this. (is_a_helper <const gimple_statement_resx *>::test): Rename to... (is_a_helper <const gresx *>::test): ...this. (is_a_helper <const gimple_statement_eh_dispatch *>::test): Rename to... (is_a_helper <const geh_dispatch *>::test): ...this. (is_a_helper <const gimple_statement_eh_filter *>::test): Rename to... (is_a_helper <const geh_filter *>::test): ...this. (is_a_helper <const gimple_statement_omp_atomic_load *>::test): Rename to... (is_a_helper <const gomp_atomic_load *>::test): ...this. (is_a_helper <const gimple_statement_omp_atomic_store *>::test): Rename to... (is_a_helper <const gomp_atomic_store *>::test): ...this. (is_a_helper <const gimple_statement_omp_continue *>::test): Rename to... (is_a_helper <const gomp_continue *>::test): ...this. (is_a_helper <const gimple_statement_omp_critical *>::test): Rename to... (is_a_helper <const gomp_critical *>::test): ...this. (is_a_helper <const gimple_statement_omp_for *>::test): Rename to... (is_a_helper <const gomp_for *>::test): ...this. (is_a_helper <const gimple_statement_omp_parallel *>::test): Rename to... (is_a_helper <const gomp_parallel *>::test): ...this. (is_a_helper <const gimple_statement_omp_target *>::test): Rename to... (is_a_helper <const gomp_target *>::test): ...this. (is_a_helper <const gimple_statement_omp_sections *>::test): Rename to... (is_a_helper <const gomp_sections *>::test): ...this. (is_a_helper <const gimple_statement_omp_single *>::test): Rename to... (is_a_helper <const gomp_single *>::test): ...this. (is_a_helper <const gimple_statement_omp_teams *>::test): Rename to... (is_a_helper <const gomp_teams *>::test): ...this. (is_a_helper <const gimple_statement_omp_task *>::test): Rename to... (is_a_helper <const gomp_task *>::test): ...this. (is_a_helper <const gimple_statement_phi *>::test): Rename to... (is_a_helper <const gphi *>::test): ...this. (is_a_helper <const gimple_statement_transaction *>::test): Rename to... (is_a_helper <const gtransaction *>::test): ...this. (gimple_build_return): Strengthen return type to greturn *. (gimple_call_reset_alias_info): Require a gcall *. (gimple_build_call_vec): Return a gcall *. (gimple_build_call): Likewise. (gimple_build_call_valist): Likewise. (gimple_build_call_internal): Likewise. (gimple_build_call_internal_vec): Likewise. (gimple_build_call_from_tree): Likewise. (gimple_build_assign_stat): Return a gassign *. (gimple_build_assign_with_ops): Likewise. (gimple_build_cond): Return a gcond *. (gimple_build_cond_from_tree): Likewise. (gimple_cond_set_condition_from_tree): Require a gcond *. (gimple_build_label): Return a glabel *. (gimple_build_goto): Return a ggoto *. (gimple_build_bind): Return a gbind *. (gimple_build_asm_vec): Return a gasm *. (gimple_build_catch): Return a gcatch *. (gimple_build_eh_filter): Return a geh_filter *. (gimple_build_eh_must_not_throw): Return a geh_mnt *. (gimple_build_eh_else): Return a geh_else *. (gimple_build_try): Return a gtry *. (gimple_build_resx): Return a gresx *. (gimple_build_switch_nlabels): Return a gswitch *. (gimple_build_switch): Return a gswitch *. (gimple_build_eh_dispatch): Return a geh_dispatch *. (gimple_build_debug_bind_stat): Return a gdebug *. (gimple_build_debug_source_bind_stat): Return a gdebug *. (gimple_build_omp_critical): Return a gomp_critical *. (gimple_build_omp_for): Return a gomp_for *. (gimple_build_omp_parallel): Return a gomp_parallel *. (gimple_build_omp_task): Return a gomp_task *. (gimple_build_omp_continue): Return a gomp_continue *. (gimple_build_omp_sections): Return a gomp_sections *. (gimple_build_omp_single): Return a gomp_single *. (gimple_build_omp_target): Return a gomp_target *. (gimple_build_omp_teams): Return a gomp_teams *. (gimple_build_omp_atomic_load): Return a gomp_atomic_load *. (gimple_build_omp_atomic_store): Return a gomp_atomic_store *. (gimple_build_transaction): Return a gtransaction *. (gimple_call_arg_flags): Require a const gcall *. (gimple_call_return_flags): Likewise. (gimple_call_copy_skip_args): Require and return a gcall *. (gimple_asm_clobbers_memory_p): Require a const gasm *. (gimple_seq_first_stmt_as_a_bind): New. (gimple_assign_nontemporal_move_p): Require a const gassign * rather than a const_gimple. (gimple_call_internal_fn): Update for renaming to gcall. (gimple_call_fntype): Likewise. (gimple_call_set_fntype): Require a gcall * rather than a gimple. (gimple_call_set_fn): Likewise. (gimple_call_set_internal_fn): Likewise. (gimple_call_set_chain): Likewise. (gimple_call_set_tail): Likewise. (gimple_call_tail_p): Likewise. (gimple_call_set_return_slot_opt): Likewise. (gimple_call_return_slot_opt_p): Likewise. (gimple_call_set_from_thunk): Likewise. (gimple_call_from_thunk_p): Likewise. (gimple_call_set_va_arg_pack): Likewise. (gimple_call_va_arg_pack_p): Likewise. (gimple_call_set_nothrow): Likewise. (gimple_call_nothrow_p): Likewise. (gimple_call_set_alloca_for_var): Likewise. (gimple_call_alloca_for_var_p): Likewise. (gimple_call_use_set): Likewise. (gimple_call_clobber_set): Likewise. (gimple_call_return_type): Require a const gcall * rather than a const_gimple. (gimple_call_chain_ptr): Likewise. (gimple_call_copy_flags): Require a pair of gcall *. (gimple_cond_set_code): Require a gcond * rather than a gimple (gimple_cond_set_lhs): Likewise. (gimple_cond_set_rhs): Likewise. (gimple_cond_set_true_label): Likewise. (gimple_cond_set_false_label): Likewise. (gimple_cond_make_false): Likewise. (gimple_cond_make_true): Likewise. (gimple_cond_lhs_ptr): Require a const gcond * rather than a const_gimple. (gimple_cond_rhs_ptr): Likewise. (gimple_cond_true_label): Likewise. (gimple_cond_false_label): Likewise. (gimple_cond_true_p): Likewise. (gimple_cond_false_p): Likewise. (gimple_cond_set_condition): Likewise. (gimple_label_label): Require a const glabel *. (gimple_label_set_label): Require a glabel *. (gimple_goto_set_dest): Require a ggoto *. (gimple_bind_vars): Require a const gbind *. (gimple_bind_block): Likewise. (gimple_bind_set_vars): Require a gbind *. (gimple_bind_append_vars): Likewise. (gimple_bind_body_ptr): Likewise. (gimple_bind_body): Likewise. (gimple_bind_set_body): Likewise. (gimple_bind_add_stmt): Likewise. (gimple_bind_add_seq): Likewise. (gimple_bind_set_block): Likewise. (gimple_asm_ninputs): Require a const gasm *. (gimple_asm_noutputs): Likewise. (gimple_asm_nclobbers): Likewise. (gimple_asm_nlabels): Likewise. (gimple_asm_input_op): Likewise. (gimple_asm_input_op_ptr): Likewise. (gimple_asm_output_op): Likewise. (gimple_asm_output_op_ptr): Likewise. (gimple_asm_clobber_op): Likewise. (gimple_asm_label_op): Likewise. (gimple_asm_string): Likewise. (gimple_asm_volatile_p): Likewise. (gimple_asm_input_p): Likewise. (gimple_asm_set_input_op): Require a gasm *. (gimple_asm_set_output_op): Likewise. (gimple_asm_set_clobber_op): Likewise. (gimple_asm_set_label_op): Likewise. (gimple_asm_set_volatile): Likewise. (gimple_asm_set_input): Likewise. (gimple_catch_types): Require a const gcatch *. (gimple_catch_types_ptr): Require a gcatch *. (gimple_catch_handler_ptr): Likewise. (gimple_catch_handler): Likewise. (gimple_catch_set_types): Likewise. (gimple_catch_set_handler): Likewise. (gimple_eh_filter_types): Update for renaming of subclass to geh_filter. (gimple_eh_filter_types_ptr): Likewise. (gimple_eh_filter_failure_ptr): Likewise. (gimple_eh_filter_set_types): Require a geh_filter *. (gimple_eh_filter_set_failure): Likewise. (gimple_eh_must_not_throw_fndecl): Require a geh_mnt *. (gimple_eh_must_not_throw_set_fndecl): Likewise. (gimple_eh_else_n_body_ptr): Require a geh_else *. (gimple_eh_else_n_body): Likewise. (gimple_eh_else_e_body_ptr): Likewise. (gimple_eh_else_e_body): Likewise. (gimple_eh_else_set_n_body): Likewise. (gimple_eh_else_set_e_body): Likewise. (gimple_try_set_kind): Require a gtry *. (gimple_try_set_catch_is_cleanup): Likewise. (gimple_try_set_eval): Likewise. (gimple_try_set_cleanup): Likewise. (gimple_try_eval_ptr): Update for renaming of subclass to gtry. (gimple_try_cleanup_ptr): Likewise. (gimple_phi_capacity): Update for renaming of subclass to gphi. (gimple_phi_num_args): Likewise. (gimple_phi_result): Likewise. (gimple_phi_result_ptr): Likewise. (gimple_phi_arg): Likewise. (gimple_phi_set_result): Require a gphi *. (gimple_phi_set_arg): Likewise. (gimple_phi_arg_def_ptr): Likewise. (gimple_phi_arg_edge): Likewise. (gimple_phi_arg_location): Likewise. (gimple_phi_arg_location_from_edge): Likewise. (gimple_phi_arg_set_location): Likewise. (gimple_phi_arg_has_location): Likewise. (gimple_resx_region): Require a const gresx *. (gimple_resx_set_region): Require a gresx *. (gimple_eh_dispatch_region): Require a const geh_dispatch *. (gimple_eh_dispatch_set_region): Require a geh_dispatch *. (gimple_switch_num_labels): Require a const gswitch *. (gimple_switch_set_num_labels): Likewise. (gimple_switch_index): Likewise. (gimple_switch_index_ptr): Likewise. (gimple_switch_label): Likewise. (gimple_switch_default_label): Likewise. (gimple_switch_set_index): Require a gswitch *. (gimple_switch_set_label): Likewise. (gimple_switch_set_default_label): Likewise. (gimple_omp_critical_name): Require a const gomp_critical *. (gimple_omp_critical_name_ptr): Require a gomp_critical *. (gimple_omp_critical_set_name): Likewise. (gimple_omp_for_set_kind): Require a gomp_for *. (gimple_omp_for_set_combined_p): Likewise. (gimple_omp_for_set_combined_into_p): Likewise. (gimple_omp_for_clauses): Update for renaming of subclass to gomp_for. (gimple_omp_for_clauses_ptr): Likewise. (gimple_omp_for_set_clauses): Likewise. (gimple_omp_for_collapse): Likewise. (gimple_omp_for_index): Likewise. (gimple_omp_for_index_ptr): Likewise. (gimple_omp_for_set_index): Likewise. (gimple_omp_for_initial): Likewise. (gimple_omp_for_initial_ptr): Likewise. (gimple_omp_for_set_initial): Likewise. (gimple_omp_for_final): Likewise. (gimple_omp_for_final_ptr): Likewise. (gimple_omp_for_set_final): Likewise. (gimple_omp_for_incr): Likewise. (gimple_omp_for_incr_ptr): Likewise. (gimple_omp_for_set_incr): Likewise. (gimple_omp_for_pre_body): Likewise. (gimple_omp_for_set_pre_body): Likewise. (gimple_omp_parallel_clauses): Update for renaming of subclass to gomp_parallel. (gimple_omp_parallel_clauses_ptr): Require a gomp_parallel *. (gimple_omp_parallel_set_clauses): Likewise. (gimple_omp_parallel_child_fn_ptr): Likewise. (gimple_omp_parallel_set_child_fn): Likewise. (gimple_omp_parallel_data_arg_ptr): Likewise. (gimple_omp_parallel_set_data_arg): Likewise. (gimple_omp_parallel_child_fn): Require a const gomp_parallel *. (gimple_omp_parallel_data_arg): Likewise. (gimple_omp_task_clauses): Update for renaming of subclass to gomp_task. (gimple_omp_task_clauses_ptr): Likewise. (gimple_omp_task_set_clauses): Likewise. (gimple_omp_task_child_fn): Likewise. (gimple_omp_task_child_fn_ptr): Likewise. (gimple_omp_task_set_child_fn): Likewise. (gimple_omp_task_data_arg): Likewise. (gimple_omp_task_data_arg_ptr): Likewise. (gimple_omp_task_set_data_arg): Likewise. (gimple_omp_taskreg_clauses): Whitespace fixes. (gimple_omp_taskreg_clauses_ptr): Likewise. (gimple_omp_taskreg_set_clauses): Likewise. (gimple_omp_taskreg_child_fn): Likewise. (gimple_omp_taskreg_child_fn_ptr): Likewise. (gimple_omp_taskreg_set_child_fn): Likewise. (gimple_omp_taskreg_data_arg): Likewise. (gimple_omp_taskreg_data_arg_ptr): Likewise. (gimple_omp_taskreg_set_data_arg): Likewise. (gimple_omp_task_copy_fn): Update for renaming of subclass to gomp_task. (gimple_omp_task_copy_fn_ptr): Likewise. (gimple_omp_task_set_copy_fn): Likewise. (gimple_omp_task_arg_size): Likewise. (gimple_omp_task_arg_size_ptr): Likewise. (gimple_omp_task_set_arg_size): Likewise. (gimple_omp_task_arg_align): Likewise. (gimple_omp_task_arg_align_ptr): Likewise. (gimple_omp_task_set_arg_align): Likewise. (gimple_omp_single_clauses): Update for renaming of subclass to gomp_single. (gimple_omp_single_clauses_ptr): Likewise. (gimple_omp_single_set_clauses): Likewise. (gimple_omp_target_clauses): Update for renaming of subclass to gomp_target. (gimple_omp_target_clauses_ptr): Likewise. (gimple_omp_target_set_clauses): Require a gomp_target *. (gimple_omp_target_set_kind): Likewise. (gimple_omp_target_child_fn_ptr): Likewise. (gimple_omp_target_set_child_fn): Likewise. (gimple_omp_target_data_arg_ptr): Likewise. (gimple_omp_target_set_data_arg): Likewise. (gimple_omp_target_child_fn): Require a const gomp_target *. (gimple_omp_target_data_arg): Likewise. (gimple_omp_teams_clauses): Update for renaming of subclass to gomp_teams. (gimple_omp_teams_clauses_ptr): Likewise. (gimple_omp_teams_set_clauses): Require a gomp_teams *. (gimple_omp_sections_clauses): Update for renaming of subclass to gomp_sections. (gimple_omp_sections_clauses_ptr): Likewise. (gimple_omp_sections_set_clauses): Likewise. (gimple_omp_sections_control): Likewise. (gimple_omp_sections_control_ptr): Likewise. (gimple_omp_sections_set_control): Likewise. (gimple_omp_for_set_cond): Likewise. (gimple_omp_for_cond): Likewise. (gimple_omp_atomic_store_set_val): Require a gomp_atomic_store *. (gimple_omp_atomic_store_val_ptr): Likewise. (gimple_omp_atomic_load_set_lhs): Likewise. (gimple_omp_atomic_store_val): Require a const gomp_atomic_store *. (gimple_omp_atomic_load_lhs): Likewise. (gimple_omp_atomic_load_rhs): Likewise. (gimple_omp_atomic_load_lhs_ptr): Require a gomp_atomic_load *. (gimple_omp_atomic_load_set_rhs): Likewise. (gimple_omp_atomic_load_rhs_ptr): Likewise. (gimple_omp_continue_control_def): Require a const gomp_continue *. (gimple_omp_continue_control_use): Likewise. (gimple_omp_continue_control_def_ptr): Require a gomp_continue *. (gimple_omp_continue_set_control_def): Likewise. (gimple_omp_continue_control_use_ptr): Likewise. (gimple_omp_continue_set_control_use): Likewise. (gimple_transaction_body_ptr): Require a gtransaction *. (gimple_transaction_body): Likewise. (gimple_transaction_label_ptr): Likewise. (gimple_transaction_label): Require a const gtransaction *. (gimple_transaction_subcode): Likewise. (gimple_transaction_set_body): Require a gtransaction *. (gimple_transaction_set_label): Likewise. (gimple_transaction_set_subcode): Likewise. (gimple_return_retval_ptr): Require a const greturn *. (gimple_return_retval): Likewise. (gimple_return_set_retval): Require a greturn *. (gimple_expr_type): Introduce local "call_stmt" and use in place of "stmt" for typesafety. * asan.c: Use gimple subclasses. * auto-profile.c: Likewise. * builtins.c: Likewise. * builtins.h: Likewise. * cfgexpand.c: Likewise. * cfgloop.c: Likewise. * cfgloopmanip.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * cgraphbuild.c: Likewise. * cgraphclones.c: Likewise. * cgraphunit.c: Likewise. * expr.h: Likewise. * gimple-builder.c: Likewise. * gimple-builder.h: Likewise. * gimple-fold.c: Likewise. * gimple-low.c: Likewise. * gimple-pretty-print.c: Likewise. * gimple-ssa-isolate-paths.c: Likewise. * gimple-ssa-strength-reduction.c: Likewise. * gimple-streamer-in.c: Likewise. * gimple-streamer-out.c: Likewise. * gimple-walk.c: Likewise. * gimplify-me.c: Likewise. * gimplify.c: Likewise. * gimplify.h: Likewise. * graphite-scop-detection.c: Likewise. * graphite-sese-to-poly.c: Likewise. * internal-fn.c: Likewise. * internal-fn.def:: Likewise. * internal-fn.h: Likewise. * ipa-icf-gimple.c: Likewise. * ipa-icf-gimple.h: Likewise. * ipa-icf.c: Likewise. * ipa-inline-analysis.c: Likewise. * ipa-prop.c: Likewise. * ipa-prop.h: Likewise. * ipa-pure-const.c: Likewise. * ipa-split.c: Likewise. * lto-streamer-in.c: Likewise. * lto-streamer-out.c: Likewise. * omp-low.c: Likewise. * predict.c: Likewise. * sanopt.c: Likewise. * sese.c: Likewise. * ssa-iterators.h: Likewise. * stmt.c: Likewise. * trans-mem.c: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-cfg.h: Likewise. * tree-cfgcleanup.c: Likewise. * tree-chkp.c: Likewise. * tree-chkp.h: Likewise. * tree-complex.c: Likewise. * tree-data-ref.c: Likewise. * tree-dfa.c: Likewise. * tree-eh.c: Likewise. * tree-eh.h: Likewise. * tree-emutls.c: Likewise. * tree-if-conv.c: Likewise. * tree-inline.c: Likewise. * tree-inline.h: Likewise. * tree-into-ssa.c: Likewise. * tree-into-ssa.h: Likewise. * tree-loop-distribution.c: Likewise. * tree-nrv.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-phinodes.c: Likewise. * tree-phinodes.h: Likewise. * tree-predcom.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-scalar-evolution.h * tree-sra.cn_function): * tree-ssa-alias.c: Likewise. * tree-ssa-alias.h: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree-ssa-copy.c: Likewise. * tree-ssa-copyrename.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * tree-ssa-live.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-manip.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-operands.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-propagate.c: Likewise. * tree-ssa-propagate.h: Likewise. * tree-ssa-reassoc.c: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-sccvn.h: Likewise. * tree-ssa-sink.c: Likewise. * tree-ssa-strlen.c * tree-ssa-structalias.c * tree-ssa-tail-merge.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadedge.c: Likewise. * tree-ssa-threadedge.h: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uncprop.c: Likewise. * tree-ssa-uninit.c: Likewise. * tree-ssa.c: Likewise. * tree-stdarg.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-tailcall.c: Likewise. * tree-vect-data-refs.c: Likewise. * tree-vect-generic.c: Likewise. * tree-vect-loop-manip.c: Likewise. * tree-vect-loop.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-vect-slp.c: Likewise. * tree-vect-stmts.c: Likewise. * tree-vectorizer.h: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * ubsan.c: Likewise. * value-prof.c: Likewise. * value-prof.h: Likewise. * vtable-verify.c: Likewise. 2014-11-19 Markus Trippelsdorf <markus@trippelsdorf.de> * config/rs6000/constraints.md: Avoid signed integer overflows. * config/rs6000/predicates.md: Likewise. 2014-11-19 Renlin Li <Renlin.Li@arm.com> PR target/63424 * config/aarch64/aarch64-simd.md (<su><maxmin>v2di3): New. 2014-11-19 Renlin Li <Renlin.Li@arm.com> PR middle-end/63762 * ira.c (ira): Update preferred class. 2014-11-19 Jakub Jelinek <jakub@redhat.com> * gimple.h (gimple_build_assign_with_ops): Add unary arg overload. (gimple_assign_set_rhs_with_ops_1): Renamed to ... (gimple_assign_set_rhs_with_ops): ... this. Adjust binary arg inline overload to use it. Add unary arg overload. * gimple.c (gimple_build_assign_with_ops): New unary arg overload. (gimple_assign_set_rhs_from_tree): Use gimple_assign_set_rhs_with_ops instead of gimple_assign_set_rhs_with_ops_1. (gimple_assign_set_rhs_with_ops_1): Renamed to ... (gimple_assign_set_rhs_with_ops): ... this. * ipa-split.c (split_function): Remove last NULL argument from gimple_build_assign_with_ops call. * tree-ssa-loop-im.c (move_computations_dom_walker::before_dom_children): Likewise. * tsan.c (instrument_builtin_call): Likewise. * tree-vect-stmts.c (vect_init_vector, vectorizable_mask_load_store, vectorizable_conversion, vectorizable_load): Likewise. * tree-vect-loop.c (vect_is_simple_reduction_1, get_initial_def_for_induction): Likewise. * tree-loop-distribution.c (generate_memset_builtin): Likewise. * tree-vect-patterns.c (vect_handle_widen_op_by_const, vect_recog_widen_mult_pattern, vect_operation_fits_smaller_type, vect_recog_over_widening_pattern, vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast, adjust_bool_pattern, vect_recog_bool_pattern): Likewise. * tree-ssa-phiopt.c (conditional_replacement, abs_replacement, neg_replacement): Likewise. * asan.c (build_shadow_mem_access, maybe_create_ssa_name, maybe_cast_to_ptrmode, asan_expand_check_ifn): Likewise. * tree-vect-slp.c (vect_get_constant_vectors): Likewise. * omp-low.c (lower_rec_input_clauses, expand_omp_for_generic, expand_omp_for_static_nochunk, expand_omp_for_static_chunk, simd_clone_adjust): Likewise. * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise. * gimple-ssa-strength-reduction.c (introduce_cast_before_cand, replace_one_candidate): Likewise. * gimple-builder.c (build_type_cast): Likewise. * tree-ssa-forwprop.c (simplify_rotate): Likewise. (forward_propagate_addr_expr_1): Remove last NULL argument from gimple_assign_set_rhs_with_ops call. (simplify_vector_constructor): Use gimple_assign_set_rhs_with_ops instead of gimple_assign_set_rhs_with_ops_1. * tree-ssa-reassoc.c (maybe_optimize_range_tests): Remove last NULL argument from gimple_build_assign_with_ops call. (repropagate_negates): Remove last NULL argument from gimple_assign_set_rhs_with_ops call. * ubsan.c (ubsan_expand_null_ifn, ubsan_expand_objsize_ifn): Remove last NULL argument from gimple_build_assign_with_ops call. (instrument_bool_enum_load): Likewise. Remove last NULL argument from gimple_assign_set_rhs_with_ops call. * tree-ssa-math-opts.c (build_and_insert_cast, convert_mult_to_fma): Remove last NULL argument from gimple_build_assign_with_ops call. (bswap_replace): Likewise. Use gimple_assign_set_rhs_with_ops instead of gimple_assign_set_rhs_with_ops_1. (convert_plusminus_to_widen): Use gimple_assign_set_rhs_with_ops instead of gimple_assign_set_rhs_with_ops_1. * gimple-fold.c (replace_stmt_with_simplification): Likewise. (rewrite_to_defined_overflow, gimple_build): Remove last NULL argument from gimple_build_assign_with_ops call. * tree-ssa-strlen.c (handle_pointer_plus): Remove last NULL argument from gimple_assign_set_rhs_with_ops call. * tree-vrp.c (simplify_truth_ops_using_ranges, simplify_bit_ops_using_ranges): Remove last NULL argument from gimple_assign_set_rhs_with_ops call. (simplify_float_conversion_using_ranges, simplify_internal_call_using_ranges): Remove last NULL argument from gimple_build_assign_with_ops call. 2014-11-19 Wilco Dijkstra <wdijkstr@arm.com> PR target/61915 * config/aarch64/aarch64.c (generic_regmove_cost): Increase FP move cost. 2014-11-19 Marek Polacek <polacek@redhat.com> PR sanitizer/63690 * ubsan.c (instrument_object_size): Check for MEM_REF. 2014-11-19 Ilya Verbin <ilya.verbin@intel.com> PR regression/63868 * cgraph.c (cgraph_node::create): Guard g->have_offload with ifdef ENABLE_OFFLOADING. * omp-low.c (create_omp_child_function): Likewise. (expand_omp_target): Guard node->mark_force_output and offload_funcs with ifdef ENABLE_OFFLOADING. * varpool.c (varpool_node::get_create): Guard g->have_offload and offload_vars with ifdef ENABLE_OFFLOADING. 2014-11-19 Felix Yang <felix.yang@huawei.com> Shanyao Chen <chenshanyao@huawei.com> PR target/59593 * config/arm/arm.md (define_attr "arch"): Add v6t2. (define_attr "arch_enabled"): Add test for the above. (*movhi_insn_arch4): Add new alternative. 2014-11-19 Richard Henderson <rth@redhat.com> * c-family/c-common.c (c_common_reswords): Add __builtin_call_with_static_chain. * c-family/c-common.h (RID_BUILTIN_CALL_WITH_STATIC_CHAIN): New. * c/c-parser.c (c_parser_postfix_expression): Handle it. * doc/extend.texi (__builtin_call_with_static_chain): Document it. * calls.c (prepare_call_address): Allow decl or type for first arg. (expand_call): Pass type to prepare_call_address if no decl. * gimple-fold.c (gimple_fold_call): Eliminate the static chain if the function doesn't use it; fold it otherwise. * gimplify.c (gimplify_call_expr): Gimplify the static chain. * tree-cfg.c (verify_gimple_call): Allow a static chain on indirect function calls. * targhooks.c (default_static_chain): Remove check for DECL_STATIC_CHAIN. * config/moxie/moxie.c (moxie_static_chain): Likewise. * config/i386/i386.c (ix86_static_chain): Allow decl or type as the first argument. * config/xtensa/xtensa.c (xtensa_static_chain): Change the name of the unused first parameter. * doc/tm.texi (TARGET_STATIC_CHAIN): Document the first parameter may be a type. * target.def (static_chain): Likewise. 2014-11-19 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FP_FAST, __ARM_FEATURE_FMA, __ARM_FP, __ARM_FEATURE_NUMERIC_MAXMIN, __ARM_NEON_FP. 2014-11-19 Marek Polacek <polacek@redhat.com> PR sanitizer/63879 * fold-const.c (negate_expr_p) <case NEGATE_EXPR>: Return !TYPE_OVERFLOW_SANITIZED. (fold_negate_expr) <case INTEGER_CST>: Fold when overflow does not trap and when overflow wraps, or when SANITIZE_SI_OVERFLOW is 0. 2014-11-19 Ilya Tocar <ilya.tocar@intel.com> * collect2.c (main): Don't call fatal_error before diagnostic_initialize. * lto-wrapper.c (main): Likewise. 2014-11-19 Tom de Vries <tom@codesourcery.com> PR tree-optimization/62167 * tree-ssa-tail-merge.c (stmt_local_def): Handle statements with vuse conservatively. (gimple_equal_p): Don't use vn_valueize to compare for lhs equality of assigns. 2014-11-19 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/63915 * tree-vect-stmts.c (vectorizable_simd_clone_call): Pass true instead of false as last argument to gsi_replace. PR sanitizer/63520 * internal-fn.c (expand_ubsan_result_store): New function. (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow): Use it instead of just emit_move_insn. 2014-11-19 Richard Biener <rguenther@suse.de> PR tree-optimization/63844 * omp-low.c (fixup_child_record_type): Use a restrict qualified referece type for the receiver parameter. 2014-11-19 Jakub Jelinek <jakub@redhat.com> PR sanitizer/63913 * ubsan.c: Include tree-eh.h. (instrument_bool_enum_load): Handle loads that can throw. PR rtl-optimization/63843 * simplify-rtx.c (simplify_binary_operation_1) <case ASHIFTRT>: For optimization of ashiftrt of subreg of lshiftrt, check that code is ASHIFTRT. 2014-11-18 Andrew MacLeod <amacleod@redhat.com> * attribs.c (decl_attributes): Remove always true condition, TREE_TYPE(x) will never compare equal to a TYPE_DECL. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> PR target/63937 * target.def (use_by_pieces_infrastructure_p): Take unsigned HOST_WIDE_INT as the size parameter. * targhooks.c (default_use_by_pieces_infrastructure_p): Likewise. * targhooks.h (default_use_by_pieces_infrastructure_p): Likewise. * config/arc/arc.c (arc_use_by_pieces_infrastructure_p)): Likewise. * config/mips/mips.c (mips_use_by_pieces_infrastructure_p)): Likewise. * config/s390/s390.c (s390_use_by_pieces_infrastructure_p)): Likewise. * config/sh/sh.c (sh_use_by_pieces_infrastructure_p)): Likewise. * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p)): Likewise. * doc/tm.texi: Regenerate. 2014-11-18 Jan Hubicka <hubicka@ucw.cz> * ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn. (ipa_value_from_jfunc, ipa_context_from_jfunc): Skip sanity check. (ipa_get_indirect_edge_target_1): Use opt_for_fn. (good_cloning_opportunity_p): Likewise. (ipa-cp gate): Enable ipa-cp with LTO. * ipa-profile.c (ipa_propagate_frequency): Use opt_for_fn. * ipa.c (symbol_table::remove_unreachable_nodes): Always build type inheritance. * ipa-inline-transform.c (inline_transform): Check if there are inlines to apply even at -O0. * cgraphunit.c (cgraph_node::finalize_function): Use opt_for_fn. (analyze_functions): Build type inheritance graph. * ipa-inline.c (can_inline_edge_p): Use opt_for_fn. (want_early_inline_function_p, want_inline_small_function_p): Likewise. (check_callers): Likewise. (edge_badness): Likewise. (inline_small_functions): Always be ready for indirect inlining to happend. (ipa_inline): Always use want_inline_function_to_all_callers_p. (early_inline_small_functions): Use opt_for_fn. * ipa-inline-analysis.c (estimate_function_body_sizes): use opt_for_fn. (estimate_function_body_sizes): Likewise. (compute_inline_parameters): Likewise. (estimate_edge_devirt_benefit): Likewise. (inline_analyze_function): Likewise. * ipa-devirt.c (ipa_devirt): Likewise. (gate): Use in_lto_p. * ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): Use opt_for_fn. (try_make_edge_direct_virtual_call): Likewise. (update_indirect_edges_after_inlining): Likewise. (ipa_free_all_structures_after_ipa_cp): Add in_lto_p check. * common.opt (findirect-inlining): Turn into optimization. * ipa-pure-const.c (add_new_function): Use opt_for_fn. (pure_const_generate_summary): Likewise. (gate_pure_const): Always enable with in_lto_p. 2014-11-18 Maciej W. Rozycki <macro@codesourcery.com> * config/mips/mips.md (compression): Add `micromips32' setting. (enabled, length): Handle it. (shift_compression): Replace `micromips' with `micromips32' in the `compression' attribute. (*add<mode>3, sub<mode>3): Likewise. 2014-11-18 Maciej W. Rozycki <macro@codesourcery.com> * gcc/config/mips/mips.md (*jump_absolute): Use a branch when in range, a jump otherwise. 2014-11-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/cortex-a15-neon.md (cortex_a15_vfp_to_from_gp): Split into... (cortex_a15_gp_to_vfp): ...This. (cortex_a15_fp_to_gp): ...And this. Define and comment bypass from vfp operations to fp->gp moves. 2014-11-18 Martin Liska <mliska@suse.cz> * var-tracking.c (vt_find_locations): New fibonacci_node is used. 2014-11-18 Martin Liska <mliska@suse.cz> * bt-load.c (add_btr_def): New fibonacci_heap is used. (migrate_btr_defs): Likewise. 2014-11-18 Martin Liska <mliska@suse.cz> * tracer.c (tail_duplicate): New fibonacci_heap class is used. 2014-11-18 Martin Liska <mliska@suse.cz> * bb-reorder.c (mark_bb_visited): New fibonacci_heap is used. (find_traces): Likewise. (find_traces_1_round): Likewise. 2014-11-18 Martin Liska <mliska@suse.cz> * fibonacci_heap.h: New file. (fibonacci_heap::insert): Created from fibheap_insert. (fibonacci_heap::empty): Created from fibheap_empty. (fibonacci_heap::nodes): Created from fibheap_nodes. (fibonacci_heap::min_key): Created from fibheap_min_key. (fibonacci_heap::decrease_key): Created from fibheap_replace_key. (fibonacci_heap::replace_key_data): Created from fibheap_replace_key_data. (fibonacci_heap::extract_min): Created from fibheap_extract_min. (fibonacci_heap::min): Created from fibheap_min. (fibonacci_heap::replace_data): Created from fibheap_replace_data. (fibonacci_heap::delete_node): Created from fibheap_delete_node. (fibonacci_heap::union_with): Created from fibheap_union. * ipa-inline.c (update_edge_key): New heap API is used. (update_caller_keys): Likewise. (update_callee_keys): Likewise. (lookup_recursive_calls): Likewise. (recursive_inlining): Likewise. (add_new_edges_to_heap): Likewise. (heap_edge_removal_hook): Likewise. (inline_small_functions): Likewise. 2014-11-18 Marek Polacek <polacek@redhat.com> PR sanitizer/63866 * asan.c (asan_global_struct): Create a TYPE_DECL for "__asan_global", put it into TYPE_NAME and TYPE_STUB_DECL. * ubsan.c (ubsan_type_descriptor_type): New variable. Function renamed to ... (ubsan_get_type_descriptor_type): ... this. Cache return value in ubsan_type_descriptor_type variable. Create a TYPE_DECL for "__ubsan_type_descriptor", put it into TYPE_NAME and TYPE_STUB_DECL. (ubsan_get_source_location_type): Create a TYPE_DECL for "__ubsan_source_location", put it into TYPE_NAME and TYPE_STUB_DECL. (ubsan_type_descriptor, ubsan_create_data): Call ubsan_get_type_descriptor_type instead of ubsan_type_descriptor_type. Create a TYPE_DECL for name, put it into TYPE_NAME and TYPE_STUB_DECL. 2014-11-18 Felix Yang <felix.yang@huawei.com> * config/aarch64/aarch64.c (doloop_end): New pattern. * config/aarch64/aarch64.md (TARGET_CAN_USE_DOLOOP_P): Implement. 2014-11-18 Jason Merrill <jason@redhat.com> * tree.c (warn_deprecated_use): Show declaration with inform. 2014-11-18 Richard Biener <rguenther@suse.de> PR tree-optimization/63914 * tree-ssa-ccp.c (canonicalize_value): Remove float value canonicalization. (valid_lattice_transition): Allow (partial) transition from NaN to non-NaN if !HONOR_NANS. (set_lattice_value): Check for valid lattice transitions only when checking is enabled. 2014-11-18 Bernd Schmidt <bernds@codesourcery.com> * config/nvptx/nvptx.c: Include <sstream> directly after "config.h". 2014-11-18 Christophe Lyon <christophe.lyon@linaro.org> * config/arm/neon-testgen.ml (emit_prologue): Handle new compile_test_optim argument. (emit_automatics): Rename to emit_variables. Support variable indentation of its output. (compile_test_optim): New function. (test_intrinsic): Call compile_test_optim. * config/arm/neon.ml (features): Add Compiler_optim. (ops): Add Compiler_optim feature to Vbic and Vorn. (type_in_crypto_only): Replace 'or' by '||'. (reinterp): Likewise. (reinterpq): Likewise. 2014-11-18 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/arm_neon.h (vld1_dup_f32, vld1_dup_f64, vld1_dup_p8, vld1_dup_p16, vld1_dup_s8, vld1_dup_s16, vld1_dup_s32, vld1_dup_s64, vld1_dup_u8, vld1_dup_u16, vld1_dup_u32, vld1_dup_u64, vld1q_dup_f32, vld1q_dup_f64, vld1q_dup_p8, vld1q_dup_p16, vld1q_dup_s8, vld1q_dup_s16, vld1q_dup_s32, vld1q_dup_s64, vld1q_dup_u8, vld1q_dup_u16, vld1q_dup_u32, vld1q_dup_u64): Replace inline asm with vdup_n_ and pointer dereference. 2014-11-18 Marc Glisse <marc.glisse@inria.fr> * tree.c (element_mode, integer_truep): New functions. * tree.h (element_mode, integer_truep): Declare them. * fold-const.c (negate_expr_p, fold_negate_expr, combine_comparisons, fold_cond_expr_with_comparison, fold_real_zero_addition_p, fold_comparison, fold_ternary_loc, tree_call_nonnegative_warnv_p, fold_strip_sign_ops): Use element_mode. (fold_binary_loc): Use element_mode and element_precision. * match.pd: Use integer_truep, element_mode, element_precision, VECTOR_TYPE_P and build_one_cst. Extend some transformations to vectors. Simplify A/-A. 2014-11-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.md (unaligned_loaddi): Use std::swap instead of manual swapping implementation. (movcond_addsi): Likewise. * config/arm/arm.c (arm_canonicalize_comparison): Likewise. (arm_select_dominance_cc_mode): Likewise. (arm_reload_out_hi): Likewise. (gen_operands_ldrd_strd): Likewise. (output_move_double): Likewise. (arm_print_operand_address): Likewise. (thumb_output_move_mem_multiple): Likewise. (SWAP_RTX): Delete. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/arm-builtins.c (CONVERT_QUALIFIERS): Delete. (COPYSIGNF_QUALIFIERS): Likewise. (CREATE_QUALIFIERS): Likewise. (DUP_QUALIFIERS): Likewise. (FLOAT_WIDEN_QUALIFIERS): Likewise. (FLOAT_NARROW_QUALIFIERS): Likewise. (REINTERP_QUALIFIERS): Likewise. (RINT_QUALIFIERS): Likewise. (SPLIT_QUALIFIERS): Likewise. (FIXCONV_QUALIFIERS): Likewise. (SCALARMUL_QUALIFIERS): Likewise. (SCALARMULL_QUALIFIERS): Likewise. (SCALARMULH_QUALIFIERS): Likewise. (SELECT_QUALIFIERS): Likewise. (VTBX_QUALIFIERS): Likewise. (SHIFTIMM_QUALIFIERS): Likewise. (SCALARMAC_QUALIFIERS): Likewise. (LANEMUL_QUALIFIERS): Likewise. (LANEMULH_QUALIFIERS): Likewise. (LANEMULL_QUALIFIERS): Likewise. (SHIFTACC_QUALIFIERS): Likewise. (SHIFTINSERT_QUALIFIERS): Likewise. (VTBL_QUALIFIERS): Likewise. (LOADSTRUCT_QUALIFIERS): Likewise. (LOADSTRUCTLANE_QUALIFIERS): Likewise. (STORESTRUCT_QUALIFIERS): Likewise. (STORESTRUCTLANE_QUALIFIERS): Likewise. (neon_builtin_type_mode): Delete. (v8qi_UP): Map to V8QImode. (v8qi_UP): Map to V8QImode. (v4hi_UP): Map to V4HImode. (v4hf_UP): Map to V4HFmode. (v2si_UP): Map to V2SImode. (v2sf_UP): Map to V2SFmode. (di_UP): Map to DImode. (v16qi_UP): Map to V16QImode. (v8hi_UP): Map to V8HImode. (v4si_UP): Map to V4SImode. (v4sf_UP): Map to V4SFmode. (v2di_UP): Map to V2DImode. (ti_UP): Map to TImode. (ei_UP): Map to EImode. (oi_UP): Map to OImode. (neon_itype): Delete. (neon_builtin_datum): Remove itype, make mode a machine_mode. (VAR1): Update accordingly. (arm_init_neon_builtins): Use machine_mode directly. (neon_dereference_pointer): Likewise. (arm_expand_neon_args): Use qualifiers to decide operand types. (arm_expand_neon_builtin): Likewise. * config/arm/arm_neon_builtins.def: Remap operation type for many builtins. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/arm-builtins.c (arm_scalar_builtin_types): New. (enum arm_simd_type): Likewise. (struct arm_simd_type_info): Likewise (arm_mangle_builtin_scalar_type): Likewise. (arm_mangle_builtin_vector_type): Likewise. (arm_mangle_builtin_type): Likewise. (arm_simd_builtin_std_type): Likewise. (arm_lookup_simd_builtin_type): Likewise. (arm_simd_builtin_type): Likewise. (arm_init_simd_builtin_types): Likewise. (arm_init_simd_builtin_scalar_types): Likewise. (arm_init_neon_builtins): Rewrite using qualifiers. * config/arm/arm-protos.h (arm_mangle_builtin_type): New. * config/arm/arm-simd-builtin-types.def: New file. * config/arm/t-arm (arm-builtins.o): Depend on it. * config/arm/arm.c (arm_mangle_type): Call arm_mangle_builtin_type. * config/arm/arm_neon.h (int8x8_t): Use new internal type. (int16x4_t): Likewise. (int32x2_t): Likewise. (float16x4_t): Likewise. (float32x2_t): Likewise. (poly8x8_t): Likewise. (poly16x4_t): Likewise. (uint8x8_t): Likewise. (uint16x4_t): Likewise. (uint32x2_t): Likewise. (int8x16_t): Likewise. (int16x8_t): Likewise. (int32x4_t): Likewise. (int64x2_t): Likewise. (float32x4_t): Likewise. (poly8x16_t): Likewise. (poly16x8_t): Likewise. (uint8x16_t): Likewise. (uint16x8_t): Likewise. (uint32x4_t): Likewise. (uint64x2_t): Likewise. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * gcc/config/arm/arm-builtins.c (arm_type_qualifiers): New. (neon_itype): Add new types corresponding to the types used in qualifiers names. (arm_unop_qualifiers): New. (arm_bswap_qualifiers): Likewise. (arm_binop_qualifiers): Likewise. (arm_ternop_qualifiers): Likewise. (arm_getlane_qualifiers): Likewise. (arm_lanemac_qualifiers): Likewise. (arm_setlane_qualifiers): Likewise. (arm_combine_qualifiers): Likewise. (arm_load1_qualifiers): Likewise. (arm_load1_lane_qualifiers): Likewise. (arm_store1_qualifiers): Likewise. (arm_storestruct_lane_qualifiers): Likewise. (UNOP_QUALIFIERS): Likewise. (DUP_QUALIFIERS): Likewise. (SPLIT_QUALIFIERS): Likewise. (CONVERT_QUALIFIERS): Likewise. (FLOAT_WIDEN_QUALIFIERS): Likewise. (FLOAT_NARROW_QUALIFIERS): Likewise. (RINT_QUALIFIERS): Likewise. (COPYSIGNF_QUALIFIERS): Likewise. (CREATE_QUALIFIERS): Likewise. (REINTERP_QUALIFIERS): Likewise. (BSWAP_QUALIFIERS): Likewise. (BINOP_QUALIFIERS): Likewise. (FIXCONV_QUALIFIERS): Likewise. (SCALARMUL_QUALIFIERS): Likewise. (SCALARMULL_QUALIFIERS): Likewise. (SCALARMULH_QUALIFIERS): Likewise. (TERNOP_QUALIFIERS): Likewise. (SELECT_QUALIFIERS): Likewise. (VTBX_QUALIFIERS): Likewise. (GETLANE_QUALIFIERS): Likewise. (SHIFTIMM_QUALIFIERS): Likewise. (LANEMAC_QUALIFIERS): Likewise. (SCALARMAC_QUALIFIERS): Likewise. (SETLANE_QUALIFIERS): Likewise. (SHIFTINSERT_QUALIFIERS): Likewise. (SHIFTACC_QUALIFIERS): Likewise. (LANEMUL_QUALIFIERS): Likewise. (LANEMULL_QUALIFIERS): Likewise. (LANEMULH_QUALIFIERS): Likewise. (COMBINE_QUALIFIERS): Likewise. (VTBL_QUALIFIERS): Likewise. (LOAD1_QUALIFIERS): Likewise. (LOADSTRUCT_QUALIFIERS): Likewise. (LOAD1LANE_QUALIFIERS): Likewise. (LOADSTRUCTLANE_QUALIFIERS): Likewise. (STORE1_QUALIFIERS): Likewise. (STORESTRUCT_QUALIFIERS): Likewise. (STORE1LANE_QUALIFIERS): Likewise. (STORESTRUCTLANE_QUALIFIERS): Likewise. (neon_builtin_datum): Keep track of qualifiers. (VAR1): Likewise. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/arm-builtins.c (VAR1): Add a comma. (VAR2): Rewrite in terms of VAR1. (VAR3-10): Likewise. (arm_builtins): Remove leading comma before ARM_BUILTIN_MAX. * config/arm/arm_neon_builtins.def: Remove trailing commas. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config.gcc (extra_objs): Add arm-builtins.o for arm*-*-*. (target_gtfiles): Add config/arm/arm-builtins.c for arm*-*-*. * config/arm/arm-builtins.c: New. * config/arm/t-arm (arm_builtins.o): New. * config/arm/arm-protos.h (arm_expand_builtin): New. (arm_builtin_decl): Likewise. (arm_init_builtins): Likewise. (arm_atomic_assign_expand_fenv): Likewise. * config/arm/arm.c (arm_atomic_assign_expand_fenv): Remove prototype. (arm_init_builtins): Likewise. (arm_init_iwmmxt_builtins): Likewise (safe_vector_operand): Likewise (arm_expand_binop_builtin): Likewise (arm_expand_unop_builtin): Likewise (arm_expand_builtin): Likewise (arm_builtin_decl): Likewise (insn_flags): Remove static. (tune_flags): Likewise. (enum arm_builtins): Move to config/arm/arm-builtins.c. (arm_init_neon_builtins): Likewise. (struct builtin_description): Likewise. (arm_init_iwmmxt_builtins): Likewise. (arm_init_fp16_builtins): Likewise. (arm_init_crc32_builtins): Likewise. (arm_init_builtins): Likewise. (arm_builtin_decl): Likewise. (safe_vector_operand): Likewise. (arm_expand_ternop_builtin): Likewise. (arm_expand_binop_builtin): Likewise. (arm_expand_unop_builtin): Likewise. (neon_dereference_pointer): Likewise. (arm_expand_neon_args): Likewise. (arm_expand_neon_builtin): Likewise. (neon_split_vcombine): Likewise. (arm_expand_builtin): Likewise. (arm_builtin_vectorized_function): Likewise. (arm_atomic_assign_expand_fenv): Likewise. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/t-arm (arm.o): Include arm-protos.h in the recipe. * config/arm/arm.c (FL_CO_PROC): Move to arm-protos.h. (FL_ARCH3M): Likewise. (FL_MODE26): Likewise. (FL_MODE32): Likewise. (FL_ARCH4): Likewise. (FL_ARCH5): Likewise. (FL_THUMB): Likewise. (FL_LDSCHED): Likewise. (FL_STRONG): Likewise. (FL_ARCH5E): Likewise. (FL_XSCALE): Likewise. (FL_ARCH6): Likewise. (FL_VFPV2): Likewise. (FL_WBUF): Likewise. (FL_ARCH6K): Likewise. (FL_THUMB2): Likewise. (FL_NOTM): Likewise. (FL_THUMB_DIV): Likewise. (FL_VFPV3): Likewise. (FL_NEON): Likewise. (FL_ARCH7EM): Likewise. (FL_ARCH7): Likewise. (FL_ARM_DIV): Likewise. (FL_ARCH8): Likewise. (FL_CRC32): Likewise. (FL_SMALLMUL): Likewise. (FL_IWMMXT): Likewise. (FL_IWMMXT2): Likewise. (FL_TUNE): Likewise. (FL_FOR_ARCH2): Likewise. (FL_FOR_ARCH3): Likewise. (FL_FOR_ARCH3M): Likewise. (FL_FOR_ARCH4): Likewise. (FL_FOR_ARCH4T): Likewise. (FL_FOR_ARCH5): Likewise. (FL_FOR_ARCH5T): Likewise. (FL_FOR_ARCH5E): Likewise. (FL_FOR_ARCH5TE): Likewise. (FL_FOR_ARCH5TEJ): Likewise. (FL_FOR_ARCH6): Likewise. (FL_FOR_ARCH6J): Likewise. (FL_FOR_ARCH6K): Likewise. (FL_FOR_ARCH6Z): Likewise. (FL_FOR_ARCH6ZK): Likewise. (FL_FOR_ARCH6T2): Likewise. (FL_FOR_ARCH6M): Likewise. (FL_FOR_ARCH7): Likewise. (FL_FOR_ARCH7A): Likewise. (FL_FOR_ARCH7VE): Likewise. (FL_FOR_ARCH7R): Likewise. (FL_FOR_ARCH7M): Likewise. (FL_FOR_ARCH7EM): Likewise. (FL_FOR_ARCH8A): Likewise. * config/arm/arm-protos.h: Take definitions moved from arm.c. 2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/arm.c (arm_expand_neon_builtin): Remove "Magic Word" parameter, rearrange switch statement accordingly. (arm_evpc_neon_vrev): Remove "Magic Word". * config/arm/unspecs.md (unspec): Split many UNSPECs to rounding, or signed/unsigned variants. * config/arm/neon.md (vcond<mode><mode>): Remove "Magic Word" code. (vcondu<mode><mode>): Likewise. (neon_vadd): Remove "Magic Word" operand. (neon_vaddl): Remove "Magic Word" operand, convert to use signed/unsigned iterator. (neon_vaddw): Likewise. (neon_vhadd): Likewise, also iterate over "rounding" forms. (neon_vqadd): Remove "Magic Word" operand, convert to use signed/unsigned iterator. (neon_v<r>addhn): Remove "Magic Word" operand, convert to iterate over "rounding" forms. (neon_vmul): Remove "Magic Word" operand, iterate over polynomial/float instruction forms. (neon_vmla): Remove "Magic Word" operand. (neon_vfma): Likewise. (neon_vfms): Likewise. (neon_vmls): Likewise. (neon_vmlal): Remove "Magic Word" operand, iterate over signed/unsigned forms. (neon_vmlsl): Likewise. (neon_vqdmulh): Remove "Magic Word" operand, iterate over "rounding" forms. (neon_vqdmlal): Remove "Magic Word" operand, iterate over signed/unsigned forms. (neon_vqdmlsl): Likewise. (neon_vmull): Likewise. (neon_vqdmull): Remove "Magic Word" operand. (neon_vsub): Remove "Magic Word" operand. (neon_vsubl): Remove "Magic Word" operand, convert to use signed/unsigned iterator. (neon_vsubw): Likewise. (neon_vhsub): Likewise. (neon_vqsub): Likewise. (neon_v<r>subhn): Remove "Magic Word" operand, convert to iterate over "rounding" forms. (neon_vceq): Remove "Magic Word" operand. (neon_vcge): Likewise. (neon_vcgeu): Likewise. (neon_vcgt): Likewise. (neon_vcgtu): Likewise. (neon_vcle): Likewise. (neon_vclt): Likewise. (neon_vcage): Likewise. (neon_vcagt): Likewise. (neon_vabd): Remove "Magic Word" operand, iterate over signed/unsigned forms, and split out... (neon_vabdf): ...this as new. (neon_vabdl): Remove "Magic Word" operand, iterate over signed/unsigned forms. (neon_vaba): Likewise. (neon_vmax): Remove "Magic Word" operand, iterate over signed/unsigned and max/min forms, and split out... (neon_v<maxmin>f): ...this as new. (neon_vmin): Delete. (neon_vpadd): Remove "Magic Word" operand. (neon_vpaddl): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vpadal): Likewise. (neon_vpmax): Remove "Magic Word" operand, iterate over signed/unsigned and max/min forms, and split out... (neon_vp<maxmin>f): ...this as new. (neon_vpmin): Delete. (neon_vrecps): Remove "Magic Word" operand. (neon_vrsqrts): Likewise. (neon_vabs): Likewise. (neon_vqabs): Likewise. (neon_vneg): Likewise. (neon_vqneg): Likewise. (neon_vcls): Likewise. (neon_vcnt): Likewise. (neon_vrecpe): Likewise. (neon_vrsqrte): Likewise. (neon_vmvn): Likewise. (neon_vget_lane): Likewise. (neon_vget_laneu): New. (neon_vget_lanedi): Remove "Magic Word" operand. (neon_vget_lanev2di): Likewise. (neon_vcvt): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vcvt_n): Likewise. (neon_vmovn): Remove "Magic Word" operand. (neon_vqmovn): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vmovun): Remove "Magic Word" operand. (neon_vmovl): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vmul_lane): Remove "Magic Word" operand. (neon_vmull_lane): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vqdmull_lane): Remove "Magic Word" operand. (neon_vqdmulh_lane): Remove "Magic Word" operand, iterate over rounding variants. (neon_vmla_lane): Remove "Magic Word" operand. (neon_vmlal_lane): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vqdmlal_lane): Remove "Magic Word" operand. (neon_vmls_lane): Likewise. (neon_vmlsl_lane): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vqdmlsl_lane): Remove "Magic Word" operand. (neon_vmul_n): Remove "Magic Word" operand. (neon_vmull_n): Rename to... (neon_vmulls_n): ...this, remove "Magic Word" operand. (neon_vmullu_n): New. (neon_vqdmull_n): Remove "Magic Word" operand. (neon_vqdmulh_n): Likewise. (neon_vqrdmulh_n): New. (neon_vmla_n): Remove "Magic Word" operand. (neon_vmls_n): Likewise. (neon_vmlal_n): Rename to... (neon_vmlals_n): ...this, remove "Magic Word" operand. (neon_vmlalu_n): New. (neon_vqdmlal_n): Remove "Magic Word" operand. (neon_vmlsl_n): Rename to... (neon_vmlsls_n): ...this, remove "Magic Word" operand. (neon_vmlslu_n): New. (neon_vqdmlsl_n): Remove "Magic Word" operand. (neon_vrev64): Remove "Magic Word" operand. (neon_vrev32): Likewise. (neon_vrev16): Likewise. (neon_vshl): Remove "Magic Word" operand, iterate over signed/unsigned and "rounding" forms. (neon_vqshl): Likewise. (neon_vshr_n): Likewise. (neon_vshrn_n): Remove "Magic Word" operand, iterate over "rounding" forms. (neon_vqshrn_n): Remove "Magic Word" operand, iterate over signed/unsigned and "rounding" forms. (neon_vqshrun_n): Remove "Magic Word" operand, iterate over "rounding" forms. (neon_vshl_n): Remove "Magic Word" operand. (neon_vqshl_n): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vqshlu_n): Remove "Magic Word" operand. (neon_vshll_n): Remove "Magic Word" operand, iterate over signed/unsigned variants. (neon_vsra_n): Remove "Magic Word" operand, iterate over signed/unsigned and "rounding" forms. * config/arm/iterators.md (VPF): New. (VADDL): Likewise. (VADDW): Likewise. (VHADD): Likewise. (VQADD): Likewise. (VADDHN): Likewise. (VMLAL): Likewise. (VMLAL_LANE): Likewise. (VLMSL): Likewise. (VMLSL_LANE): Likewise. (VQDMULH): Likewise, (VQDMULH_LANE): Likewise. (VMULL): Likewise. (VMULL_LANE): Likewise. (VSUBL): Likewise. (VSUBW): Likewise. (VHSUB): Likewise. (VQSUB): Likewise. (VSUBHN): Likewise. (VABD): Likewise. (VABDL): Likewise. (VMAXMIN): Likewise. (VMAXMINF): Likewise. (VPADDL): Likewise. (VPADAL): Likewise. (VPMAXMIN): Likewise. (VPMAXMINF): Likewise. (VCVT_US): Likewise. (VCVT_US_N): Likewise. (VQMOVN): Likewise. (VMOVL): Likewise. (VSHL): Likewise. (VQSHL): Likewise. (VSHR_N): Likewise. (VSHRN_N): Likewise. (VQSHRN_N): Likewise. (VQSHRUN_N): Likewise. (VQSHL_N): Likewise. (VSHLL_N): Likewise. (VSRA_N): Likewise. (pf): Likewise. (sup): Likewise. (r): Liekwise. (maxmin): Likewise. (shift_op): Likewise. * config/arm/arm_neon_builtins.def (vaddl): Split to... (vaddls): ...this and... (vaddlu): ...this. (vaddw): Split to... (vaddws): ...this and... (vaddwu): ...this. (vhadd): Split to... (vhadds): ...this and... (vhaddu): ...this and... (vrhadds): ...this and... (vrhaddu): ...this. (vqadd): Split to... (vqadds): ...this and... (vqaddu): ...this. (vaddhn): Split to itself and... (vraddhn): ...this. (vmul): Split to... (vmulf): ...this and... (vmulp): ...this. (vmlal): Split to... (vmlals): ...this and... (vmlalu): ...this. (vmlsl): Split to... (vmlsls): ...this and... (vmlslu): ...this. (vqdmulh): Split to itself and... (vqrdmulh): ...this. (vmull): Split to... (vmullp): ...this and... (vmulls): ...this and... (vmullu): ...this. (vmull_n): Split to... (vmulls_n): ...this and... (vmullu_n): ...this. (vmull_lane): Split to... (vmulls_lane): ...this and... (vmullu_lane): ...this. (vqdmulh_n): Split to itself and... (vqrdmulh_n): ...this. (vqdmulh_lane): Split to itself and... (vqrdmulh_lane): ...this. (vshl): Split to... (vshls): ...this and... (vshlu): ...this and... (vrshls): ...this and... (vrshlu): ...this. (vqshl): Split to... (vqshls): ...this and... (vqrshlu): ...this and... (vqrshls): ...this and... (vqrshlu): ...this. (vshr_n): Split to... (vshrs_n): ...this and... (vshru_n): ...this and... (vrshrs_n): ...this and... (vrshru_n): ...this. (vshrn_n): Split to itself and... (vrshrn_n): ...this. (vqshrn_n): Split to... (vqshrns_n): ...this and... (vqshrnu_n): ...this and... (vqrshrns_n): ...this and... (vqrshrnu_n): ...this. (vqshrun_n): Split to itself and... (vqrshrun_n): ...this. (vqshl_n): Split to... (vqshl_s_n): ...this and... (vqshl_u_n): ...this. (vshll_n): Split to... (vshlls_n): ...this and... (vshllu_n): ...this. (vsra_n): Split to... (vsras_n): ...this and... (vsrau_n): ...this and. (vrsras_n): ...this and... (vrsrau_n): ...this and. (vsubl): Split to... (vsubls): ...this and... (vsublu): ...this. (vsubw): Split to... (vsubws): ...this and... (vsubwu): ...this. (vqsub): Split to... (vqsubs): ...this and... (vqsubu): ...this. (vhsub): Split to... (vhsubs): ...this and... (vhsubu): ...this. (vsubhn): Split to itself and... (vrsubhn): ...this. (vabd): Split to... (vabds): ...this and... (vabdu): ...this and... (vabdf): ...this. (vabdl): Split to... (vabdls): ...this and... (vabdlu): ...this. (vaba): Split to... (vabas): ...this and... (vabau): ...this and... (vabal): Split to... (vabals): ...this and... (vabalu): ...this. (vmax): Split to... (vmaxs): ...this and... (vmaxu): ...this and... (vmaxf): ...this. (vmin): Split to... (vmins): ...this and... (vminu): ...this and... (vminf): ...this. (vpmax): Split to... (vpmaxs): ...this and... (vpmaxu): ...this and... (vpmaxf): ...this. (vpmin): Split to... (vpmins): ...this and... (vpminu): ...this and... (vpminf): ...this. (vpaddl): Split to... (vpaddls): ...this and... (vpaddlu): ...this. (vpadal): Split to... (vpadals): ...this and... (vpadalu): ...this. (vget_laneu): New. (vqmovn): Split to... (vqmovns): ...this and... (vqmovnu): ...this. (vmovl): Split to... (vmovls): ...this and... (vmovlu): ...this. (vmlal_lane): Split to... (vmlals_lane): ...this and... (vmlalu_lane): ...this. (vmlsl_lane): Split to... (vmlsls_lane): ...this and... (vmlslu_lane): ...this. (vmlal_n): Split to... (vmlals_n): ...this and... (vmlalu_n): ...this. (vmlsl_n): Split to... (vmlsls_n): ...this and... (vmlslu_n): ...this. (vext): Make type "SHIFTINSERT". (vcvt): Split to... (vcvts): ...this and... (vcvtu): ...this. (vcvt_n): Split to... (vcvts_n): ...this and... (vcvtu_n): ...this. * config/arm/arm_neon.h (vaddl_s8): Remove "Magic Word". (vaddl_s16): Likewise. (vaddl_s32): Likewise. (vaddl_u8): Likewise. (vaddl_u16): Likewise. (vaddl_u32): Likewise. (vaddw_s8): Likewise. (vaddw_s16): Likewise. (vaddw_s32): Likewise. (vaddw_u8): Likewise. (vaddw_u16): Likewise. (vaddw_u32): Likewise. (vhadd_s8): Likewise. (vhadd_s16): Likewise. (vhadd_s32): Likewise. (vhadd_u8): Likewise. (vhadd_u16): Likewise. (vhadd_u32): Likewise. (vhaddq_s8): Likewise. (vhaddq_s16): Likewise. (vhaddq_s32): Likewise. (vhaddq_u8): Likewise. (vhaddq_u16): Likewise. (vrhadd_s8): Likewise. (vrhadd_s16): Likewise. (vrhadd_s32): Likewise. (vrhadd_u8): Likewise. (vrhadd_u16): Likewise. (vrhadd_u32): Likewise. (vrhaddq_s8): Likewise. (vrhaddq_s16): Likewise. (vrhaddq_s32): Likewise. (vrhaddq_u8): Likewise. (vrhaddq_u16): Likewise. (vrhaddq_u32): Likewise. (vqadd_s8): Likewise. (vqadd_s16): Likewise. (vqadd_s32): Likewise. (vqadd_s64): Likewise. (vqadd_u8): Likewise. (vqadd_u16): Likewise. (vqadd_u32): Likewise. (vqadd_u64): Likewise. (vqaddq_s8): Likewise. (vqaddq_s16): Likewise. (vqaddq_s32): Likewise. (vqaddq_s64): Likewise. (vqaddq_u8): Likewise. (vqaddq_u16): Likewise. (vqaddq_u32): Likewise. (vqaddq_u64): Likewise. (vaddhn_s16): Likewise. (vaddhn_s32): Likewise. (vaddhn_s64): Likewise. (vaddhn_u16): Likewise. (vaddhn_u32): Likewise. (vaddhn_u64): Likewise. (vraddhn_s16): Likewise. (vraddhn_s32): Likewise. (vraddhn_s64): Likewise. (vraddhn_u16): Likewise. (vraddhn_u32): Likewise. (vraddhn_u64): Likewise. (vmul_p8): Likewise. (vmulq_p8): Likewise. (vqdmulh_s16): Likewise. (vqdmulh_s32): Likewise. (vqdmulhq_s16): Likewise. (vqdmulhq_s32): Likewise. (vqrdmulh_s16): Likewise. (vqrdmulh_s32): Likewise. (vqrdmulhq_s16): Likewise. (vqrdmulhq_s32): Likewise. (vmull_s8): Likewise. (vmull_s16): Likewise. (vmull_s32): Likewise. (vmull_u8): Likewise. (vmull_u16): Likewise. (vmull_u32): Likewise. (vmull_p8): Likewise. (vqdmull_s16): Likewise. (vqdmull_s32): Likewise. (vmla_s8): Likewise. (vmla_s16): Likewise. (vmla_s32): Likewise. (vmla_f32): Likewise. (vmla_u8): Likewise. (vmla_u16): Likewise. (vmla_u32): Likewise. (vmlaq_s8): Likewise. (vmlaq_s16): Likewise. (vmlaq_s32): Likewise. (vmlaq_f32): Likewise. (vmlaq_u8): Likewise. (vmlaq_u16): Likewise. (vmlaq_u32): Likewise. (vmlal_s8): Likewise. (vmlal_s16): Likewise. (vmlal_s32): Likewise. (vmlal_u8): Likewise. (vmlal_u16): Likewise. (vmlal_u32): Likewise. (vqdmlal_s16): Likewise. (vqdmlal_s32): Likewise. (vmls_s8): Likewise. (vmls_s16): Likewise. (vmls_s32): Likewise. (vmls_f32): Likewise. (vmls_u8): Likewise. (vmls_u16): Likewise. (vmls_u32): Likewise. (vmlsq_s8): Likewise. (vmlsq_s16): Likewise. (vmlsq_s32): Likewise. (vmlsq_f32): Likewise. (vmlsq_u8): Likewise. (vmlsq_u16): Likewise. (vmlsq_u32): Likewise. (vmlsl_s8): Likewise. (vmlsl_s16): Likewise. (vmlsl_s32): Likewise. (vmlsl_u8): Likewise. (vmlsl_u16): Likewise. (vmlsl_u32): Likewise. (vqdmlsl_s16): Likewise. (vqdmlsl_s32): Likewise. (vfma_f32): Likewise. (vfmaq_f32): Likewise. (vfms_f32): Likewise. (vfmsq_f32): Likewise. (vsubl_s8): Likewise. (vsubl_s16): Likewise. (vsubl_s32): Likewise. (vsubl_u8): Likewise. (vsubl_u16): Likewise. (vsubl_u32): Likewise. (vsubw_s8): Likewise. (vsubw_s16): Likewise. (vsubw_s32): Likewise. (vsubw_u8): Likewise. (vsubw_u16): Likewise. (vsubw_u32): Likewise. (vhsub_s8): Likewise. (vhsub_s16): Likewise. (vhsub_s32): Likewise. (vhsub_u8): Likewise. (vhsub_u16): Likewise. (vhsub_u32): Likewise. (vhsubq_s8): Likewise. (vhsubq_s16): Likewise. (vhsubq_s32): Likewise. (vhsubq_u8): Likewise. (vhsubq_u16): Likewise. (vhsubq_u32): Likewise. (vqsub_s8): Likewise. (vqsub_s16): Likewise. (vqsub_s32): Likewise. (vqsub_s64): Likewise. (vqsub_u8): Likewise. (vqsub_u16): Likewise. (vqsub_u32): Likewise. (vqsub_u64): Likewise. (vqsubq_s8): Likewise. (vqsubq_s16): Likewise. (vqsubq_s32): Likewise. (vqsubq_s64): Likewise. (vqsubq_u8): Likewise. (vqsubq_u16): Likewise. (vqsubq_u32): Likewise. (vqsubq_u64): Likewise. (vsubhn_s16): Likewise. (vsubhn_s32): Likewise. (vsubhn_s64): Likewise. (vsubhn_u16): Likewise. (vsubhn_u32): Likewise. (vsubhn_u64): Likewise. (vrsubhn_s16): Likewise. (vrsubhn_s32): Likewise. (vrsubhn_s64): Likewise. (vrsubhn_u16): Likewise. (vrsubhn_u32): Likewise. (vrsubhn_u64): Likewise. (vceq_s8): Likewise. (vceq_s16): Likewise. (vceq_s32): Likewise. (vceq_f32): Likewise. (vceq_u8): Likewise. (vceq_u16): Likewise. (vceq_u32): Likewise. (vceq_p8): Likewise. (vceqq_s8): Likewise. (vceqq_s16): Likewise. (vceqq_s32): Likewise. (vceqq_f32): Likewise. (vceqq_u8): Likewise. (vceqq_u16): Likewise. (vceqq_u32): Likewise. (vceqq_p8): Likewise. (vcge_s8): Likewise. (vcge_s16): Likewise. (vcge_s32): Likewise. (vcge_f32): Likewise. (vcge_u8): Likewise. (vcge_u16): Likewise. (vcge_u32): Likewise. (vcgeq_s8): Likewise. (vcgeq_s16): Likewise. (vcgeq_s32): Likewise. (vcgeq_f32): Likewise. (vcgeq_u8): Likewise. (vcgeq_u16): Likewise. (vcgeq_u32): Likewise. (vcle_s8): Likewise. (vcle_s16): Likewise. (vcle_s32): Likewise. (vcle_f32): Likewise. (vcle_u8): Likewise. (vcle_u16): Likewise. (vcle_u32): Likewise. (vcleq_s8): Likewise. (vcleq_s16): Likewise. (vcleq_s32): Likewise. (vcleq_f32): Likewise. (vcleq_u8): Likewise. (vcleq_u16): Likewise. (vcleq_u32): Likewise. (vcgt_s8): Likewise. (vcgt_s16): Likewise. (vcgt_s32): Likewise. (vcgt_f32): Likewise. (vcgt_u8): Likewise. (vcgt_u16): Likewise. (vcgt_u32): Likewise. (vcgtq_s8): Likewise. (vcgtq_s16): Likewise. (vcgtq_s32): Likewise. (vcgtq_f32): Likewise. (vcgtq_u8): Likewise. (vcgtq_u16): Likewise. (vcgtq_u32): Likewise. (vclt_s8): Likewise. (vclt_s16): Likewise. (vclt_s32): Likewise. (vclt_f32): Likewise. (vclt_u8): Likewise. (vclt_u16): Likewise. (vclt_u32): Likewise. (vcltq_s8): Likewise. (vcltq_s16): Likewise. (vcltq_s32): Likewise. (vcltq_f32): Likewise. (vcltq_u8): Likewise. (vcltq_u16): Likewise. (vcltq_u32): Likewise. (vcage_f32): Likewise. (vcageq_f32): Likewise. (vcale_f32): Likewise. (vcaleq_f32): Likewise. (vcagt_f32): Likewise. (vcagtq_f32): Likewise. (vcalt_f32): Likewise. (vcaltq_f32): Likewise. (vtst_s8): Likewise. (vtst_s16): Likewise. (vtst_s32): Likewise. (vtst_u8): Likewise. (vtst_u16): Likewise. (vtst_u32): Likewise. (vtst_p8): Likewise. (vtstq_s8): Likewise. (vtstq_s16): Likewise. (vtstq_s32): Likewise. (vtstq_u8): Likewise. (vtstq_u16): Likewise. (vtstq_u32): Likewise. (vtstq_p8): Likewise. (vabd_s8): Likewise. (vabd_s16): Likewise. (vabd_s32): Likewise. (vabd_f32): Likewise. (vabd_u8): Likewise. (vabd_u16): Likewise. (vabd_u32): Likewise. (vabdq_s8): Likewise. (vabdq_s16): Likewise. (vabdq_s32): Likewise. (vabdq_f32): Likewise. (vabdq_u8): Likewise. (vabdq_u16): Likewise. (vabdq_u32): Likewise. (vabdl_s8): Likewise. (vabdl_s16): Likewise. (vabdl_s32): Likewise. (vabdl_u8): Likewise. (vabdl_u16): Likewise. (vabdl_u32): Likewise. (vaba_s8): Likewise. (vaba_s16): Likewise. (vaba_s32): Likewise. (vaba_u8): Likewise. (vaba_u16): Likewise. (vaba_u32): Likewise. (vabaq_s8): Likewise. (vabaq_s16): Likewise. (vabaq_s32): Likewise. (vabaq_u8): Likewise. (vabaq_u16): Likewise. (vabaq_u32): Likewise. (vabal_s8): Likewise. (vabal_s16): Likewise. (vabal_s32): Likewise. (vabal_u8): Likewise. (vabal_u16): Likewise. (vabal_u32): Likewise. (vmax_s8): Likewise. (vmax_s16): Likewise. (vmax_s32): Likewise. (vmax_f32): Likewise. (vmax_u8): Likewise. (vmax_u16): Likewise. (vmax_u32): Likewise. (vmaxq_s8): Likewise. (vmaxq_s16): Likewise. (vmaxq_s32): Likewise. (vmaxq_f32): Likewise. (vmaxq_u8): Likewise. (vmaxq_u16): Likewise. (vmaxq_u32): Likewise. (vmin_s8): Likewise. (vmin_s16): Likewise. (vmin_s32): Likewise. (vmin_f32): Likewise. (vmin_u8): Likewise. (vmin_u16): Likewise. (vmin_u32): Likewise. (vminq_s8): Likewise. (vminq_s16): Likewise. (vminq_s32): Likewise. (vminq_f32): Likewise. (vminq_u8): Likewise. (vminq_u16): Likewise. (vminq_u32): Likewise. (vpadd_s8): Likewise. (vpadd_s16): Likewise. (vpadd_s32): Likewise. (vpadd_f32): Likewise. (vpadd_u8): Likewise. (vpadd_u16): Likewise. (vpadd_u32): Likewise. (vpaddl_s8): Likewise. (vpaddl_s16): Likewise. (vpaddl_s32): Likewise. (vpaddl_u8): Likewise. (vpaddl_u16): Likewise. (vpaddl_u32): Likewise. (vpaddlq_s8): Likewise. (vpaddlq_s16): Likewise. (vpaddlq_s32): Likewise. (vpaddlq_u8): Likewise. (vpaddlq_u16): Likewise. (vpaddlq_u32): Likewise. (vpadal_s8): Likewise. (vpadal_s16): Likewise. (vpadal_s32): Likewise. (vpadal_u8): Likewise. (vpadal_u16): Likewise. (vpadal_u32): Likewise. (vpadalq_s8): Likewise. (vpadalq_s16): Likewise. (vpadalq_s32): Likewise. (vpadalq_u8): Likewise. (vpadalq_u16): Likewise. (vpadalq_u32): Likewise. (vpmax_s8): Likewise. (vpmax_s16): Likewise. (vpmax_s32): Likewise. (vpmax_f32): Likewise. (vpmax_u8): Likewise. (vpmax_u16): Likewise. (vpmax_u32): Likewise. (vpmin_s8): Likewise. (vpmin_s16): Likewise. (vpmin_s32): Likewise. (vpmin_f32): Likewise. (vpmin_u8): Likewise. (vpmin_u16): Likewise. (vpmin_u32): Likewise. (vrecps_f32): Likewise. (vrecpsq_f32): Likewise. (vrsqrts_f32): Likewise. (vrsqrtsq_f32): Likewise. (vshl_s8): Likewise. (vshl_s16): Likewise. (vshl_s32): Likewise. (vshl_s64): Likewise. (vshl_u8): Likewise. (vshl_u16): Likewise. (vshl_u32): Likewise. (vshl_u64): Likewise. (vshlq_s8): Likewise. (vshlq_s16): Likewise. (vshlq_s32): Likewise. (vshlq_s64): Likewise. (vshlq_u8): Likewise. (vshlq_u16): Likewise. (vshlq_u32): Likewise. (vshlq_u64): Likewise. (vrshl_s8): Likewise. (vrshl_s16): Likewise. (vrshl_s32): Likewise. (vrshl_s64): Likewise. (vrshl_u8): Likewise. (vrshl_u16): Likewise. (vrshl_u32): Likewise. (vrshl_u64): Likewise. (vrshlq_s8): Likewise. (vrshlq_s16): Likewise. (vrshlq_s32): Likewise. (vrshlq_s64): Likewise. (vrshlq_u8): Likewise. (vrshlq_u16): Likewise. (vrshlq_u32): Likewise. (vrshlq_u64): Likewise. (vqshl_s8): Likewise. (vqshl_s16): Likewise. (vqshl_s32): Likewise. (vqshl_s64): Likewise. (vqshl_u8): Likewise. (vqshl_u16): Likewise. (vqshl_u32): Likewise. (vqshl_u64): Likewise. (vqshlq_s8): Likewise. (vqshlq_s16): Likewise. (vqshlq_s32): Likewise. (vqshlq_s64): Likewise. (vqshlq_u8): Likewise. (vqshlq_u16): Likewise. (vqshlq_u32): Likewise. (vqshlq_u64): Likewise. (vqrshl_s8): Likewise. (vqrshl_s16): Likewise. (vqrshl_s32): Likewise. (vqrshl_s64): Likewise. (vqrshl_u8): Likewise. (vqrshl_u16): Likewise. (vqrshl_u32): Likewise. (vqrshl_u64): Likewise. (vqrshlq_s8): Likewise. (vqrshlq_s16): Likewise. (vqrshlq_s32): Likewise. (vqrshlq_s64): Likewise. (vqrshlq_u8): Likewise. (vqrshlq_u16): Likewise. (vqrshlq_u32): Likewise. (vqrshlq_u64): Likewise. (vshr_n_s8): Likewise. (vshr_n_s16): Likewise. (vshr_n_s32): Likewise. (vshr_n_s64): Likewise. (vshr_n_u8): Likewise. (vshr_n_u16): Likewise. (vshr_n_u32): Likewise. (vshr_n_u64): Likewise. (vshrq_n_s8): Likewise. (vshrq_n_s16): Likewise. (vshrq_n_s32): Likewise. (vshrq_n_s64): Likewise. (vshrq_n_u8): Likewise. (vshrq_n_u16): Likewise. (vshrq_n_u32): Likewise. (vshrq_n_u64): Likewise. (vrshr_n_s8): Likewise. (vrshr_n_s16): Likewise. (vrshr_n_s32): Likewise. (vrshr_n_s64): Likewise. (vrshr_n_u8): Likewise. (vrshr_n_u16): Likewise. (vrshr_n_u32): Likewise. (vrshr_n_u64): Likewise. (vrshrq_n_s8): Likewise. (vrshrq_n_s16): Likewise. (vrshrq_n_s32): Likewise. (vrshrq_n_s64): Likewise. (vrshrq_n_u8): Likewise. (vrshrq_n_u16): Likewise. (vrshrq_n_u32): Likewise. (vrshrq_n_u64): Likewise. (vshrn_n_s16): Likewise. (vshrn_n_s32): Likewise. (vshrn_n_s64): Likewise. (vshrn_n_u16): Likewise. (vshrn_n_u32): Likewise. (vshrn_n_u64): Likewise. (vrshrn_n_s16): Likewise. (vrshrn_n_s32): Likewise. (vrshrn_n_s64): Likewise. (vrshrn_n_u16): Likewise. (vrshrn_n_u32): Likewise. (vrshrn_n_u64): Likewise. (vqshrn_n_s16): Likewise. (vqshrn_n_s32): Likewise. (vqshrn_n_s64): Likewise. (vqshrn_n_u16): Likewise. (vqshrn_n_u32): Likewise. (vqshrn_n_u64): Likewise. (vqrshrn_n_s16): Likewise. (vqrshrn_n_s32): Likewise. (vqrshrn_n_s64): Likewise. (vqrshrn_n_u16): Likewise. (vqrshrn_n_u32): Likewise. (vqrshrn_n_u64): Likewise. (vqshrun_n_s16): Likewise. (vqshrun_n_s32): Likewise. (vqshrun_n_s64): Likewise. (vqrshrun_n_s16): Likewise. (vqrshrun_n_s32): Likewise. (vqrshrun_n_s64): Likewise. (vshl_n_s8): Likewise. (vshl_n_s16): Likewise. (vshl_n_s32): Likewise. (vshl_n_s64): Likewise. (vshl_n_u8): Likewise. (vshl_n_u16): Likewise. (vshl_n_u32): Likewise. (vshl_n_u64): Likewise. (vshlq_n_s8): Likewise. (vshlq_n_s16): Likewise. (vshlq_n_s32): Likewise. (vshlq_n_s64): Likewise. (vshlq_n_u8): Likewise. (vshlq_n_u16): Likewise. (vshlq_n_u32): Likewise. (vshlq_n_u64): Likewise. (vqshl_n_s8): Likewise. (vqshl_n_s16): Likewise. (vqshl_n_s32): Likewise. (vqshl_n_s64): Likewise. (vqshl_n_u8): Likewise. (vqshl_n_u16): Likewise. (vqshl_n_u32): Likewise. (vqshl_n_u64): Likewise. (vqshlq_n_s8): Likewise. (vqshlq_n_s16): Likewise. (vqshlq_n_s32): Likewise. (vqshlq_n_s64): Likewise. (vqshlq_n_u8): Likewise. (vqshlq_n_u16): Likewise. (vqshlq_n_u32): Likewise. (vqshlq_n_u64): Likewise. (vqshlu_n_s8): Likewise. (vqshlu_n_s16): Likewise. (vqshlu_n_s32): Likewise. (vqshlu_n_s64): Likewise. (vqshluq_n_s8): Likewise. (vqshluq_n_s16): Likewise. (vqshluq_n_s32): Likewise. (vqshluq_n_s64): Likewise. (vshll_n_s8): Likewise. (vshll_n_s16): Likewise. (vshll_n_s32): Likewise. (vshll_n_u8): Likewise. (vshll_n_u16): Likewise. (vshll_n_u32): Likewise. (vsra_n_s8): Likewise. (vsra_n_s16): Likewise. (vsra_n_s32): Likewise. (vsra_n_s64): Likewise. (vsra_n_u8): Likewise. (vsra_n_u16): Likewise. (vsra_n_u32): Likewise. (vsra_n_u64): Likewise. (vsraq_n_s8): Likewise. (vsraq_n_s16): Likewise. (vsraq_n_s32): Likewise. (vsraq_n_s64): Likewise. (vsraq_n_u8): Likewise. (vsraq_n_u16): Likewise. (vsraq_n_u32): Likewise. (vsraq_n_u64): Likewise. (vrsra_n_s8): Likewise. (vrsra_n_s16): Likewise. (vrsra_n_s32): Likewise. (vrsra_n_s64): Likewise. (vrsra_n_u8): Likewise. (vrsra_n_u16): Likewise. (vrsra_n_u32): Likewise. (vrsra_n_u64): Likewise. (vrsraq_n_s8): Likewise. (vrsraq_n_s16): Likewise. (vrsraq_n_s32): Likewise. (vrsraq_n_s64): Likewise. (vrsraq_n_u8): Likewise. (vrsraq_n_u16): Likewise. (vrsraq_n_u32): Likewise. (vrsraq_n_u64): Likewise. (vabs_s8): Likewise. (vabs_s16): Likewise. (vabs_s32): Likewise. (vabs_f32): Likewise. (vabsq_s8): Likewise. (vabsq_s16): Likewise. (vabsq_s32): Likewise. (vabsq_f32): Likewise. (vqabs_s8): Likewise. (vqabs_s16): Likewise. (vqabs_s32): Likewise. (vqabsq_s8): Likewise. (vqabsq_s16): Likewise. (vqabsq_s32): Likewise. (vneg_s8): Likewise. (vneg_s16): Likewise. (vneg_s32): Likewise. (vneg_f32): Likewise. (vnegq_s8): Likewise. (vnegq_s16): Likewise. (vnegq_s32): Likewise. (vnegq_f32): Likewise. (vqneg_s8): Likewise. (vqneg_s16): Likewise. (vqneg_s32): Likewise. (vqnegq_s8): Likewise. (vqnegq_s16): Likewise. (vqnegq_s32): Likewise. (vmvn_s8): Likewise. (vmvn_s16): Likewise. (vmvn_s32): Likewise. (vmvn_u8): Likewise. (vmvn_u16): Likewise. (vmvn_u32): Likewise. (vmvn_p8): Likewise. (vmvnq_s8): Likewise. (vmvnq_s16): Likewise. (vmvnq_s32): Likewise. (vmvnq_u8): Likewise. (vmvnq_u16): Likewise. (vmvnq_u32): Likewise. (vmvnq_p8): Likewise. (vcls_s8): Likewise. (vcls_s16): Likewise. (vcls_s32): Likewise. (vclsq_s8): Likewise. (vclsq_s16): Likewise. (vclsq_s32): Likewise. (vclz_s8): Likewise. (vclz_s16): Likewise. (vclz_s32): Likewise. (vclz_u8): Likewise. (vclz_u16): Likewise. (vclz_u32): Likewise. (vclzq_s8): Likewise. (vclzq_s16): Likewise. (vclzq_s32): Likewise. (vclzq_u8): Likewise. (vclzq_u16): Likewise. (vclzq_u32): Likewise. (vcnt_s8): Likewise. (vcnt_u8): Likewise. (vcnt_p8): Likewise. (vcntq_s8): Likewise. (vcntq_u8): Likewise. (vcntq_p8): Likewise. (vrecpe_f32): Likewise. (vrecpe_u32): Likewise. (vrecpeq_f32): Likewise. (vrecpeq_u32): Likewise. (vrsqrte_f32): Likewise. (vrsqrte_u32): Likewise. (vrsqrteq_f32): Likewise. (vrsqrteq_u32): Likewise. (vget_lane_s8): Likewise. (vget_lane_s16): Likewise. (vget_lane_s32): Likewise. (vget_lane_f32): Likewise. (vget_lane_u8): Likewise. (vget_lane_u16): Likewise. (vget_lane_u32): Likewise. (vget_lane_p8): Likewise. (vget_lane_p16): Likewise. (vget_lane_s64): Likewise. (vget_lane_u64): Likewise. (vgetq_lane_s8): Likewise. (vgetq_lane_s16): Likewise. (vgetq_lane_s32): Likewise. (vgetq_lane_f32): Likewise. (vgetq_lane_u8): Likewise. (vgetq_lane_u16): Likewise. (vgetq_lane_u32): Likewise. (vgetq_lane_p8): Likewise. (vgetq_lane_p16): Likewise. (vgetq_lane_s64): Likewise. (vgetq_lane_u64): Likewise. (vcvt_s32_f32): Likewise. (vcvt_f32_s32): Likewise. (vcvt_f32_u32): Likewise. (vcvt_u32_f32): Likewise. (vcvtq_s32_f32): Likewise. (vcvtq_f32_s32): Likewise. (vcvtq_f32_u32): Likewise. (vcvtq_u32_f32): Likewise. (vcvt_n_s32_f32): Likewise. (vcvt_n_f32_s32): Likewise. (vcvt_n_f32_u32): Likewise. (vcvt_n_u32_f32): Likewise. (vcvtq_n_s32_f32): Likewise. (vcvtq_n_f32_s32): Likewise. (vcvtq_n_f32_u32): Likewise. (vcvtq_n_u32_f32): Likewise. (vmovn_s16): Likewise. (vmovn_s32): Likewise. (vmovn_s64): Likewise. (vmovn_u16): Likewise. (vmovn_u32): Likewise. (vmovn_u64): Likewise. (vqmovn_s16): Likewise. (vqmovn_s32): Likewise. (vqmovn_s64): Likewise. (vqmovn_u16): Likewise. (vqmovn_u32): Likewise. (vqmovn_u64): Likewise. (vqmovun_s16): Likewise. (vqmovun_s32): Likewise. (vqmovun_s64): Likewise. (vmovl_s8): Likewise. (vmovl_s16): Likewise. (vmovl_s32): Likewise. (vmovl_u8): Likewise. (vmovl_u16): Likewise. (vmovl_u32): Likewise. (vmul_lane_s16): Likewise. (vmul_lane_s32): Likewise. (vmul_lane_f32): Likewise. (vmul_lane_u16): Likewise. (vmul_lane_u32): Likewise. (vmulq_lane_s16): Likewise. (vmulq_lane_s32): Likewise. (vmulq_lane_f32): Likewise. (vmulq_lane_u16): Likewise. (vmulq_lane_u32): Likewise. (vmla_lane_s16): Likewise. (vmla_lane_s32): Likewise. (vmla_lane_f32): Likewise. (vmla_lane_u16): Likewise. (vmla_lane_u32): Likewise. (vmlaq_lane_s16): Likewise. (vmlaq_lane_s32): Likewise. (vmlaq_lane_f32): Likewise. (vmlaq_lane_u16): Likewise. (vmlaq_lane_u32): Likewise. (vmlal_lane_s16): Likewise. (vmlal_lane_s32): Likewise. (vmlal_lane_u16): Likewise. (vmlal_lane_u32): Likewise. (vqdmlal_lane_s16): Likewise. (vqdmlal_lane_s32): Likewise. (vmls_lane_s16): Likewise. (vmls_lane_s32): Likewise. (vmls_lane_f32): Likewise. (vmls_lane_u16): Likewise. (vmls_lane_u32): Likewise. (vmlsq_lane_s16): Likewise. (vmlsq_lane_s32): Likewise. (vmlsq_lane_f32): Likewise. (vmlsq_lane_u16): Likewise. (vmlsq_lane_u32): Likewise. (vmlsl_lane_s16): Likewise. (vmlsl_lane_s32): Likewise. (vmlsl_lane_u16): Likewise. (vmlsl_lane_u32): Likewise. (vqdmlsl_lane_s16): Likewise. (vqdmlsl_lane_s32): Likewise. (vmull_lane_s16): Likewise. (vmull_lane_s32): Likewise. (vmull_lane_u16): Likewise. (vmull_lane_u32): Likewise. (vqdmull_lane_s16): Likewise. (vqdmull_lane_s32): Likewise. (vqdmulhq_lane_s16): Likewise. (vqdmulhq_lane_s32): Likewise. (vqdmulh_lane_s16): Likewise. (vqdmulh_lane_s32): Likewise. (vqrdmulhq_lane_s16): Likewise. (vqrdmulhq_lane_s32): Likewise. (vqrdmulh_lane_s16): Likewise. (vqrdmulh_lane_s32): Likewise. (vmul_n_s16): Likewise. (vmul_n_s32): Likewise. (vmul_n_f32): Likewise. (vmul_n_u16): Likewise. (vmul_n_u32): Likewise. (vmulq_n_s16): Likewise. (vmulq_n_s32): Likewise. (vmulq_n_f32): Likewise. (vmulq_n_u16): Likewise. (vmulq_n_u32): Likewise. (vmull_n_s16): Likewise. (vmull_n_s32): Likewise. (vmull_n_u16): Likewise. (vmull_n_u32): Likewise. (vqdmull_n_s16): Likewise. (vqdmull_n_s32): Likewise. (vqdmulhq_n_s16): Likewise. (vqdmulhq_n_s32): Likewise. (vqdmulh_n_s16): Likewise. (vqdmulh_n_s32): Likewise. (vqrdmulhq_n_s16): Likewise. (vqrdmulhq_n_s32): Likewise. (vqrdmulh_n_s16): Likewise. (vqrdmulh_n_s32): Likewise. (vmla_n_s16): Likewise. (vmla_n_s32): Likewise. (vmla_n_f32): Likewise. (vmla_n_u16): Likewise. (vmla_n_u32): Likewise. (vmlaq_n_s16): Likewise. (vmlaq_n_s32): Likewise. (vmlaq_n_f32): Likewise. (vmlaq_n_u16): Likewise. (vmlaq_n_u32): Likewise. (vmlal_n_s16): Likewise. (vmlal_n_s32): Likewise. (vmlal_n_u16): Likewise. (vmlal_n_u32): Likewise. (vqdmlal_n_s16): Likewise. (vqdmlal_n_s32): Likewise. (vmls_n_s16): Likewise. (vmls_n_s32): Likewise. (vmls_n_f32): Likewise. (vmls_n_u16): Likewise. (vmls_n_u32): Likewise. (vmlsq_n_s16): Likewise. (vmlsq_n_s32): Likewise. (vmlsq_n_f32): Likewise. (vmlsq_n_u16): Likewise. (vmlsq_n_u32): Likewise. (vmlsl_n_s16): Likewise. (vmlsl_n_s32): Likewise. (vmlsl_n_u16): Likewise. (vmlsl_n_u32): Likewise. (vqdmlsl_n_s16): Likewise. (vqdmlsl_n_s32): Likewise. 2014-11-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.c (arm_new_rtx_costs, case PLUS, MINUS): Add cost of alu.arith in simple SImode case. 2014-11-18 Jiong Wang <jiong.wang@arm.com> * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed registers. 2014-11-18 Marat Zakirov <m.zakirov@samsung.com> * opts.c (finish_options): Disable aggressive opts for sanitizer. (common_handle_option): Move code to finish_options. 2014-11-18 Yury Gribov <y.gribov@samsung.com> PR sanitizer/63802 * stor-layout.c (min_align_of_type): Respect user alignment more. 2014-11-18 Ilya Enkovich <ilya.enkovich@intel.com> * passes.c (remove_cgraph_node_from_order): New. (do_per_function_toporder): Register cgraph removal hook. 2014-11-17 Terry Guo <terry.guo@arm.com> * config/arm/arm.c (arm_issue_rate): Return 2 for cortex-m7. * config/arm/arm.md (generic_sched): Exclude cortex-m7. (generic_vfp): Likewise. * config/arm/cortex-m7.md: Pipeline description for cortex-m7. 2014-11-17 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/63906 * lra-remat.c (operand_to_remat): Check SP and frame_pointer_required. 2014-11-17 Mircea Namolaru <mircea.namolaru@inria.fr> * doc/invoke.texi (floop-unroll-and-jam): Document (loop-unroll-jam-size): Likewise. (loop-unroll-jam-depth): Likewise. * graphite-optimize-isl.c (getPrevectorMap_full): Modify comment. (getScheduleForBandList): Replaced unsafe union_map reuse. 2014-11-17 Andrew Pinski <apinski@cavium.com> * config/aarch64/thunderx.md: Remove copyright which should not have been there. 2014-11-17 Michael Meissner <meissner@linux.vnet.ibm.com> Ulrich Weigand <Ulrich.Weigand@de.ibm.com> * config/rs6000/rs6000.c (RELOAD_REG_AND_M16): Add support for Altivec style vector loads that ignore the bottom 3 bits of the address. (rs6000_debug_addr_mask): New function to print the addr_mask values if debugging. (rs6000_debug_print_mode): Call rs6000_debug_addr_mask to print out addr_mask. (rs6000_setup_reg_addr_masks): Add support for Altivec style vector loads that ignore the bottom 3 bits of the address. Allow pre-increment and pre-decrement on floating point, even if the -mupper-regs-{sf,df} options were used. (rs6000_init_hard_regno_mode_ok): Rework DFmode support if -mupper-regs-df. Add support for -mupper-regs-sf. Rearrange code placement for direct move support. (rs6000_option_override_internal): Add checks for -mupper-regs-df requiring -mvsx, and -mupper-regs-sf requiring -mpower8-vector. If -mupper-regs, set both -mupper-regs-sf and -mupper-regs-df, depending on the underlying cpu. (rs6000_secondary_reload_fail): Add ATTRIBUTE_NORETURN. (rs6000_secondary_reload_toc_costs): Helper function to identify costs of a TOC load for secondary reload support. (rs6000_secondary_reload_memory): Helper function for secondary reload, to determine if a particular memory operation is directly handled by the hardware, or if it needs support from secondary reload to create a valid address. (rs6000_secondary_reload): Rework code, to be clearer. If the appropriate -mupper-regs-{sf,df} is used, use FPR registers to reload scalar values, since the FPR registers have D-form addressing. Move most of the code handling memory to the function rs6000_secondary_reload_memory, and use the reg_addr structure to determine what type of address modes are supported. Print more debug information if -mdebug=addr. (rs6000_secondary_reload_inner): Rework entire function to be more general. Use the reg_addr bits to determine what type of addressing is supported. (rs6000_preferred_reload_class): Rework. Move constant handling into a single place. Prefer using FLOAT_REGS for scalar floating point. (rs6000_secondary_reload_class): Use a FPR register to move a value from an Altivec register to a GPR, and vice versa. Move VSX handling above traditional floating point. * config/rs6000/rs6000.md (mov<mode>_hardfloat, FMOVE32 case): Delete some spaces in the constraints. (DF->DF move peephole2): Disable if -mupper-regs-{sf,df} to allow using FPR registers to load/store an Altivec register for scalar floating point types. (SF->SF move peephole2): Likewise. (DFmode splitter): Add a define_split to move floating point constants to the constant pool before register allocation. Normally constants are put into the pool immediately, but -ffast-math delays putting them into the constant pool for the reciprocal approximation support. (SFmode splitter): Likewise. * config/rs6000/rs6000.opt (-mupper-regs-df): Make option public. (-mupper-regs-sf): Likewise. * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define __UPPER_REGS_DF__ if -mupper-regs-df. Define __UPPER_REGS_SF__ if -mupper-regs-sf. (-mupper-regs): New combination option that sets -mupper-regs-sf and -mupper-regs-df by default if the cpu supports the instructions. * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mupper-regs, -mupper-regs-sf, and -mupper-regs-df. * config/rs6000/predicates.md (memory_fp_constant): New predicate to return true if the operand is a floating point constant that must be put into the constant pool, before register allocation occurs. * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Enable -mupper-regs-df by default. (ISA_2_7_MASKS_SERVER): Enable -mupper-regs-sf by default. (POWERPC_MASKS): Add -mupper-regs-{sf,df} as options set by the various -mcpu=... options. (power7 cpu): Enable -mupper-regs-df by default. * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mupper-regs. 2014-11-17 Zhouyi Zhou <yizhouzhou@ict.ac.cn> * ira-conflicts.c (build_conflict_bit_table): Add the current object to OBJECTS_LIVE after traversing OBJECTS_LIVE. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * ipa-cp.c (ipa_get_indirect_edge_target_1): Handle speculation. (ipa_get_indirect_edge_target): Add SPECULATIVE argument. (devirtualization_time_bonus): Use it. (ipcp_discover_new_direct_edges): Likewise. * ipa-inline-analysis.c (estimate_edge_devirt_benefit): Update. * ipa-prop.h (ipa_get_indirect_edge_target): Update prototype. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * tree.c (free_lang_data_in_decl): Set DECL_FUNCTION_SPECIFIC_OPTIMIZATION to optimization_default_node. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * cgraphunit.c (analyze_functions): Use opt_for_fn. * cgraph.h (cgraph_node::optimize_for_size_p): Likewise. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * cgraph.c (symbol_table::create_edge): Use opt_for_fn. (cgraph_node::cannot_return_p): Likewise. (cgraph_edge::cannot_lead_to_return_p): Likewise. (cgraph_edge::maybe_hot_p): Likewise. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * predict.c (maybe_hot_frequency_p): Use opt_for_fn. (optimize_function_for_size_p): Likewise. (probably_never_executed): Likewise; replace cfun by fun. 2014-11-17 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Add variant reading from memory and assembling to ld1. * config/aarch64/arm_neon.h (vld1_lane_f32, vld1_lane_f64, vld1_lane_p8, vld1_lane_p16, vld1_lane_s8, vld1_lane_s16, vld1_lane_s32, vld1_lane_s64, vld1_lane_u8, vld1_lane_u16, vld1_lane_u32, vld1_lane_u64, vld1q_lane_f32, vld1q_lane_f64, vld1q_lane_p8, vld1q_lane_p16, vld1q_lane_s8, vld1q_lane_s16, vld1q_lane_s32, vld1q_lane_s64, vld1q_lane_u8, vld1q_lane_u16, vld1q_lane_u32, vld1q_lane_u64): Replace asm with vset_lane and pointer dereference. 2014-11-17 Jason Merrill <jason@redhat.com> * tree-inline.c (copy_fn): New. * tree-inline.h: Declare it. 2014-11-17 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64-builtins.c (TYPES_CREATE): Remove. * config/aarch64/aarch64-simd-builtins.def (create): Remove. * config/aarch64/aarch64-simd.md (aarch64_create<mode>): Remove. * config/aarch64/arm_neon.h (vcreate_f64, vreinterpret_f64_s64, vreinterpret_f64_u64): Replace __builtin_aarch64_createv1df with C casts. * config/aarch64/iterators.md (VD1): Remove. 2014-11-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64-cores.def (cortex-a53): Remove AARCH64_FL_CRYPTO from feature flags. (cortex-a57): Likewise. (cortex-a57.cortex-a53): Likewise. 2014-11-17 Jan Hubicka <hubicka@ucw.cz> * tree.c (free_lang_data_in_decl): Annotate all functio nbodies with DECL_FUNCTION_SPECIFIC_TARGET. * i386.c (ix86_set_current_function): Handle explicit default options. 2014-11-17 Ilya Enkovich <ilya.enkovich@intel.com> * builtins.c (expand_builtin_memcpy_with_bounds): Use target hook instead of BNDmode. (expand_builtin_mempcpy_with_bounds): Likewise. (expand_builtin_memset_with_bounds): Likewise. 2014-11-17 Ilya Enkovich <ilya.enkovich@intel.com> * tree-ssa-strlen.c: include ipa-chkp.h, cgraph.h, ipa-ref.h, plugin-api.h. (get_string_length): Handle calls with bounds. (adjust_last_stmt): Likewise. (handle_builtin_strchr): Likewise. (handle_builtin_strcpy): Likewise. (handle_builtin_memcpy): Likewise. (handle_builtin_strcat): Likewise. 2014-11-17 Ilya Enkovich <ilya.enkovich@intel.com> * tree-chkp-opt.c (chkp_get_nobnd_fndecl): New. (chkp_get_nochk_fndecl): New. (chkp_optimize_string_function_calls): New. (chkp_opt_execute): Call chkp_optimize_string_function_calls. * tree-cfg.h (insert_cond_bb): New. * tree-cfg.c (insert_cond_bb): New. 2014-11-17 Ilya Enkovich <ilya.enkovich@intel.com> * tree-core.h (built_in_class): Add builtin codes to be used by Pointer Bounds Checker for instrumented builtin functions. * tree-streamer-in.c: Include ipa-chkp.h. (streamer_get_builtin_tree): Created instrumented decl if required. * ipa-chkp.h (chkp_maybe_clone_builtin_fndecl): New. * ipa-chkp.c (chkp_build_instrumented_fndecl): Support builtin function decls. (chkp_maybe_clone_builtin_fndecl): New. (chkp_maybe_create_clone): Support builtin function decls. (chkp_versioning): Clone builtin functions. * tree-chkp.c (chkp_instrument_normal_builtin): New. (chkp_add_bounds_to_call_stmt): Support builtin functions. (chkp_replace_function_pointer): Likewise. * builtins.c (expand_builtin_memcpy_args): New. (expand_builtin_memcpy): Call expand_builtin_memcpy_args. (expand_builtin_memcpy_with_bounds): New. (expand_builtin_mempcpy_with_bounds): New. (expand_builtin_mempcpy_args): Add orig_exp arg. Support BUILT_IN_CHKP_MEMCPY_NOBND_NOCHK (expand_builtin_memset_with_bounds): New. (expand_builtin_memset_args): Support BUILT_IN_CHKP_MEMSET_NOBND_NOCHK. (expand_builtin_with_bounds): New. * builtins.h (expand_builtin_with_bounds): New. * expr.c (expand_expr_real_1): Support instrumented builtin calls. 2014-11-17 Dodji Seketeli <dodji@redhat.com> * gimple.h (gimple_set_visited, gimple_visited_p) (gimple_set_plf, gimple_plf, gimple_set_uid, gimple_uid): Add more comments to these accessors. 2014-11-17 Georg-Johann Lay <avr@gjlay.de> * config/avr/avr-log.c (avr_log_set_avr_log) [TARGET_ALL_DEBUG]: Set avr_log_details to "all". 2014-11-17 Richard Biener <rguenther@suse.de> PR middle-end/63898 * match.pd: Guard X / CST -> X * CST' transform against zero CST. 2014-11-17 Terry Guo <terry.guo@arm.com> * config/arm/thumb1.md (*addsi3_cbranch_scratch): Updated to UAL format. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@arm.com> * ifcvt.c (HAVE_cbranchcc4): Define. (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): Use HAVE_cbranchcc4. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/aarch64/aarch64.c (aarch64_code_to_ccmode, aarch64_convert_mode, aarch64_gen_ccmp_first, aarch64_gen_ccmp_next): New functions. (TARGET_GEN_CCMP_FIRST, TARGET_GEN_CCMP_NEXT): Define. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/aarch64/aarch64-protos.h (aarch64_ccmp_mode_to_code): New. * aarch64.c (aarch64_nzcv_codes): New data. (aarch64_ccmp_mode_to_code): New. (aarch64_print_operand): Output nzcv. config/aarch64/aarch64.md (cbranchcc4, *ccmp_and, *ccmp_ior, cstorecc4): New patterns. (cstore<mode>4): Handle ccmp_cc_register. * config/aarch64/predicates.md (const0_operand): New. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/aarch64/aarch64-modes.def: Define ccmp CC mode. * config/aarch64/aarch64.c (aarch64_get_condition_code_1): New function extacted from aarch64_get_condition_code. (aarch64_get_condition_code): Call aarch64_get_condition_code_1. config/aarch64/predicates.md (ccmp_cc_register): New predicate. 014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/aarch64/constraints.md (Usn, aarch64_ccmp_immediate, aarch64_ccmp_operand): New constraints. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * Makefile.in: Add ccmp.o. * ccmp.c: New file. * ccmp.h: New file. * expr.c: include "ccmp.h" (expand_cond_expr_using_cmove): Handle VOIDmode. (expand_expr_real_1): Try to expand ccmp. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * cfgexpand.c (expand_gimple_cond): Check ccmp. * expmed.c (emit_cstore): Make it global. * expmed.h: #include "insn-codes.h" (emit_cstore): New prototype. * expr.c (expand_operands): Make it global. * expr.h (expand_operands): New prototype. * optabs.c (get_rtx_code): Make it global. * optabs.h (get_rtx_code): New prototype. 2014-11-17 Zhenqiang Chen <zhenqiang.chen@linaro.org> * target.def (gen_ccmp_first, gen_ccmp_first): Add two new hooks. * doc/tm.texi.in (TARGET_GEN_CCMP_FIRST, TARGET_GEN_CCMP_NEXT): New. * doc/tm.texi (TARGET_GEN_CCMP_FIRST, TARGET_GEN_CCMP_NEXT): New. 2014-11-16 Patrick Palka <ppalka@gcc.gnu.org> PR middle-end/63790 * tree-ssa-forwprop.c (forward_propagate_into_comparison_1): Always combine comparisons or conversions from booleans. 2014-11-16 Jan Hubicka <hubicka@ucw.cz> * ipa-polymorphic-call.c (ipa_polymorphic_call_context::speculation_consistent_p): Constify. (ipa_polymorphic_call_context::meet_speculation_with): New function. (ipa_polymorphic_call_context::combine_with): Handle types in construction better. (ipa_polymorphic_call_context::equal_to): Do not bother about useless speculation. (ipa_polymorphic_call_context::meet_with): New function. * cgraph.h (class ipa_polymorphic_call_context): Add meet_width, meet_speculation_with; constify speculation_consistent_p. * ipa-cp.c (ipa_context_from_jfunc): Handle speculation; combine with incomming context. (propagate_context_accross_jump_function): Likewise; be more cureful. about set_contains_variable. (ipa_get_indirect_edge_target_1): Fix handling of dynamic type changes. (find_more_scalar_values_for_callers_subset): Fix. (find_more_contexts_for_caller_subset): Perform meet operation. 2014-11-16 Jan Hubicka <hubicka@ucw.cz> * passes.c (execute_one_pass): Do not apply all transforms prior every simple IPA pass. * cgraphunit.c: Do not include fibheap.h (expand_thunk): Use get_untransformed_body. (cgraph_node::expand): Likewise. * tree-ssa-structalias.c (ipa_pta_execute): Skip inline clones. * cgraph.c (release_function_body): Do not push cfun when CFG is not there. (cgraph_node::get_untransformed_body): Break out from ... (cgraph_node::get_body): ... here; add code to apply all transforms. * cgraph.h (cgraph_node): Add get_untransformed_body. * ipa-icf.c (sem_function::init): Use get_untransformed_body. * cgraphclones.c (duplicate_thunk_for_node): Likewise. * tree-inline.c (expand_call_inline): LIkewise. * i386.c (ix86_reset_to_default_globals): Break out from ... (ix86_set_current_function): ... here; (ix86_reset_previous_fndecl): Use it. (ix86_simd_clone_adjust): Use ix86_reset_previous_fndecl. 2014-11-16 Eric Botcazou <ebotcazou@adacore.com> * doc/tm.texi.in (TARGET_FLAGS_REGNUM): Move around. * doc/tm.texi: Regenerate. 2014-11-16 Uros Bizjak <ubizjak@gmail.com> * config/sh/sh.c: Do not include algorithm. (sh_emit_scc_to_t): Replace open-coded swap with std::swap to swap values. (sh_emit_compare_and_branch): Ditto. (sh_emit_compare_and_set): Ditto. * config/sh/sh.md (replacement peephole2): Ditto. (cstore4_media): Ditto. (*fmasf4): Ditto. 2014-11-15 Vladimir Makarov <vmakarov@redhat.com> * lra-remat.c (cand_transf_func): Process regno for rematerialization too. * lra.c (lra): Switch on rematerialization pass. 2014-11-15 Vladimir Makarov <vmakarov@redhat.com> * lra.c (lra): Switch off rematerialization pass. 2014-11-15 Marc Glisse <marc.glisse@inria.fr> * config/i386/xmmintrin.h (_mm_add_ps, _mm_sub_ps, _mm_mul_ps, _mm_div_ps, _mm_store_ss, _mm_cvtss_f32): Use vector extensions instead of builtins. * config/i386/emmintrin.h (__v2du, __v4su, __v8hu, __v16qu): New typedefs. (_mm_sqrt_sd): Fix comment. (_mm_add_epi8, _mm_add_epi16, _mm_add_epi32, _mm_add_epi64, _mm_sub_epi8, _mm_sub_epi16, _mm_sub_epi32, _mm_sub_epi64, _mm_mullo_epi16, _mm_cmpeq_epi8, _mm_cmpeq_epi16, _mm_cmpeq_epi32, _mm_cmplt_epi8, _mm_cmplt_epi16, _mm_cmplt_epi32, _mm_cmpgt_epi8, _mm_cmpgt_epi16, _mm_cmpgt_epi32, _mm_and_si128, _mm_or_si128, _mm_xor_si128, _mm_store_sd, _mm_cvtsd_f64, _mm_storeh_pd, _mm_cvtsi128_si64, _mm_cvtsi128_si64x, _mm_add_pd, _mm_sub_pd, _mm_mul_pd, _mm_div_pd, _mm_storel_epi64, _mm_movepi64_pi64): Use vector extensions instead of builtins. * config/i386/smmintrin.h (_mm_cmpeq_epi64, _mm_cmpgt_epi64, _mm_mullo_epi32): Likewise. * config/i386/avxintrin.h (__v4du, __v8su, __v16hu, __v32qu): New typedefs. (_mm256_add_pd, _mm256_add_ps, _mm256_div_pd, _mm256_div_ps, _mm256_mul_pd, _mm256_mul_ps, _mm256_sub_pd, _mm256_sub_ps): Use vector extensions instead of builtins. * config/i386/avx2intrin.h (_mm256_cmpeq_epi8, _mm256_cmpeq_epi16, _mm256_cmpeq_epi32, _mm256_cmpeq_epi64, _mm256_cmpgt_epi8, _mm256_cmpgt_epi16, _mm256_cmpgt_epi32, _mm256_cmpgt_epi64, _mm256_and_si256, _mm256_or_si256, _mm256_xor_si256, _mm256_add_epi8, _mm256_add_epi16, _mm256_add_epi32, _mm256_add_epi64, _mm256_mullo_epi16, _mm256_mullo_epi32, _mm256_sub_epi8, _mm256_sub_epi16, _mm256_sub_epi32, _mm256_sub_epi64): Likewise. * config/i386/avx512fintrin.h (__v8du, __v16su, __v32hu, __v64qu): New typedefs. (_mm512_or_si512, _mm512_or_epi32, _mm512_or_epi64, _mm512_xor_si512, _mm512_xor_epi32, _mm512_xor_epi64, _mm512_and_si512, _mm512_and_epi32, _mm512_and_epi64, _mm512_mullo_epi32, _mm512_add_epi64, _mm512_sub_epi64, _mm512_add_epi32, _mm512_sub_epi32, _mm512_add_pd, _mm512_add_ps, _mm512_sub_pd, _mm512_sub_ps, _mm512_mul_pd, _mm512_mul_ps, _mm512_div_pd, _mm512_div_ps): Use vector extensions instead of builtins. * config/i386/avx512bwintrin.h (_mm512_mullo_epi16, _mm512_add_epi8, _mm512_sub_epi8, _mm512_sub_epi16, _mm512_add_epi16): Likewise. * config/i386/avx512dqintrin.h (_mm512_mullo_epi64): Likewise. * config/i386/avx512vldqintrin.h (_mm256_mullo_epi64, _mm_mullo_epi64): Likewise. 2014-11-15 Jan Hubicka <hubicka@ucw.cz> * lto-streamer-out.c (hash_tree): Use cl_optimization_hash. * lto-streamer.h (cl_optimization_stream_out, cl_optimization_stream_in): Declare. * optc-save-gen.awk: Generate cl_optimization LTO streaming and hashing routines. * opth-gen.awk: Add prototype of cl_optimization_hash. * tree-streamer-in.c (unpack_ts_optimization): Remove. (streamer_unpack_tree_bitfields): Use cl_optimization_stream_in. * tree-streamer-out.c (pack_ts_optimization): Remove. (streamer_pack_tree_bitfields): Use cl_optimization_stream_out. 2014-11-15 Mircea Namolaru <mircea.namolaru@inria.fr> * common.opt (flag_loop_unroll_and_jam): New flag. * params.def (PARAM_LOOP_UNROLL_JAM_SIZE): Parameter for unroll and jam flag. (PARAM_LOOP_UNROLL_JAM_DEPTH): Likewise. * graphite-poly.h (struct poly_bb:map_sepclass): New field * graphite-poly.c (new_poly_bb): Initialization for new field. (apply_poly_transforms): Support for unroll and jam flag. * graphite-isl-ast-to-gimple.c (generate_luj_sepclass): Compute the separation class. (generate_luj_sepclass_opt): Build the separation class option. (generate_luj_options): Set unroll and jam options. (set_options): Support for unroll and jam options. (scop_to_isl_ast): Likewise * graphite-optimize-isl.c (getPrevectorMap_full): New function for computing the separating class map. (optimize_isl): Support for the separating class map. (apply_schedule_map_to_scop): Likewise. (getScheduleMap): Likewise. (getScheduleForBand): Likewise. (getScheduleForBandList): Likewise. * graphite.c (gate_graphite_transforms): Add unroll and jam flag. * toplev.c (process_options) Likewise. 2014-11-15 Eric Botcazou <ebotcazou@adacore.com> * tree-cfg.c (replace_loop_annotate_in_block): New function extracted from... (replace_loop_annotate): ...here. Call it on the header and on the latch block, if any. Restore proper behavior of final cleanup. 2014-11-15 Eric Botcazou <ebotcazou@adacore.com> * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add log message for max-completely-peeled-insns limit. 2014-11-14 Jan Hubicka <hubicka@ucw.cz> * ipa-prop.h (ipa_known_type_data): Remove. (ipa_binfo_from_known_type_jfunc): Remove. 2014-11-14 Andrew Pinski <apinski@cavium.com> * config/aarch64/aarch64-cores.def (thunderx): Change the scheduler over to thunderx. * config/aarch64/aarch64.md: Include thunderx.md. (generic_sched): Set to no for thunderx. * config/aarch64/thunderx.md: New file. 2014-11-14 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/predicates.md (easy_fp_constant): Delete redunant tests for 0.0. * config/rs6000/vector.md (VEC_R): Move secondary reload support insns to rs6000.md from vector.md. (reload_<VEC_R:mode>_<P:mptrsize>_store): Likewise. (reload_<VEC_R:mode>_<P:mptrsize>_load): Likewise. (vec_reload_and_plus_<mptrsize>): Likewise. * config/rs6000/rs6000.md (Fa): New mode attribute to give constraint for the Altivec registers for a type. (RELOAD): New mode iterator for all of the types that have secondary reload address support to load up a base register. (extendsfdf2_fpr): Use correct constraint. (copysign<mode>3_fcpsgn): For SFmode, use correct xscpsgndp instruction. (floatsi<mode>2_lfiwax): Add support for -mupper-regs-{sf,df}. Generate the non-VSX instruction if all registers were FPRs. Do not use the patterns in vsx.md for scalar operations. (floatsi<mode>2_lfiwax_mem): Likewise. (floatunssi<mode>2_lfiwzx): Likewise. (floatunssi<mode>2_lfiwzx_mem): Likewise. (fix_trunc<mode>di2_fctidz): Likewise. (fixuns_trunc<mode>di2_fctiduz): Likewise. (fctiwz_<mode>): Likewise. (fctiwuz_<mode>): Likewise. (friz): Likewise. (floatdidf2_fpr): Likewise. (floatdidf2_mem): Likewise. (floatunsdidf2): Likewise. (floatunsdidf2_fcfidu): Likewise. (floatunsdidf2_mem): Likewise. (floatdisf2_fcfids): Likewise. (floatdisf2_mem): Likewise. (floatdisf2_internal1): Add explicit test for not FCFIDS to make it more obvious that the code is for pre-ISA 2.06 machines. (floatdisf2_internal2): Likewise. (floatunsdisf2_fcfidus): Add support for -mupper-regs-{sf,df}. Generate the non-VSX instruction if all registers were FPRs. Do not use the patterns in vsx.md for scalar operations. (floatunsdisf2_mem): Likewise. (reload_<RELOAD:mode>_<P:mptrsize>_store): Move the reload handlers here from vector.md, and expand the types we generate reload handlers for. (reload_<RELOAD:mode>_<P:mptrsize>_load): Likewise. (vec_reload_and_plus_<mptrsize>): Likewise. * config/rs6000/vsx.md (vsx_float<VSi><mode>2): Only provide the vector forms of the instructions. Move VSX scalar forms to rs6000.md, and add support for -mupper-regs-sf. (vsx_floatuns<VSi><mode>2): Likewise. (vsx_fix_trunc<mode><VSi>2): Likewise. (vsx_fixuns_trunc<mode><VSi>2): Likewise. (vsx_float_fix_<mode>2): Delete DF version, rename to vsx_float_fix_v2df2. (vsx_float_fix_v2df2): Likewise. 2014-11-14 Martin Jambor <mjambor@suse.cz> * ipa-prop.h (jump_func_type): Removed value IPA_JF_KNOWN_TYPE. (ipa_pass_through_data): Removed field type_preserved. (ipa_ancestor_jf_data): removed fields type and type_preserved. (ipa_jump_func): Removed field known_type. (ipa_get_jf_known_type_offset): Removed. (ipa_get_jf_known_type_base_type): Likewise. (ipa_get_jf_known_type_component_type): Likewise. (ipa_get_jf_ancestor_type): Likewise. * ipa-cp.c (print_ipcp_constant_value): Removed BINFO handling. (ipa_get_jf_pass_through_result): Likewise. (ipa_get_jf_ancestor_result): Always build ptr_node_type accesses. (values_equal_for_ipcp_p): Removed BINFO handling. (ipa_get_indirect_edge_target_1): Updated comment. * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Removed handling of IPA_JF_KNOWN_TYPE jump functions. Do not print removed fields. (ipa_set_jf_known_type): Removed. (ipa_set_jf_simple_pass_through): Do not set removed fields. Update all callers. (ipa_set_jf_arith_pass_through): Likewise. (ipa_set_ancestor_jf): Likewise. (ipa_binfo_from_known_type_jfunc): Removed. (prop_type_change_info): Removed fields known_current_type and multiple_types_encountered. (extr_type_from_vtbl_ptr_store): Removed. (check_stmt_for_type_change): Do not attempt to identify changed type. (detect_type_change_from_memory_writes): Do not set the removed fields, always set jfunc to unknown. (compute_complex_assign_jump_func): Do not detect dynamic type change. (compute_complex_ancestor_jump_func): Likewise. (compute_known_type_jump_func): Removed. (ipa_compute_jump_functions_for_edge): Do not detect dynamic type change. Do not comute known type jump functions. (combine_known_type_and_ancestor_jfs): Removed. (update_jump_functions_after_inlining): Removed handling of IPA_JF_KNOWN_TYPE jump functions. Do not set removed fields. (ipa_write_jump_function): Do not stream removed fields or known type jump functions. (ipa_read_jump_function): Likewise. 2014-11-14 Vladimir Makarov <vmakarov@redhat.com> * lra-int.h (lra_create_live_ranges): Add parameter. * lra-lives.c (temp_bitmap): Move higher. (initiate_live_solver): Move temp_bitmap initialization into lra_live_ranges_init. (finish_live_solver): Move temp_bitmap clearing into live_ranges_finish. (process_bb_lives): Add parameter. Use it to control live info update and dead insn elimination. Pass it to mark_regno_live and mark_regno_dead. (lra_create_live_ranges): Add parameter. Pass it to process_bb_lives. (lra_live_ranges_init, lra_live_ranges_finish): See changes in initiate_live_solver and finish_live_solver. * lra-remat.c (do_remat): Process insn non-operand hard regs too. Use temp_bitmap to update avail_cands. * lra.c (lra): Pass new parameter to lra_create_live_ranges. Move check with lra_need_for_spill_p after live range pass. Switch on rematerialization pass. 2014-11-14 Martin Jambor <mjambor@suse.cz> * ipa-prop.h (ipa_get_jf_pass_through_type_preserved): use agg_preserved flag instead. (ipa_get_jf_ancestor_type_preserved): Likewise. (ipa_node_params): Rename known_vals to known_csts, update all users. New field known_contexts. (ipa_get_indirect_edge_target): Update prototype. (ipcp_poly_ctx_values_pool): Declare. (ipa_context_from_jfunc): Likewise. * ipa-inline.h (estimate_ipcp_clone_size_and_time): Updated prototype. * cgraph.h (ipa_polymorphic_call_context): New method equal_to. New parameter newline of method dump. * ipa-cp.c (ctxlat): New field. (ipcp_values_pool): Renamed to ipcp_cst_values_pool, updated all users. (ipcp_poly_ctx_values_pool):New variable. (ipa_get_poly_ctx_lat): New function. (print_ipcp_constant_value): New overloaded function for contexts. (print_all_lattices): Also print contexts. (ipa_topo_info): New field contexts; (set_all_contains_variable): Also set the flag in the context lattice. (initialize_node_lattices): Likewise for flag bottom. (ipa_get_jf_ancestor_result): Removed BINFO handling. (ipa_value_from_jfunc): Likewise. (ipa_context_from_jfunc): New function. (values_equal_for_ipcp_p): New overloaded function for contexts. (allocate_and_init_ipcp_value): Construct the value. (allocate_and_init_ipcp_value): New overloaded function for contexts. (propagate_scalar_accross_jump_function): Removed handling of KNOWN_TYPE jump functions. (propagate_context_accross_jump_function): New function. (propagate_constants_accross_call): Also propagate contexts. (ipa_get_indirect_edge_target_1): Work on contexts rather than BINFOs. (ipa_get_indirect_edge_target): Likewise. (devirtualization_time_bonus): Likewise. (gather_context_independent_values): Create and populate known_contexts vector rather than known_binfos. (perform_estimation_of_a_value): Work on contexts rather than BINFOs. (estimate_local_effects): Likewise. (add_all_node_vals_to_toposort): Also add contexts to teir topological sort. (ipcp_propagate_stage): Also propagate effects of contexts. (ipcp_discover_new_direct_edges): Receive and pass known_contexts to ipa_get_indirect_edge_target_1. (cgraph_edge_brings_value_p): New overloaded function for contexts. (create_specialized_node): Work on contexts rather than BINFOs. (find_more_contexts_for_caller_subset): New function. (known_contexts_useful_p): New function. (copy_useful_known_contexts): Likewise. (modify_known_vectors_with_val): Likewise. (ipcp_val_in_agg_replacements_p): Renamed to ipcp_val_agg_replacement_ok_p, return true for all offset indicating non-aggregate. (ipcp_val_agg_replacement_ok_p): New overloaded function for contexts. (decide_about_value): Work on contexts rather than BINFOs. (decide_whether_version_node): Likewise. (ipcp_driver): Initialize the new alloc pool. * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Prettify printing of edge contexts. (ipa_set_ancestor_jf): Replace assert with conditional setting of type_preserved to false. (update_jump_functions_after_inlining): Use access function instead of reading agg_preserved directly. Store combined context in the ancestor case. (try_make_edge_direct_virtual_call): Work on contexts rather than BINFOs. (update_indirect_edges_after_inlining): Get context from ipa_context_from_jfunc. (ipa_free_node_params_substructures): Free also known_contexts. (ipa_free_all_structures_after_ipa_cp): Free the new alloc pool. (ipa_free_all_structures_after_iinln): Likewise. * ipa-inline-analysis.c (evaluate_properties_for_edge): Work on contexts rather than BINFOs. (estimate_edge_devirt_benefit): Likewise. (estimate_edge_size_and_time): Likewise. (estimate_calls_size_and_time): Likewise. (estimate_node_size_and_time): Likewise. (estimate_ipcp_clone_size_and_time): Likewise. (do_estimate_edge_time): Likewise. (do_estimate_edge_size): Likewise. (do_estimate_edge_hints): Likewise. * ipa-polymorphic-call.c (ipa_polymorphic_call_context::dump): New parameter newline, ouput newline only when it is set. (ipa_polymorphic_call_context::equal_to): New method. 2014-11-14 Martin Jambor <mjambor@suse.cz> * ipa-cp.c (ipcp_value_source): Converted to a template class. All users converted to the same specialization as the using class/function or specialization on tree. (ipcp_value): Likewise. (ipcp_lattice): Likewise. (ipcp_agg_lattice): Now derived from tree specialization of ipcp_lattice. (values_topo): Moved to new class value_topo_info. (ipa_lat_is_single_const): Turned into ipcp_lattice::is_single_const. Updated all callers. (print_lattice): Turned into ipcp_lattice::print. Updated all callers. (value_topo_info): New class template. (ipa_topo_info): New field constants. New constructor. (build_toporder_info): Do not clear stack_top, only checkign assert it. (set_lattice_to_bottom): Turned into ipcp_lattice::set_to_bottom. Updated all callers. (set_lattice_contains_variable): Turned into ipcp_lattice::set_contains_variable. Updated all callers. (add_value_source): Turned into ipcp_value::add_source. Updated all callers. (allocate_and_init_ipcp_value): New function. (add_value_to_lattice): Turned into ipcp_lattice::add_value. Last parameter got default a value. Updated all callers. (add_scalar_value_to_lattice): Removed, users converted to using ipcp_lattice::add_value with default value of the last parameter. (add_val_to_toposort): Turned to value_topo_info::add_val. Updated all callers. (propagate_effects): Made method of value_topo_info. (cgraph_edge_brings_value_p): Now a template function. (get_info_about_necessary_edges): Likewise. (gather_edges_for_value): Likewise. (perhaps_add_new_callers): Likewise. (decide_about_value): Likewise. * ipa-prop.h (ipcp_lattice): Remove fowrward declaration. 2014-11-14 Jakub Jelinek <jakub@redhat.com> * doc/install.texi (--with-diagnostics-color=): Document. * tree-ssa.dce.c (eliminate_unnecessary_stmts): Eliminate IFN_GOMP_SIMD_LANE without lhs as useless. * ipa-pure-const.c (struct funct_state_d): Add can_free field. (varying_state): Add true for can_free. (check_call): For builtin or internal !nonfreeing_call_p set local->can_free. (check_stmt): For asm volatile and asm with "memory" set local->can_free. (analyze_function): Clear local->can_free initially, continue calling check_stmt until all flags are computed, dump can_free flag. (pure_const_write_summary): Write can_free flag. (pure_const_read_summary): Read it back. (propagate_pure_const): Propagate also can_free flag, set w->nonfreeing_fn if it is false after propagation. * cgraph.h (cgraph_node): Add nonfreeing_fn member. * gimple.c: Include ipa-ref.h, lto-streamer.h and cgraph.h. (nonfreeing_call_p): Return cgraph nonfreeing_fn flag if set. Also return true for IFN_ABNORMAL_DISPATCHER. * cgraph.c (cgraph_node::dump): Dump nonfreeing_fn flag. * lto-cgraph.c (lto_output_node): Write nonfreeing_fn flag. (input_overwrite_node): Read it back. 2014-11-14 Jakub Jelinek <jakub@redhat.com> Marek Polacek <polacek@redhat.com> * sanopt.c: Include tree-ssa-operands.h. (struct sanopt_info): Add has_freeing_call_p, has_freeing_call_computed_p, imm_dom_path_with_freeing_call_p, imm_dom_path_with_freeing_call_computed_p, freeing_call_events, being_visited_p fields. (struct sanopt_ctx): Add asan_check_map field. (imm_dom_path_with_freeing_call, maybe_optimize_ubsan_null_ifn, maybe_optimize_asan_check_ifn): New functions. (sanopt_optimize_walker): Use them, optimize even ASAN_CHECK internal calls. (pass_sanopt::execute): Call sanopt_optimize even for -fsanitize=address. * gimple.c (nonfreeing_call_p): Return true for non-ECF_LEAF internal calls. 2014-11-14 Alan Lawrence <alan.lawrence@arm.com> * tree-vect-loop.c (vect_create_epilog_for_reduction): Move code for 'if (extract_scalar_result)' to the only place that it is true. 2014-11-14 H.J. Lu <hongjiu.lu@intel.com> * config.gcc (default_gnu_indirect_function): Set to yes for i[34567]86-*-linux* and x86_64-*-linux* if not targeting Android nor uclibc. 2014-11-14 Felix Yang <felix.yang@huawei.com> Jiji Jiang <jiangjiji@huawei.com> * config/aarch64/aarch64-simd.md (*aarch64_simd_ld1r<mode>): Use VALL mode iterator instead of VALLDI. 2014-11-14 Jan Hubicka <hubicka@ucw.cz> * optc-save-gen.awk: Output cl_target_option_eq, cl_target_option_hash, cl_target_option_stream_out, cl_target_option_stream_in functions. * opth-gen.awk: Output prototypes for cl_target_option_eq and cl_target_option_hash. * lto-streamer.h (cl_target_option_stream_out, cl_target_option_stream_in): Declare. * tree.c (cl_option_hash_hash): Use cl_target_option_hash. (cl_option_hash_eq): Use cl_target_option_eq. * tree-streamer-in.c (unpack_value_fields): Stream in TREE_TARGET_OPTION. * lto-streamer-out.c (DFS::DFS_write_tree_body): Follow DECL_FUNCTION_SPECIFIC_TARGET. (hash_tree): Hash TREE_TARGET_OPTION; visit DECL_FUNCTION_SPECIFIC_TARGET. * tree-streamer-out.c (streamer_pack_tree_bitfields): Skip TS_TARGET_OPTION. (streamer_write_tree_body): Output TS_TARGET_OPTION. 2014-11-14 Richard Biener <rguenther@suse.de> * gimple-fold.h (gimple_fold_stmt_to_constant_1): Add 2nd valueization hook defaulted to no_follow_ssa_edges. * gimple-fold.c (gimple_fold_stmt_to_constant_1): Pass 2nd valueization hook to gimple_simplify. * tree-ssa-ccp.c (valueize_op_1): New function to be used for gimple_simplify called via gimple_fold_stmt_to_constant_1. (ccp_fold): Adjust. * tree-vrp.c (vrp_valueize_1): New function to be used for gimple_simplify called via gimple_fold_stmt_to_constant_1. (vrp_visit_assignment_or_call): Adjust. 2014-11-14 Marek Polacek <polacek@redhat.com> * fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if that overflows when SANITIZE_SI_OVERFLOW is on. Guard -(-A) folding with TYPE_OVERFLOW_SANITIZED. 2014-11-14 Marek Polacek <polacek@redhat.com> PR sanitizer/63839 * asan.c (ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST, ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define. * builtin-attrs.def (ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define. * builtins.c (fold_builtin_0): Don't include ubsan.h. Don't instrument BUILT_IN_UNREACHABLE here. * sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Make const. * sanopt.c (pass_sanopt::execute): Instrument BUILT_IN_UNREACHABLE. * tree-ssa-ccp.c (optimize_unreachable): Bail out if SANITIZE_UNREACHABLE. * ubsan.c (ubsan_instrument_unreachable): Rewrite for GIMPLE. * ubsan.h (ubsan_instrument_unreachable): Adjust declaration. 2014-11-14 Alan Lawrence <alan.lawrence@arm.com> * config/rs6000/vector.md (vec_shl_<mode>): Remove. (vec_shr_<mode>): Reverse shift if BYTES_BIG_ENDIAN. 2014-11-14 Alan Lawrence <alan.lawrence@arm.com> * optabs.c (shift_amt_for_vec_perm_mask): Remove code conditional on BYTES_BIG_ENDIAN. * tree-vect-loop.c (calc_vec_perm_mask_for_shift, vect_create_epilog_for_reduction): Likewise. * doc/md.texi (vec_shr_m): Clarify direction of shifting. 2014-11-14 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> PR target/63724 * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Split out numerical immediate handling to... (aarch64_internal_mov_immediate): ...this. New. (aarch64_rtx_costs): Use aarch64_internal_mov_immediate. (aarch64_mov_operand_p): Relax predicate. * config/aarch64/aarch64.md (mov<mode>:GPI): Do not expand CONST_INTs. (*movsi_aarch64): Turn into define_insn_and_split and new alternative for 'n'. (*movdi_aarch64): Likewise. 2014-11-14 Richard Biener <rguenther@suse.de> * match.pd: Implement more binary patterns exercised by fold_stmt. * fold-const.c (sing_bit_p): Export. (exact_inverse): Likewise. (fold_binary_loc): Remove patterns here. (tree_unary_nonnegative_warnv_p): Use CASE_CONVERT. * fold-const.h (sing_bit_p): Declare. (exact_inverse): Likewise. 2014-11-14 Marek Polacek <polacek@redhat.com> * tree.c (build_common_builtin_nodes): Remove doubled ECF_LEAF. 2014-11-14 Richard Biener <rguenther@suse.de> * genmatch.c (add_operator): Allow CONSTRUCTOR. (dt_node::gen_kids): Handle CONSTRUCTOR not as GENERIC. (parser::parse_op): Allow to iterate over predicates. 2014-11-14 Jakub Jelinek <jakub@redhat.com> * configure.ac (--with-diagnostics-color): New configure option, default to --with-diagnostics-color=auto. * toplev.c (process_options): Use DIAGNOSTICS_COLOR_DEFAULT to determine -fdiagnostics-color= option default. * doc/invoke.texi (-fdiagnostics-color=): Document new default. * configure: Regenerated. * config.in: Regenerated. 2014-11-13 Teresa Johnson <tejohnson@google.com> PR tree-optimization/63841 * tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers. 2014-11-14 Bin Cheng <bin.cheng@arm.com> * timevar.def (TV_SCHED_FUSION): New time var. * passes.def (pass_sched_fusion): New pass. * config/arm/arm.c (TARGET_SCHED_FUSION_PRIORITY): New. (extract_base_offset_in_addr, fusion_load_store): New. (arm_sched_fusion_priority): New. (arm_option_override): Disable scheduling fusion by default on non-armv7 processors or ldrd/strd isn't preferred. * sched-int.h (struct _haifa_insn_data): New field. (INSN_FUSION_PRIORITY, FUSION_MAX_PRIORITY, sched_fusion): New. * sched-rgn.c (rest_of_handle_sched_fusion): New. (pass_data_sched_fusion, pass_sched_fusion): New. (make_pass_sched_fusion): New. * haifa-sched.c (sched_fusion): New. (insn_cost): Handle sched_fusion. (priority): Handle sched_fusion by calling target hook. (enum rfs_decision): New enum value. (rfs_str): New element for RFS_FUSION. (rank_for_schedule): Support sched_fusion. (schedule_insn, max_issue, prune_ready_list): Handle sched_fusion. (schedule_block, fix_tick_ready): Handle sched_fusion. * common.opt (flag_schedule_fusion): New. * tree-pass.h (make_pass_sched_fusion): New. * target.def (fusion_priority): New. * doc/tm.texi.in (TARGET_SCHED_FUSION_PRIORITY): New. * doc/tm.texi: Regenerated. * doc/invoke.texi (-fschedule-fusion): New. 2014-11-13 Rong Xu <xur@google.com> PR debug/63581 * cfgrtl.c (emit_barrier_after_bb): Append the barrier to the footer, instead of unconditionally overwritten. 2014-11-14 Martin Jambor <mjambor@suse.cz> * cgraph.h (clear_outer_type): Make public. Fix comment. * ipa-devirt.c (possible_polymorphic_call_targets): Use clear_outer_type when resetting the context. 2014-11-13 Dominique Dhumieres <dominiq@lps.ens.fr> PR bootstrap/63853 * gcc.c (handle_foffload_option): Replace strchrnul with strchr. * lto-wrapper.c (parse_env_var, append_offload_options): Likewise. 2014-11-13 Alan Lawrence <alan.lawrence@arm.com> * fold-const.c (const_binop): Remove code handling VEC_RSHIFT_EXPR. * tree-cfg.c (verify_gimple_assign_binary): Likewise. * tree-inline.c (estimate_operator_cost): Likewise. * tree-pretty-print.c (dump_generic_node, op_code_prio, op_symbol_code): Likewise. * tree-vect-generic.c (expand_vector_operations_1): Remove assertion against VEC_RSHIFT_EXPR. * optabs.h (expand_vec_shift_expr): Remove. * optabs.c (optab_for_tree_code): Remove case VEC_RSHIFT_EXPR. (expand_vec_shift_expr): Remove. * tree.def (VEC_RSHIFT_EXPR): Remove 2014-11-13 Alan Lawrence <alan.lawrence@arm.com> * optabs.c (can_vec_perm_p): Update comment, does not consider vec_shr. (shift_amt_for_vec_perm_mask): New. (expand_vec_perm_1): Use vec_shr_optab if second vector is const0_rtx and mask appropriate. * tree-vect-loop.c (calc_vec_perm_mask_for_shift): New. (have_whole_vector_shift): New. (vect_model_reduction_cost): Call have_whole_vector_shift instead of looking for vec_shr_optab. (vect_create_epilog_for_reduction): Likewise; also rename local variable have_whole_vector_shift to reduce_with_shift; output VEC_PERM_EXPRs instead of VEC_RSHIFT_EXPRs. * tree-vect-stmts.c (vect_gen_perm_mask_checked): Extend comment. 2014-11-13 Alan Lawrence <alan.lawrence@arm.com> * tree-vectorizer.h (vect_gen_perm_mask): Remove. (vect_gen_perm_mask_checked, vect_gen_perm_mask_any): New. * tree_vec_data_refs.c (vect_permute_load_chain, vec_permute_store_chain, vec_shift_permute_load_chain): Replace vect_gen_perm_mask & assert with vect_gen_perm_mask_checked. * tree-vect-stmts.c (vectorizable_mask_load_store, vectorizable_load): Likewise. (vect_gen_perm_mask_checked): New. (vect_gen_perm_mask): Remove can_vec_perm_p check, rename to... (vect_gen_perm_mask_any): ...this. (perm_mask_for_reverse): Call can_vec_perm_p and vect_gen_perm_mask_checked. 2014-11-13 Felix Yang <felix.yang@huawei.com> * ipa-utils.h: Fix typo in comments. * ipa-profile.c: Likewise. * tree-ssa-loop-ivcanon.c: Fix typo in comments and debugging dumps. 2014-11-13 Teresa Johnson <tejohnson@google.com> PR tree-optimization/63841 * tree-ssa-strlen.c (strlen_optimize_stmt): Ignore clobbers. 2014-11-13 Teresa Johnson <tejohnson@google.com> PR tree-optimization/63841 * tree.c (initializer_zerop): A clobber does not zero initialize. 2014-11-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> * optabs.c (prepare_operand): Gracefully fail if the mode of X does not match the operand mode expected by the insn pattern. 2014-11-13 Richard Biener <rguenther@suse.de> * match.pd: Add tcc_comparison, inverted_tcc_comparison and inverted_tcc_comparison_with_nans operator lists. Use tcc_comparison in the truth_valued_p predicate definition. Restrict logical_inverted_value with bit_xor to integral types. Build a boolean true for simplifying x |^ !x because of vector types. Implement patterns from forward_propagate_comparison * tree-ssa-forwprop.c (forward_propagate_comparison): Remove. (get_prop_dest_stmt): Likewise. (pass_forwprop::execute): Do not call it. * fold-const.c (fold_unary_loc): Remove the pattern here. 2014-11-13 Ilya Verbin <ilya.verbin@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> * config.gcc (*-intelmic-* | *-intelmicemul-*): Add i386/t-intelmic to tmake_file. (i[34567]86-*-* | x86_64-*-*): Build mkoffload$(exeext) with the accelerator compiler. * config/i386/intelmic-mkoffload.c: New file. * config/i386/t-intelmic: Ditto. 2014-11-13 Bernd Schmidt <bernds@codesourcery.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> * common.opt (foffload, foffload-abi): New options. * config/i386/i386.c (ix86_offload_options): New static function. (TARGET_OFFLOAD_OPTIONS): Define. * coretypes.h (enum offload_abi): New enum. * doc/tm.texi: Regenerate. * doc/tm.texi.in (TARGET_OFFLOAD_OPTIONS): Document. * gcc.c (offload_targets): New static variable. (handle_foffload_option): New static function. (driver_handle_option): Handle OPT_foffload_. (driver::maybe_putenv_OFFLOAD_TARGETS): Set OFFLOAD_TARGET_NAMES according to offload_targets. * hooks.c (hook_charptr_void_null): New hook. * hooks.h (hook_charptr_void_null): Declare. * lto-opts.c: Include lto-section-names.h. (lto_write_options): Append options from target offload_options hook and store them to offload_lto section. Do not store target-specific, driver and diagnostic options in offload_lto section. * lto-wrapper.c (merge_and_complain): Handle OPT_foffload_ and OPT_foffload_abi_. (append_compiler_options, append_linker_options) (append_offload_options): New static functions. (compile_offload_image): Add new arguments with options. Call append_compiler_options and append_offload_options. (compile_images_for_offload_targets): Add new arguments with options. (find_and_merge_options): New static function. (run_gcc): Outline options handling into the new functions: find_and_merge_options, append_compiler_options, append_linker_options. * opts.c (common_handle_option): Don't handle OPT_foffload_. Forbid OPT_foffload_abi_ for non-offload compiler. * target.def (offload_options): New target hook. 2014-11-13 Ilya Verbin <ilya.verbin@intel.com> Bernd Schmidt <bernds@codesourcery.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * gcc.c (spec_host_machine, accel_dir_suffix): New variables. (process_command): Tweak path construction for the possibility of being configured as an offload compiler. (driver::maybe_putenv_OFFLOAD_TARGETS): New function. (driver::main): Call maybe_putenv_OFFLOAD_TARGETS. (driver::set_up_specs): Tweak path construction for the possibility of being configured as an offload compiler. * lto-wrapper.c (OFFLOAD_TARGET_NAMES_ENV): Define. (offload_names, offloadbegin, offloadend): New static variables. (free_array_of_ptrs, parse_env_var, access_check, compile_offload_image) (compile_images_for_offload_targets, copy_file, find_offloadbeginend): New static functions. (run_gcc): Determine whether offload sections are present. If so, run compile_images_for_offload_targets and return the names of new generated objects to linker. If there are offload sections, but no LTO sections, then return the copies of input objects without link-time recompilation. 2014-11-13 Richard Biener <rguenther@suse.de> * genmatch.c (dt_node::gen_kids): Fix placement of break statement. 2014-11-13 Ilya Verbin <ilya.verbin@intel.com> Bernd Schmidt <bernds@codesourcery.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * Makefile.in (GTFILES): Add omp-low.h to list of GC files. * cgraphunit.c: Include omp-low.h. * doc/tm.texi: Regenerate. * doc/tm.texi.in (TARGET_RECORD_OFFLOAD_SYMBOL): Document. * gengtype.c (open_base_files): Add omp-low.h to ifiles. * lto-cgraph.c (output_offload_tables): New function. (input_offload_tables): Likewise. * lto-section-in.c (lto_section_name): Add "offload_table". * lto-section-names.h (OFFLOAD_VAR_TABLE_SECTION_NAME): Define. (OFFLOAD_FUNC_TABLE_SECTION_NAME): Likewise. * lto-streamer-out.c (lto_output): Call output_offload_tables. * lto-streamer.h (lto_section_type): Add LTO_section_offload_table. (output_offload_tables, input_offload_tables): Declare. * omp-low.c: Include common/common-target.h and lto-section-names.h. (offload_funcs, offload_vars): New global <tree, va_gc> vectors. (expand_omp_target): Add child_fn into offload_funcs vector. (add_decls_addresses_to_decl_constructor): New function. (omp_finish_file): Likewise. * omp-low.h (omp_finish_file, offload_funcs, offload_vars): Declare. * target.def (record_offload_symbol): New DEFHOOK. * toplev.c: Include omp-low.h. (compile_file): Call omp_finish_file. * varpool.c: Include omp-low.h. (varpool_node::get_create): Add decl into offload_vars vector. 2014-11-13 Ilya Verbin <ilya.verbin@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Bernd Schmidt <bernds@codesourcery.com> * cgraph.c: Include context.h. (cgraph_node::create): Set node->offloadable and g->have_offload if decl have "omp declare target" attribute. * cgraph.h (symtab_node): Add need_lto_streaming and offloadable flags. * cgraphunit.c: Include lto-section-names.h. (ipa_passes): Call ipa_write_summaries if there is something to write to OFFLOAD_SECTION_NAME_PREFIX sections. (symbol_table::compile): Set flag_generate_lto if there is something to offload. Replace flag_lto with flag_generate_lto before lto_streamer_hooks_init. * context.c (gcc::context::context): Initialize have_offload with false. * context.h (class context): Add have_offload flag. * ipa-inline-analysis.c (inline_generate_summary): Do not exit under flag_generate_lto. (inline_free_summary): Always remove hooks. * lto-cgraph.c (referenced_from_other_partition_p): Ignore references from non-offloadable nodes while streaming a node into offload section. (reachable_from_other_partition_p): Likewise. (select_what_to_stream): New function. (compute_ltrans_boundary): Do not call lto_set_symtab_encoder_in_partition if the node should not be streamed. * lto-section-names.h (OFFLOAD_SECTION_NAME_PREFIX): Define. (section_name_prefix): Declare. * lto-streamer.c (section_name_prefix): New variable. (lto_get_section_name): Use section_name_prefix instead of LTO_SECTION_NAME_PREFIX. * lto-streamer.h (select_what_to_stream): Declare. * omp-low.c: Include context.h. (is_targetreg_ctx): New function. (scan_sharing_clauses): Use offloadable flag, instead of an attribute. (create_omp_child_function, check_omp_nesting_restrictions): Use new is_targetreg_ctx function. Replace usage of "omp declare target" attribute with a cgraph_node flag offloadable. (expand_omp_target): Set mark_force_output for offloadable functions. (lower_omp_critical): Set offloadable flag for omp critical symbol. * passes.c (ipa_write_summaries): New argument offload_lto_mode. Call select_what_to_stream. Do not call lto_set_symtab_encoder_in_partition if the node should not be streamed out. * tree-pass.h (ipa_write_summaries): New bool argument. * varpool.c: Include context.h. (varpool_node::get_create): Set node->offloadable and g->have_offload if decl have "omp declare target" attribute. 2014-11-13 Bernd Schmidt <bernds@codesourcery.com> Thomas Schwinge <thomas@codesourcery.com> Ilya Verbin <ilya.verbin@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> * Makefile.in (real_target_noncanonical, accel_dir_suffix) (enable_as_accelerator): New variables substituted by configure. (libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of being configured as an offload compiler. (DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and ACCEL_DIR_SUFFIX. (install-cpp, install-common, install_driver, install-gcc-ar): Do not install for the offload compiler. * config.in: Regenerate. * configure: Regenerate. * configure.ac (real_target_noncanonical, accel_dir_suffix) (enable_as_accelerator): Compute new variables. (ACCEL_COMPILER): Define if the compiler is built as the accel compiler. (OFFLOAD_TARGETS): List of target names suitable for offloading. (ENABLE_OFFLOADING): Define if list of offload targets is not empty. * doc/install.texi (Options specification): Document --enable-as-accelerator-for and --enable-offload-targets. 2014-11-13 H.J. Lu <hongjiu.lu@intel.com> PR tree-optimization/63828 * ipa-polymorphic-call.c (possible_placement_new): Check POINTER_SIZE, instead of BITS_PER_WORD, for pointer size. 2014-11-13 Eric Botcazou <ebotcazou@adacore.com> * doc/tm.texi.in (SELECT_CC_MODE): Update example. (REVERSIBLE_CC_MODE): Fix example. (REVERSE_CONDITION): Fix typo. * doc/tm.texi: Regenerate. 2014-11-13 Tom de Vries <tom@codesourcery.com> * omp-low.c (pass_data_expand_omp): Set properties_provided to PROP_gimple_eomp. (pass_expand_omp::gate): Remove function. Move gate expression to ... (pass_expand_omp::execute): ... here, as new variable gate. Add early exit if gate is false. (pass_data pass_data_expand_omp_ssa): New pass_data. (class pass_expand_omp_ssa): New pass. (make_pass_expand_omp_ssa): New function. * passes.def (pass_parallelize_loops): Use PUSH_INSERT_PASSES_WITHIN instead of NEXT_PASS. (pass_expand_omp_ssa): Add after pass_parallelize_loops. * tree-parloops.c (gen_parallel_loop): Remove call to omp_expand_local. (pass_parallelize_loops::execute): Don't do cleanups TODO_cleanup_cfg and TODO_rebuild_alias yet. Add TODO_update_ssa. Set cfun->omp_expand_needed. * tree-pass.h: Add define PROP_gimple_eomp. (make_pass_expand_omp_ssa): Declare. 2014-11-13 Marek Polacek <polacek@redhat.com> * tree.h (TYPE_OVERFLOW_SANITIZED): Define. * fold-const.c (fold_binary_loc): Use it. * match.pd: Likewise. 2014-11-14 Kirill Yukhin <kirill.yukhin@intel.com> * lra-lives.c (struct bb_data): Rename to ... (struct bb_data_pseudos): ... this. (initiate_live_solver): Update struct name. 2014-11-13 Richard Biener <rguenther@suse.de> * match.pd: Implement conditional expression patterns. * tree-ssa-forwprop.c (forward_propagate_into_cond): Remove them here. (combine_cond_exprs): Remove. (pass_forwprop::execute): Do not call combine_cond_exprs. * fold-const.c (fold_ternary_loc): Remove patterns here. (pedantic_omit_one_operand_loc): Remove. 2014-12-13 Richard Biener <rguenther@suse.de> PR middle-end/61559 * match.pd: Implement bswap patterns for transforms checked by gcc.dg/builtin-bswap-8.c. 2014-11-13 Vladimir Makarov <vmakarov@redhat.com> * lra.c (lra): Switch off rematerialization pass. 2014-11-12 Vladimir Makarov <vmakarov@redhat.com> * common.opt (flra-remat): New. * opts.c (default_options_table): Add entry for flra_remat. * timevar_def (TV_LRA_REMAT): New. * doc/invoke.texi (-flra-remat): Add description of the new option. * doc/passes.texi (-flra-remat): Remove lra-equivs.c and lra-saves.c. Add lra-remat.c. * Makefile.in (OBJS): Add lra-remat.o. * lra-remat.c: New file. * lra.c: Add info about the rematerialization pass in the top comment. (collect_non_operand_hard_regs, add_regs_to_insn_regno_info): Process unallocatable regs too. (lra_constraint_new_insn_uid_start): Remove. (lra): Add code for calling rematerialization sub-pass. * lra-int.h (lra_constraint_new_insn_uid_start): Remove. (lra_constrain_insn, lra_remat): New prototypes. (lra_eliminate_regs_1): Add parameter. * lra-lives.c (make_hard_regno_born, make_hard_regno_dead): Process unallocatable hard regs too. (process_bb_lives): Ditto. * lra-spills.c (remove_pseudos): Add argument to lra_eliminate_regs_1 call. * lra-eliminations.c (lra_eliminate_regs_1): Add parameter. Use it for sp offset calculation. (lra_eliminate_regs): Add argument for lra_eliminate_regs_1 call. (eliminate_regs_in_insn): Add parameter. Use it for sp offset calculation. (process_insn_for_elimination): Add argument for eliminate_regs_in_insn call. * lra-constraints.c (get_equiv_with_elimination): Add argument for lra_eliminate_regs_1 call. (process_addr_reg): Add parameter. Use it. (process_address_1): Ditto. Add argument for process_addr_reg call. (process_address): Ditto. (curr_insn_transform): Add parameter. Use it. Add argument for process_address calls. (lra_constrain_insn): New function. (lra_constraints): Add argument for curr_insn_transform call. 2014-11-13 Manuel López-Ibáñez <manu@gcc.gnu.org> * opts-global.c (postpone_unknown_option_warning): Fix spelling. (print_ignored_options): Fix quoting. * opts.c (common_handle_option): Likewise. (set_debug_level): Likewise. * toplev.c (process_options): Likewise. 2014-11-12 Jakub Jelinek <jakub@redhat.com> PR ipa/63838 * ipa-pure-const.c (propagate_nothrow): Walk w->indirect_calls chain instead of node->indirect_calls. Put !can_throw into conditions of all the loops. 2014-11-12 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (x86_output_mi_thunk): Use gen_rtx_REG to set pic_offset_table_rtx. 2014-11-12 Matthew Fortune <matthew.fortune@imgtec.com> * common/config/mips/mips-common.c (mips_handle_option): Ensure that -mfp32, -mfp64 disable -mfpxx and -mfpxx disables -mfp64. * config.gcc (--with-fp-32): New option. (--with-odd-spreg-32): Likewise. * config.in (HAVE_AS_DOT_MODULE): New config define. * config/mips/mips-protos.h (mips_secondary_memory_needed): New prototype. (mips_hard_regno_caller_save_mode): Likewise. * config/mips/mips.c (mips_get_reg_raw_mode): New static prototype. (mips_get_arg_info): Assert that V2SFmode is only handled specially with TARGET_PAIRED_SINGLE_FLOAT. (mips_return_mode_in_fpr_p): Likewise. (mips16_call_stub_mode_suffix): Likewise. (mips_get_reg_raw_mode): New static function. (mips_return_fpr_pair): O32 return values span two registers. (mips16_build_call_stub): Likewise. (mips_function_value_regno_p): Support both FP return registers. (mips_output_64bit_xfer): Use mthc1 whenever TARGET_HAS_MXHC1. Add specific cases for TARGET_FPXX to move via memory. (mips_dwarf_register_span): For TARGET_FPXX pretend that modes larger than UNITS_PER_FPREG 'span' one register. (mips_dwarf_frame_reg_mode): New static function. (mips_file_start): Switch to using .module instead of .gnu_attribute. No longer support FP ABI 4 (-mips32r2 -mfp64), replace with FP ABI 6. Add FP ABI 5 (-mfpxx) and FP ABI 7 (-mfp64 -mno-odd-spreg). (mips_save_reg, mips_restore_reg): Always represent DFmode frame slots with two CFI directives even for O32 FP64. (mips_for_each_saved_gpr_and_fpr): Account for fixed_regs when saving/restoring callee-saved registers. (mips_hard_regno_mode_ok_p): Implement O32 FP64A extension. (mips_secondary_memory_needed): New function. (mips_option_override): ABI check for TARGET_FLOATXX. Disable odd-numbered single-precision registers when using TARGET_FLOATXX. Implement -modd-spreg and defaults. (mips_conditional_register_usage): Redefine O32 FP64 to match O32 FP32 callee-saved behaviour. (mips_hard_regno_caller_save_mode): Implement. (TARGET_GET_RAW_RESULT_MODE): Define target hook. (TARGET_GET_RAW_ARG_MODE): Define target hook. (TARGET_DWARF_FRAME_REG_MODE): Define target hook. * config/mips/mips.h (TARGET_FLOAT32): New macro. (TARGET_O32_FP64A_ABI): Likewise. (TARGET_CPU_CPP_BUILTINS): TARGET_FPXX is __mips_fpr==0. Add _MIPS_SPFPSET builtin define. (MIPS_FPXX_OPTION_SPEC): New macro. (OPTION_DEFAULT_SPECS): Pass through --with-fp-32=* to -mfp and --with-odd-spreg-32=* to -m[no-]odd-spreg. (ISA_HAS_ODD_SPREG): New macro. (ISA_HAS_MXHC1): True for anything other than -mfp32. (ASM_SPEC): Pass through mfpxx, mfp64, -mno-odd-spreg and -modd-spreg. (MIN_FPRS_PER_FMT): Redefine in terms of TARGET_ODD_SPREG. (HARD_REGNO_CALLER_SAVE_MODE): Define. Implement O32 FPXX extension (HARD_REGNO_CALL_PART_CLOBBERED): Likewise. (SECONDARY_MEMORY_NEEDED): Likewise. (FUNCTION_ARG_REGNO_P): Update for O32 FPXX and FP64 extensions. * config/mips/mips.md (define_attr enabled): Implement O32 FPXX and FP64A ABI extensions. (move_doubleword_fpr<mode>): Use ISA_HAS_MXHC1 instead of TARGET_FLOAT64. * config/mips/mips.opt (mfpxx): New target option. (modd-spreg): Likewise. * config/mips/mti-elf.h (DRIVER_SELF_SPECS): Infer FP ABI from arch. * config/mips/mti-linux.h (DRIVER_SELF_SPECS): Likewise and remove fp64 sysroot. * config/mips/t-mti-elf: Remove fp64 multilib. * config/mips/t-mti-linux: Likewise. * configure.ac: Detect .module support. * configure: Regenerate. * doc/invoke.texi: Document -mfpxx, -modd-spreg, -mno-odd-spreg option. * doc/install.texi (--with-fp-32, --with-odd-spreg-32): Document new options. 2014-11-12 H.J. Lu <hongjiu.lu@intel.com> PR target/63815 * config/i386/i386.c (ix86_init_large_pic_reg): New. Extracted from ... (ix86_init_pic_reg): Here. Use ix86_init_large_pic_reg. (x86_output_mi_thunk): Set PIC register to %r11. Call ix86_init_large_pic_reg to initialize PIC register. 2014-11-12 Kai Tietz <ktietz@redhat.com> * sdbout.c (sdbout_symbol): Eliminate register only if decl isn't a global variable. 2014-11-12 Alan Lawrence <alan.lawrence@arm.com> * config/aarch64/aarch64.c (aarch64_simd_lane_bounds): Display indices. * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers): Add qualifier_lane_index. (aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): Rename to... (aarch64_types_quadop_lane_qualifiers, TYPES_QUADOP_LANE): ...these. (aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): New. (aarch64_types_getlane_qualifiers): Rename to... (aarch64_types_binop_imm_qualifiers): ...this. (TYPES_SHIFTIMM): Follow renaming. (TYPES_GETLANE): Rename to... (TYPE_GETREG): ...this. (aarch64_types_setlane_qualifiers): Rename to... (aarch64_type_ternop_imm_qualifiers): ...this. (TYPES_SHIFTINSERT, TYPES_SHIFTACC): Follow renaming. (TYPES_SETLANE): Follow renaming above, and rename self to... (TYPE_SETREG): ...this. (enum builtin_simd_arg): Add SIMD_ARG_LANE_INDEX. (aarch64_simd_expand_args): Add range check and endianness-flip. (aarch64_simd_expand_builtin): Add mapping for qualifier_lane_index. * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh_lane<mode>_internal *2): Rename to... (aarch64_sq<r>dmulh_lane<mode>): ...this, and remove lane bounds check. (aarch64_sqdmulh_lane<mode> *2, aarch64_sqrdmulh_lane<mode> *2): Delete. (aarch64_sq<r>dmulh_laneq<mode>_internal): Rename to... (aarch64_sq<r>dmulh_lane<mode>): ...this. (aarch64_sqdml<SBINQOPS:as>l_lane<mode>_internal *2): Rename to... (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): ...this. (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>_internal *2): Rename to... (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): ...this. (aarch64_sqdmull_lane<mode>_internal *2): Rename to... (aarch64_sqdmull_lane<mode>): ...this. (aarch64_sqdmull_laneq<mode>_internal *2): Rename to... (aarch64_sqdmull_laneq<mode>): ...this. (aarch64_sqdmulh_laneq<mode>, aarch64_sqrdmulh_laneq<mode>, (aarch64_sqdmlal_lane<mode>, aarch64_sqdmlal_laneq<mode>, aarch64_sqdmlsl_lane<mode>, aarch64_sqdmlsl_laneq<mode>, aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Delete. (aarch64_sqdmlal2_lane<mode>, aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>, aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>): Remove bounds check and lane flip. * config/aarch64/aarch64-simd-builtins.def (be_checked_get_lane, get_dregoi, get_dregci, getdregxi, get_qregoi,get_qregci, get_qregxi, set_qregoi, set_qregci, set_qregxi): Change qualifiers to GETREG. (sqdmlal_lane, sqdmlsl_lane, sqdmlal_laneq, sqdmlsl_laneq, sqdmlal2_lane, sqdmlsl2_lane, sqdmlal2_laneq, sqdmlsl2_laneq): Follow renaming of TERNOP_LANE to QUADOP_LANE. (sqdmull_lane, sqdmull_laneq, sqdmull2_lane, sqdmull2_laneq, sqdmulh_lane, sqdmulh_laneq, sqrdmulh_lane, sqrdmulh_laneq): Set qualifiers to TERNOP_LANE. 2014-11-12 Tobias Burnus <burnus@net-b.de> * Makefile.in (CLOOGLIBS, CLOOGINC): Remove. * configure.ac: Ditto. * graphite-interchange.c: Remove HAVE_CLOOG block. * config.in: Regenerate. * configure: Regenerate. 2014-11-12 Jiong Wang <jiong.wang@arm.com> * config/aarch64/aarch64.h (CALL_USED_REGISTERS): Mark LR as caller-save. (EPILOGUE_USES): Guard the check by epilogue_completed. * config/aarch64/aarch64.c (aarch64_layout_frame): Explictly check for LR. (aarch64_can_eliminate): Check LR_REGNUM liveness. 2014-11-12 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/arm/arm.c (*<arith_shift_insn>_shiftsi): Fix typo. 2014-11-12 Marek Polacek <polacek@redhat.com> * fold-const.c (fold_binary_loc): Don't fold if the result is undefined. * match.pd (A + (-B) -> A - B, A - (-B) -> A + B, -(-A) -> A): Likewise. 2014-11-12 Richard Biener <rguenther@suse.de> Merge from match-and-simplify branch 2014-11-04 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (user_id): Add new member is_oper_list. (user_id::user_id): Add new default argument. (parser::parse_operator_list): New function. (parser::parse_for): Allow operator-list. (parser::parse_pattern): Call parser::parse_operator_list. (parser::parse_operation): Reject operator-list. * match-builtin.pd: Define operator lists POWs, CBRTs and SQRTs. 2014-10-31 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (parser::parse_c_expr): Mark user-defined ops as used. 2014-10-30 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (parser::parse_op): Check if predicate is used in result operand. 2014-10-29 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (parser::parse_for): Make sure to have a valid token to report errors at. 2014-10-28 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (parser): Add new member parsing_match_operand. (parser::parse_operation): Check for conditional convert in result operand. (parser::parse_expr): Check for commutative operator in result operand. Check for :type in match operand. (parser::parse_simplify): Set/unset parsing_match_operand. (parser::parser): Initialize parsing_match_operand. 2014-10-28 Richard Biener <rguenther@suse.de> * genmatch.c (parser::parse_for): Properly check for already defined operators. 2014-10-28 Prathamesh Kulkarni <bilbotheelffriend@gmail.com> * genmatch.c (error_cb): Adjust for printing warnings. (warning_at): New function. (user_id): Add new member used. (get_operator): Mark user_id as used. (parse_for): Warn for unused operators. 2014-11-12 Richard Biener <rguenther@suse.de> * match.pd: Implement simple complex operations cancelling. * fold-const.c (fold_unary_loc): Remove them here. 2014-11-12 Joseph Myers <joseph@codesourcery.com> * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Define __NO_MATH_ERRNO__ if -fno-math-errno. * doc/cpp.texi (__NO_MATH_ERRNO__): Document predefined macro. 2014-11-12 Richard Biener <rguenther@suse.de> * genmatch.c (::gen_transform): Add capture_info and expand_compares arguments. (struct expr): Add is_generic flag. (lower_cond): New functions lowering [VEC_]COND_EXPR conditions to a GENERIC and a GIMPLE variant. (lower): Call lower_cond. (cmp_operand): Also compare the is_generic flag. (capture_info::cinfo): Add cond_expr_cond_p flag. (capture_info::capture_info): Pass down whether the expression argument is a COND_EXPR condition. (capture_info::walk_match): Likewise, mark captures capturing COND_EXPR conditions with cond_expr_cond_p. (expr::gen_transform): Pass down whether we need to expand compares from COND_EXPR conditions. (capture::gen_transform): Expand compares substituted from COND_EXPR conditions into non-COND_EXPR conditions. (dt_operand::gen_gimple_expr): Handle explicitely marked GENERIC expressions as generic. (dt_simplify::gen): Pass whether we need to expand conditions to gen_transform. Handle capture results which are from COND_EXPR conditions. (main): Pass gimple flag down to lower. 2014-11-12 Jakub Jelinek <jakub@redhat.com> PR c/59708 * builtin-attrs.def (ATTR_NOTHROW_TYPEGENERIC_LEAF): New attribute. * builtins.c (fold_builtin_arith_overflow): New function. (fold_builtin_3): Use it. * builtins.def (BUILT_IN_ADD_OVERFLOW, BUILT_IN_SUB_OVERFLOW, BUILT_IN_MUL_OVERFLOW, BUILT_IN_SADD_OVERFLOW, BUILT_IN_SADDL_OVERFLOW, BUILT_IN_SADDLL_OVERFLOW, BUILT_IN_SSUB_OVERFLOW, BUILT_IN_SSUBL_OVERFLOW, BUILT_IN_SSUBLL_OVERFLOW, BUILT_IN_SMUL_OVERFLOW, BUILT_IN_SMULL_OVERFLOW, BUILT_IN_SMULLL_OVERFLOW, BUILT_IN_UADDL_OVERFLOW, BUILT_IN_UADDLL_OVERFLOW, BUILT_IN_USUB_OVERFLOW, BUILT_IN_USUBL_OVERFLOW, BUILT_IN_USUBLL_OVERFLOW, BUILT_IN_UMUL_OVERFLOW, BUILT_IN_UMULL_OVERFLOW, BUILT_IN_UMULLL_OVERFLOW): New built-in functions. * builtin-types.def (BT_PTR_UINT, BT_PTR_ULONG, BT_PTR_LONGLONG, BT_FN_BOOL_INT_INT_INTPTR, BT_FN_BOOL_LONG_LONG_LONGPTR, BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, BT_FN_BOOL_UINT_UINT_UINTPTR, BT_FN_BOOL_ULONG_ULONG_ULONGPTR, BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, BT_FN_BOOL_VAR): New. * expr.c (write_complex_part): Remove prototype, no longer static. * expr.h (write_complex_part): New prototype. * function.c (aggregate_value_p): For internal functions return 0. * gimple-fold.c (arith_overflowed_p): New functions. (gimple_fold_call): Fold {ADD,SUB,MUL}_OVERFLOW internal calls. * gimple-fold.h (arith_overflowed_p): New prototype. * tree-ssa-dce.c: Include tree-ssa-propagate.h and gimple-fold.h. (find_non_realpart_uses, maybe_optimize_arith_overflow): New functions. (eliminate_unnecessary_stmts): Transform {ADD,SUB,MUL}_OVERFLOW into COMPLEX_CST/COMPLEX_EXPR if IMAGPART_EXPR of the result is never used. * gimplify.c (gimplify_call_expr): Handle gimplification of internal calls with lhs. * internal-fn.c (get_range_pos_neg, get_min_precision, expand_arith_overflow_result_store): New functions. (ubsan_expand_si_overflow_addsub_check): Renamed to ... (expand_addsub_overflow): ... this. Add LOC, LHS, ARG0, ARG1, UNSR_P, UNS0_P, UNS1_P, IS_UBSAN arguments, remove STMT argument. Handle ADD_OVERFLOW and SUB_OVERFLOW expansion. (ubsan_expand_si_overflow_neg_check): Renamed to ... (expand_neg_overflow): ... this. Add LOC, LHS, ARG1, IS_UBSAN arguments, remove STMT argument. Handle SUB_OVERFLOW with 0 as first argument expansion. (ubsan_expand_si_overflow_mul_check): Renamed to ... (expand_mul_overflow): ... this. Add LOC, LHS, ARG0, ARG1, UNSR_P, UNS0_P, UNS1_P, IS_UBSAN arguments, remove STMT argument. Handle MUL_OVERFLOW expansion. (expand_UBSAN_CHECK_ADD): Use expand_addsub_overflow, prepare arguments for it. (expand_UBSAN_CHECK_SUB): Use expand_addsub_overflow or expand_neg_overflow, prepare arguments for it. (expand_UBSAN_CHECK_MUL): Use expand_mul_overflow, prepare arguments for it. (expand_arith_overflow, expand_ADD_OVERFLOW, expand_SUB_OVERFLOW, expand_MUL_OVERFLOW): New functions. * internal-fn.def (ADD_OVERFLOW, SUB_OVERFLOW, MUL_OVERFLOW): New internal functions. * tree-vrp.c (check_for_binary_op_overflow): New function. (extract_range_basic): Handle {REAL,IMAG}PART_EXPR if the operand is SSA_NAME set by {ADD,SUB,MUL}_OVERFLOW internal functions. (simplify_internal_call_using_ranges): Handle {ADD,SUB,MUL}_OVERFLOW internal functions. * optabs.def (umulv4_optab): New optab. * config/i386/i386.md (umulv<mode>4, <u>mulvqi4): New define_expands. (*umulv<mode>4, *<u>mulvqi4): New define_insns. * doc/extend.texi (Integer Overflow Builtins): Document __builtin_*_overflow. 2014-11-12 Richard Biener <rguenther@suse.de> * genmatch.c (capture_info::capture_info): Add missing COND_EXPR handling. (capture_info::walk_match): Fix COND_EXPR handling. (capture_info::walk_result): Likewise. 2014-11-12 Richard Biener <rguenther@suse.de> PR middle-end/63821 * match.pd: Add missing conversion to the -(T)-X pattern. 2014-11-12 Richard Biener <rguenther@suse.de> PR bootstrap/63819 * hash-table.h: Include ggc.h also for generator programs. * genmatch.c (ggc_internal_cleared_alloc): Properly define using MEM_STAT_DECL instead of CXX_MEM_STAT_INFO. 2014-11-12 Thomas Preud'homme <thomas.preudhomme@arm.com> PR tree-optimization/63761 * tree-ssa-math-opts.c (bswap_replace): Construct gsi from cur_stmt rather than taking it as a parameter. Add some comments to explain the gsi_move_before in case of load and why canonicalization of bswap into a rotation is only done for 16bit values. (pass_optimize_bswap::execute): Adapt for loop via gsi to make gsi refer to the statement just before cur_stmt. Ignore 16bit bswap that are already in canonical form. Adapt bswap_replace to removal of its gsi parameter. 2014-11-12 Richard Sandiford <richard.sandiford@arm.com> * rtl.h (rtx_function, for_each_rtx, for_each_rtx_in_insn): Delete. * rtlanal.c (non_rtx_starting_operands, for_each_rtx_1, for_each_rtx): (for_each_rtx_in_insn): Delete. (init_rtlanal): Remove initialization of non_rtx_starting_operands. * df-core.c: Remove reference to for_each_rtx in comment. 2014-11-12 Tejas Belagod <tejas.belagod@arm.com> * Makefile.in (TEXI_GCC_FILES): Remove arm-acle-intrinsics.texi, arm-neon-intrinsics.texi, aarch64-acle-intrinsics.texi. * doc/aarch64-acle-intrinsics.texi: Remove. * doc/arm-acle-intrinsics.texi: Remove. * doc/arm-neon-intrinsics.texi: Remove. * doc/extend.texi: Consolidate sections AArch64 intrinsics, ARM NEON Intrinsics, ARM ACLE Intrinsics into one ARM C Language Extension section. Add references to public ACLE specification. 2014-11-11 Patrick Palka <ppalka@gcc.gnu.org> * tree-vrp.c (register_edge_assert_for_2): Change return type to void and adjust accordingly. (register_edge_assert_for_1): Likewise. (register_edge_assert_for): Likewise. (find_conditional_asserts): Likewise. (find_switch_asserts): Likewise. (find_assert_locations_1): Likewise. (find_assert_locations): Likewise. (insert_range_insertions): Inspect the need_assert_for bitmap. 2014-11-11 Andrew Pinski <apinski@cavium.com> Bug target/61997 * config.gcc (aarch64*-*-*): Set target_gtfiles to include aarch64-builtins.c. * config/aarch64/aarch64-builtins.c: Include gt-aarch64-builtins.h at the end of the file. 2014-11-11 Anthony Brandon <anthony.brandon@gmail.com> Manuel López-Ibáñez <manu@gcc.gnu.org> PR driver/36312 * diagnostic-core.h: Add prototype for fatal_error. * diagnostic.c (fatal_error): New function fatal_error. * gcc.c (store_arg): Remove have_o_argbuf_index. (process_command): Check if input and output files are the same. * toplev.c (init_asm_output): Check if input and output files are the same. 2014-11-11 Eric Botcazou <ebotcazou@adacore.com> * reorg.c (fill_slots_from_thread): Do not copy frame-related insns. 2014-11-11 Eric Botcazou <ebotcazou@adacore.com> PR target/61535 * config/sparc/sparc.c (function_arg_vector_value): Deal with vectors smaller than 8 bytes. (sparc_function_arg_1): Tweak. (sparc_function_value_1): Tweak. 2014-11-11 David Malcolm <dmalcolm@redhat.com> * ChangeLog.jit: New. * Makefile.in (doc_build_sys): New variable, set to "sphinx" if sphinx is installed, falling back to "texinfo" otherwise. (FULL_DRIVER_NAME): New variable, adapted from the install-driver target. New target, a symlink within the builddir, linked to "xgcc", for use when running the JIT library from the builddir. (MOSTLYCLEANFILES): Add FULL_DRIVER_NAME. (install-driver): Use $(FULL_DRIVER_NAME) rather than spelling it out. * configure.ac (doc_build_sys): New variable, set to "sphinx" if sphinx is installed, falling back to "texinfo" otherwise. (GCC_DRIVER_NAME): Generate a gcc-driver-name.h file containing GCC_DRIVER_NAME for the benefit of jit/internal-api.c. * configure: Regenerate. * doc/install.texi (--enable-host-shared): Specify that this is required when building libgccjit. (Tools/packages necessary for modifying GCC): Add Sphinx. * timevar.def (TV_JIT_REPLAY): New. (TV_ASSEMBLE): New. (TV_LINK): New. (TV_LOAD): New. 2014-11-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR target/63610 * configure: Regenerate. 2014-11-11 James Greenhalgh <james.greenhalgh@arm.com> * config/aarch64/aarch64-simd.md (aarch64_simd_bsl<mode>_internal): Remove float cases, canonicalize. (aarch64_simd_bsl<mode>): Add gen_lowpart expressions where we are punning between float vectors and integer vectors. 2014-11-11 Uros Bizjak <ubizjak@gmail.com> * config/alpha/alpha.c (alpha_emit_conditional_branch): Replace open-coded swap with std::swap to swap values. (alpha_emit_setcc): Ditto. (alpha_emit_conditional_move): Ditto. (alpha_split_tmode_pair): Ditto. 2014-11-11 Evgeny Stupachenko <evstupac@gmail.com> * tree-vect-data-refs.c (vect_shift_permute_load_chain): Extend shift permutations on power of 2 cases. 2014-11-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.h (MACHMODE): Remove 'enum' keyword. (CUMULATIVE_ARGS): Guard on !defined(USED_FOR_TARGET). 2014-11-11 Richard Biener <rguenther@suse.de> * tree-core.h (pedantic_lvalues): Remove. * fold-const.c (pedantic_lvalues): Likewise. (pedantic_non_lvalue_loc): Remove conditional non_lvalue_loc call. 2014-11-11 Martin Liska <mliska@suse.cz> PR ipa/63622 PR ipa/63795 * ipa-icf.c (sem_function::merge): Add new target symbol alias support guard. (sem_variable::merge): Likewise. * ipa-icf.h (target_supports_symbol_aliases_p): New function. 2014-11-11 Richard Biener <rguenther@suse.de> * match.pd: Implement patterns from associate_plusminus and factor in differences from the fold-const.c implementation. * fold-const.c (fold_binary_loc): Remove patterns here. * tree-ssa-forwprop.c (associate_plusminus): Remove. (pass_forwprop::execute): Don't call it. * tree.c (tree_nop_conversion_p): New function, factored from tree_nop_conversion. * tree.h (tree_nop_conversion_p): Declare. 2014-11-11 Uros Bizjak <ubizjak@gmail.com> * system.h: Include algorithm and utility. * rtl.h: Do not include utility here. * wide-int.h: Ditto. * tree-vect-data-refs.c (swap): Remove template. (vect_prune_runtime_alias_test_list): Use std::swap instead of swap. 2014-11-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR bootstrap/63699 PR bootstrap/63750 * system.h: Include <string> before "safe-ctype.h" * wide-int.h (wi::smin, wi::smax, wi::umin, wi::umax): Prefix calls to min/max with wi namespace. * ipa-chkp.c: Don't include <string>. 2014-11-11 Terry Guo <terry.guo@arm.com> * doc/invoke.texi (-masm-syntax-unified): Reword and fix typo. * config/arm/thumb1.md (*thumb_mulsi3): Use movs to move low registers. (*thumb1_movhf): Likewise. 2014-11-11 Uros Bizjak <ubizjak@gmail.com> * sreal.c (sreal::to_int): Use INTTYPE_MAXIMUM (int64_t) instead of INT64_MAX. 2014-11-11 Tobias Burnus <burnus@net-b.de> * doc/install.texi (Prerequisites): Remove CLooG. 2014-11-10 Trevor Saunders <tsaunders@mozilla.com> * ipa-inline.c (edge_badness): Adjust. (inline_small_functions): Likewise. * predict.c (propagate_freq): Likewise. (estimate_bb_frequencies): Likewise. * sreal.c (sreal::dump): Rename from dump_sreal. (debug): Adjust. (copy): Remove function. (sreal::shift_right): Rename from sreal_sift_right. (sreal::normalize): Rename from normalize. (sreal_init): Remove function. (sreal::to_int): Rename from sreal_to_int. (sreal_compare): Remove function. (sreal::operator+): Rename from sreal_add. (sreal::operator-): Rename from sreal_sub. (sreal::operator*): Rename from sreal_mul. (sreal::operator/): Rename from sreal_div. * sreal.h (class sreal): Adjust. (inline sreal &operator+=): New operator. (inline sreal &operator-=): Likewise. (inline sreal &operator/=): Likewise. (inline sreal &operator*=): Likewise. (inline bool operator!=): Likewise. (inline bool operator>): Likewise. (inline bool operator<=): Likewise. (inline bool operator>=): Likewise. 2014-11-11 Bin Cheng <bin.cheng@arm.com> * sched-deps.c (sched_analyze_1): Check pending list if it is not less than MAX_PENDING_LIST_LENGTH. (sched_analyze_2, sched_analyze_insn, deps_analyze_insn): Ditto. 2014-11-11 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.c (ix86_decompose_address): Replace open-coded swap with std::swap to swap values. (ix86_fixup_binary_operands): Ditto. (ix86_binary_operator_ok): Ditto. (ix86_prepare_fp_compare_args): Ditto. (ix86_expand_branch): Ditto. (ix86_expand_carry_flag_compare): Ditto. (ix86_expand_int_movcc): Ditto. (ix86_prepare_sse_fp_compare_args): Ditto. (ix86_expand_sse_fp_minmax): Ditto. (ix86_expand_int_vcond): Ditto. (ix86_split_long_move): Ditto. (ix86_expand_sse_comi): Ditto. (ix86_expand_sse_compare_and_jump): Ditto. (ix86_expand_sse_compare_mask): Ditto. * config/i386/i386.md (*add<mode>_1): Ditto. (addsi_1_zext): Ditto. (*addhi_1): Ditto. (*addqi_1): Ditto. (*add<mode>_2): Ditto. (*addsi_2_zext): Ditto. (*add<mode>_3): Ditto. (*addsi_3_zext): Ditto. (*add<mode>_5): Ditto. (absneg splitter): Ditto. 2014-11-11 Uros Bizjak <ubizjak@gmail.com> Revert: 2014-10-31 Uros Bizjak <ubizjak@gmail.com> PR target/63620 * config/i386/i386-protos.h (ix86_use_pseudo_pic_reg): Declare. * config/i386/i386.c (ix86_use_pseudo_pic_reg): Export. * config/i386/i386.md (*pushtf): Allow only CONST_DOUBLEs that won't be reloaded through memory. (*pushxf): Ditto. (*pushdf): Ditto. 2014-11-11 Jakub Jelinek <jakub@redhat.com> Martin Liska <mliska@suse.cz> * ipa-icf-gimple.c (func_checker::compare_bb): Fix comment typo. (func_checker::compare_gimple_call): Compare gimple_call_fn, gimple_call_chain, gimple_call_fntype and call flags. 2014-11-10 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/63620 PR rtl-optimization/63799 * lra-lives.c (process_bb_lives): Do not delete EH_REGION, trapped and setting PIC pseudo insns. (lra_create_live_ranges): Fix the typo. 2014-11-10 Patrick Palka <ppalka@gcc.gnu.org> PR middle-end/63748 * tree-ssa-propagate.c (may_propagate_copy): Allow propagating SSA copies whose source and destination names both occur in abnormal PHIs. 2014-11-10 Roman Gareev <gareevroman@gmail.com> * Makefile.in: Remove the compilation of graphite-clast-to-gimple.o. * common.opt: Remove using of fgraphite-code-generator flag. * flag-types.h: Likewise. * graphite.c: Remove using of CLooG. * graphite-blocking.c: Likewise. * graphite-dependences.c: Likewise. * graphite-poly.c: Likewise. * graphite-poly.h: Likewise. * graphite-scop-detection.c: Likewise. * graphite-sese-to-poly.c: Likewise. * graphite-clast-to-gimple.c: Removed. * graphite-clast-to-gimple.h: Likewise. * graphite-htab.h: Likewise. 2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * doc/invoke.texi ([-Wshift-count-negative, -Wshift-count-overflow]): Add. 2014-11-10 Richard Sandiford <richard.sandiford@arm.com> * config/frv/frv.c (frv_io_handle_use_1): Delete. (frv_io_handle_use): Use find_all_hard_regs. 2014-11-10 Richard Sandiford <richard.sandiford@arm.com> * config/frv/frv.c (frv_registers_conflict_p_1): Take an rtx rather than an rtx *. Take the regstate_t directly rather than via a void *. Return a bool rather than an int. Iterate over all subrtxes here. (frv_registers_conflict_p): Update accordingly. 2014-11-10 Richard Sandiford <richard.sandiford@arm.com> * config/frv/frv.c: Include rtl-iter.h. (frv_acc_group_1): Delete. (frv_acc_group): Use FOR_EACH_SUBRTX. 2014-11-10 Richard Sandiford <richard.sandiford@arm.com> * config/frv/frv.c: Move include of rtl.h after hard-reg-set.h. (frv_clear_registers_used): Delete. (frv_ifcvt_modify_tests): Use find_all_hard_regs. 2014-11-10 Jan Hubicka <hubicka@ucw.cz> PR bootstrap/63573 * calls.c (initialize_argument_information): When emitting thunk call use original memory placement of the argument. 2014-11-10 Renlin Li <renlin.li@arm.com> PR middle-end/61529 * tree-ssa-threadupdate.c (compute_path_counts): Bound path_in_freq. 2014-11-10 Thomas Preud'homme <thomas.preudhomme@arm.com> * expmed.c (expand_shift_1): Expand 8 bit rotate of 16 bit value to bswaphi if available. 2014-11-10 Bernd Schmidt <bernds@codesourcery.com> * config/nvptx/nvptx.c: New file. * config/nvptx/nvptx.h: New file. * config/nvptx/nvptx-protos.h: New file. * config/nvptx/nvptx.md: New file. * config/nvptx/t-nvptx: New file. * config/nvptx/nvptx.opt: New file. * common/config/nvptx/nvptx-common.c: New file. * config.gcc: Handle nvptx-*-*. 2014-11-10 Richard Biener <rguenther@suse.de> * tree-ssa-operands.c (finalize_ssa_uses): Properly put released operands on the free list. 2014-11-10 Richard Biener <rguenther@suse.de> * match.pd: Implement pattern from simplify_mult. * tree-ssa-forwprop.c (simplify_mult): Remove. (pass_forwprop::execute): Do not call simplify_mult. 2014-11-10 Richard Biener <rguenther@suse.de> PR tree-optimization/63800 * tree-ssa-pre.c (eliminate_push_avail): Push in a way so we can restore the previous availability in after_dom_children. (eliminate_dom_walker::after_dom_children): Restore previous availability. 2014-11-10 Richard Biener <rguenther@suse.de> PR middle-end/63798 * expr.c (expand_expr_real_2): When expanding FMA_EXPRs properly treat the embedded multiplication as commutative when looking for feeding negates. 2014-11-10 Joern Rennecke <joern.rennecke@embecosm.com> * config/avr/avr.h (CPLUSPLUS_CPP_SPEC): Define. 2014-11-10 Martin Liska <mliska@suse.cz> * gcc.dg/tree-ssa/ldist-19.c: ICF is disabled for the test because of default char signedness on powerpc64 target. 2014-11-10 Richard Biener <rguenther@suse.de> * match.pd: Implement pattern from simplify_conversion_from_bitmask. * tree-ssa-forwprop.c (simplify_conversion_from_bitmask): Remove. (pass_forwprop::execute): Do not call simplify_conversion_from_bitmask. 2014-11-10 Richard Biener <rguenther@suse.de> * match.pd: Move rest of the conversion combining patterns from tree-ssa-forwprop.c. * tree-ssa-forwprop.c (combine_conversions): Remove. (pass_forwprop::execute): Do not call it. 2014-11-10 Eric Botcazou <ebotcazou@adacore.com> * gimple-low.c (lower_function_body): Clear the location of the first inserted representative return if it also fills in for the fallthru. 2014-11-10 Yuri Rumyantsev <ysrumyan@gmail.com> * tree-if-conv.c (add_to_predicate_list): Check unconditionally that bb is always executed to early exit. Use predicate of cd-equivalent block for join blocks if it exists. (if_convertible_loop_p_1): Recompute POST_DOMINATOR tree. (tree_if_conversion): Free post-dominance information. 2014-11-09 Jason Merrill <jason@redhat.com> * config/i386/avx512vldqintrin.h (_mm256_broadcast_f32x2): __mmask8. * config/i386/avx512vlintrin.h (_mm256_mask_cvtepi32_storeu_epi16) (_mm_mask_cvtusepi32_storeu_epi16) (_mm_mask_cvtsepi64_storeu_epi32): Return void. 2014-11-09 Joern Rennecke <joern.rennecke@embecosm.com> * config/avr/predicates.md (low_io_address_operand): Fix typo. 2014-11-09 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/63620 * lra-constraints.c (substitute_pseudo): Add prefix lra_ to the name. Move to lra.c. Make it external. (substitute_pseudo_within_insn): Ditto. (inherit_reload_reg, split_reg, remove_inheritance_pseudos): Use the new names. (undo_optional_reloads): Ditto. * lra-int.h (lra_dump_bitmap_with_title, lra_substitute_pseudo): New prototypes. (lra_substitute_pseudo_within_insn): Ditto. * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): New. (mark_regno_live): Add parameter. Update bb_gen_pseudos. (mark_regno_dead): Add parameter. Update bb_gen_pseudos and bb_killed_pseudos. (struct bb_data, bb_data_t, bb_data): New. (get_bb_data, get_bb_data_by_index): Ditto. (all_hard_regs_bitmap): New. (live_trans_fun, live_con_fun_0, live_con_fun_n, all_blocks): New. (initiate_live_solver, finish_live_solver): New. (process_bb_lives): Change return type. Add code updating local live data and removing dead insns. Pass new argument to mark_regno_live and mark_regno_dead. Check changing bb pseudo life info. Return the result. (lra_create_live_ranges): Add code to do global pseudo live analysis. (lra_live_ranges_init): Call initiate_live_solver. (lra_live_ranges_finish): Call finish_live_solver. * lra.c (lra_dump_bitmap_with_title): New. (lra_substitute_pseudo, lra_substitute_pseudo_within_insn): Move from lra-constraints.c. 2014-11-09 Richard Biener <rguenther@suse.de> * match.pd: Add patterns convering two conversions in a row from fold-const.c. * fold-const.c (fold_unary_loc): Remove them here. * tree-ssa-forwprop.c (combine_conversions): Likewise. * genmatch.c (dt_node::gen_kids): Check whether we may follow SSA use-def chains. 2014-11-08 Richard Sandiford <richard.sandiford@arm.com> * config/aarch64/aarch64.c: Include rtl-iter.h. (aarch64_tls_operand_p_1): Delete. (aarch64_tls_operand_p): Use FOR_EACH_SUBRTX. 2014-11-08 Richard Sandiford <richard.sandiford@arm.com> * config/arm/arm.c (arm_note_pic_base): Delete. (arm_cannot_copy_insn_p): Use FOR_EACH_SUBRTX. 2014-11-08 Richard Sandiford <richard.sandiford@arm.com> * config/arm/arm.c: Include rtl-iter.h. (arm_tls_referenced_p_1): Delete. (arm_tls_referenced_p): Use FOR_EACH_SUBRTX. 2014-11-08 Richard Sandiford <richard.sandiford@arm.com> * config/arm/aarch-common.c: Include rtl-iter.h. (search_term, arm_find_sub_rtx_with_search_term): Delete. (arm_find_sub_rtx_with_code): Use FOR_EACH_SUBRTX_VAR. (arm_get_set_operands): Pass the insn pattern rather than the insn itself. (arm_no_early_store_addr_dep): Likewise. 2014-11-08 Eric Botcazou <ebotcazou@adacore.com> * config/arm/arm.c (arm_set_return_address): Mark the store as frame related, if any. (thumb_set_return_address): Likewise. 2014-11-07 Jeff Law <law@redhat.com> PR tree-optimization/61515 * tree-ssa-threadedge.c (invalidate_equivalences): Walk the unwinding stack rather than looking at every SSA_NAME's value. 2014-11-07 Richard Biener <rguenther@suse.de> PR tree-optimization/63605 * fold-const.c (fold_binary_loc): Properly use element_precision for types that may not be scalar. 2014-11-07 Evgeny Stupachenko <evstupac@gmail.com> PR target/63534 * config/i386/i386.md (builtin_setjmp_receiver): Use pic_offset_table_rtx for PIC register. (nonlocal_goto_receiver): Delete. 2014-11-07 Daniel Hellstrom <daniel@gaisler.com> * config.gcc (sparc-*-rtems*): Clean away unused t-elf. * config/sparc/t-rtems: Add leon3v7 and muser-mode multilibs. 2014-11-07 Martin Liska <mliska@suse.cz> PR ipa/63580 * cgraphunit.c (cgraph_node::create_wrapper): TREE_ADDRESSABLE is set to false for a newly created thunk. 2014-11-07 Martin Liska <mliska@suse.cz> PR ipa/63747 * ipa-icf-gimple.c (func_checker::compare_gimple_switch): Missing checking for CASE_LOW and CASE_HIGH added. 2014-11-07 Martin Liska <mliska@suse.cz> PR ipa/63595 * cgraphunit.c (cgraph_node::expand_thunk): DECL_BY_REFERENCE is correctly handled for thunks created by IPA ICF. 2014-11-07 Jiong Wang <jiong.wang@arm.com> 2014-11-07 Richard Biener <rguenther@suse.de> PR tree-optimization/63676 * gimple-fold.c (fold_gimple_assign): Do not fold node when TREE_CLOBBER_P be true. 2014-11-07 Richard Biener <rguenther@suse.de> PR middle-end/63770 * match.pd: Guard conflicting GENERIC pattern properly. 2014-11-07 Richard Biener <rguenther@suse.de> * match.pd: Add patterns for POINTER_PLUS_EXPR association and special patterns from tree-ssa-forwprop.c * fold-const.c (fold_binary_loc): Remove them here. * tree-ssa-forwprop.c (to_purge): New global bitmap. (fwprop_set_lattice_val): New function. (fwprop_invalidate_lattice): Likewise. (remove_prop_source_from_use): Instead of purging dead EH edges record blocks to do that in to_purge. (tidy_after_forward_propagate_addr): Likewise. (forward_propagate_addr_expr): Invalidate the lattice for SSA names we release. (simplify_conversion_from_bitmask): Likewise. (simplify_builtin_call): Likewise. (associate_pointerplus_align): Remove. (associate_pointerplus_diff): Likewise. (associate_pointerplus): Likewise. (fold_all_stmts): Merge with ... (pass_forwprop::execute): ... the original loop over all basic-blocks. Delay purging dead EH edges and invalidate the lattice for SSA names we release. 2014-11-07 Terry Guo <terry.guo@arm.com> * config/arm/arm.opt (masm-syntax-unified): New option. * doc/invoke.texi (-masm-syntax-unified): Document new option. * config/arm/arm.h (TARGET_UNIFIED_ASM): Also include thumb1. (ASM_APP_ON): Redefined. * config/arm/arm.c (arm_option_override): Thumb2 inline assembly code always use UAL syntax. (arm_output_mi_thunk): Use UAL syntax for Thumb1 target. * config/arm/thumb1.md: Likewise. 2014-11-06 John David Anglin <danglin@gcc.gnu.org> * config/pa/pa.md (trap): New insn. Add "trap" to attribute type. Don't allow trap insn in in_branch_delay, in_nullified_branch_delay or in_call_delay. 2014-11-06 Steve Ellcey <sellcey@imgtec.com> * config.gcc (mips*-mti-linux*): Remove gnu_ld and gas assignments. Set default_mips_arch and default_mips_abi instead of tm_defines. (mips*-*-linux*): Set default_mips_arch and default_mips_abi instead of tm_defines. (mips*-*-*): Check with_arch and with_abi. Set tm_defines. * config/mips/mips.h (STANDARD_STARTFILE_PREFIX_1): Set default based on MIPS_ABI_DEFAULT. (STANDARD_STARTFILE_PREFIX_2): Ditto. 2014-11-06 Joseph Myers <joseph@codesourcery.com> * doc/invoke.texi (-std=c99, -std=c11): Don't refer to corner cases of extended identifiers. 2014-11-06 Eric Botcazou <ebotcazou@adacore.com> * tree-cfgcleanup.c (fixup_noreturn_call): Do not perform DCE here. 2014-11-06 DJ Delorie <dj@redhat.com> * config/m32c/cond.md (movqicc_<code>_<mode>): Remove mode of conditional. (movhicc_<code>_<mode>): Likewise. * config/m32c/m32c.c (encode_pattern_1): Specialise PSImode subregs. (m32c_eh_return_data_regno): Change to using memregs to avoid tying up all the compute regs. (m32c_legitimate_address_p) Subregs are not valid addresses. 2014-11-06 Bernd Schmidt <bernds@codesourcery.com> * function.c (thread_prologue_and_epilogue_insns): No longer static. * function.h (thread_prologue_and_epilogue_insns): Declare. * target.def (assemble_undefined_decl): New hooks. * hooks.c (hook_void_FILEptr_constcharptr_const_tree): New function. * hooks.h (hook_void_FILEptr_constcharptr_const_tree): Declare. * doc/tm.texi.in (TARGET_ASM_ASSEMBLE_UNDEFINED_DECL): Add. * doc/tm.texi: Regenerate. * output.h (assemble_undefined_decl): Declare. (get_fnname_from_decl): Declare. * varasm.c (assemble_undefined_decl): New function. (get_fnname_from_decl): New function. * final.c (rest_of_handle_final): Use it. * varpool.c (varpool_output_variables): Call assemble_undefined_decl for nodes without a definition. * target.def (call_args, end_call_args): New hooks. * hooks.c (hook_void_rtx_tree): New empty function. * hooks.h (hook_void_rtx_tree): Declare. * doc/tm.texi.in (TARGET_CALL_ARGS, TARGET_END_CALL_ARGS): Add. * doc/tm.texi: Regenerate. * calls.c (expand_call): Slightly rearrange the code. Use the two new hooks. (expand_library_call_value_1): Use the two new hooks. * expr.c (use_reg_mode): Just return for pseudo registers. * combine.c (try_combine): Don't allow a call as one of the source insns. * target.def (decl_end): New hook. * varasm.c (assemble_variable_contents, assemble_constant_contents): Use it. * doc/tm.texi.in (TARGET_ASM_DECL_END): Add. * doc/tm.texi: Regenerate. 2014-11-06 Renlin Li <renlin.li@arm.com> * config/aarch64/aarch64.c (aarch64_architecture_version): New. (processor): New architecture_version field. (aarch64_override_options): Initialize aarch64_architecture_version. * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_ARCH, __ARM_ARCH_PROFILE, aarch64_arch_name macro. 2014-11-06 James Greenhalgh <james.greenhalgh@arm.com> * params.def (sra-max-scalarization-size-Ospeed): New. (sra-max-scalarization-size-Osize): Likewise. * doc/invoke.texi (sra-max-scalarization-size-Ospeed): Document. (sra-max-scalarization-size-Osize): Likewise. * toplev.c (process_options): Set default values for new parameters. * tree-sra.c (analyze_all_variable_accesses): Use new parameters. * targhooks.c (get_move_ratio): Remove static designator. * target.h (get_move_ratio): Declare. 2014-11-06 Marek Polacek <polacek@redhat.com> * sanopt.c (sanopt_optimize_walker): Limit removal of the checks. Remove vector limit. 2014-11-06 Richard Biener <rguenther@suse.de> * match.pd: Implement bitwise binary and unary simplifications from tree-ssa-forwprop.c. * fold-const.c (fold_unary_loc): Remove them here. (fold_binary_loc): Likewise. * tree-ssa-forwprop.c (simplify_not_neg_expr): Remove. (truth_valued_ssa_name): Likewise. (lookup_logical_inverted_value): Likewise. (simplify_bitwise_binary_1): Likewise. (hoist_conversion_for_bitop_p): Likewise. (simplify_bitwise_binary_boolean): Likewise. (simplify_bitwise_binary): Likewise. (pass_forwprop::execute): Remove calls to simplify_not_neg_expr and simplify_bitwise_binary. * genmatch.c (dt_node::append_true_op): Use safe_as_a for parent. (decision_tree::insert): Also insert non-expressions. 2014-11-06 Hale Wang <hale.wang@arm.com> * config/arm/arm-cores.def: Add support for -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, cortex-m1.small-multiply. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * config/arm/arm.c: Update the rtx-costs for MUL. * config/arm/bpabi.h: Handle -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, cortex-m1.small-multiply. * doc/invoke.texi: Document -mcpu=cortex-m0.small-multiply,cortex-m0plus.small-multiply, cortex-m1.small-multiply. 2014-11-06 Hale Wang <hale.wang@arm.com> * config/arm/arm.c: Add cortex-m7 tune. * config/arm/arm-cores.def: Use cortex-m7 tune. 2014-11-05 Uros Bizjak <ubizjak@gmail.com> PR target/63538 * config/i386/i386.c (in_large_data_p): Reject automatic variables. (ix86_encode_section_info): Do not check for non-automatic varibles when setting SYMBOL_FLAG_FAR_ADDR flag. (x86_64_elf_select_section): Do not check ix86_cmodel here. (x86_64_elf_unique_section): Ditto. (x86_elf_aligned_common): Emit tab before .largecomm. 2014-11-05 Joseph Myers <joseph@codesourcery.com> PR preprocessor/9449 * doc/cpp.texi (Character sets, Tokenization) (Implementation-defined behavior): Don't refer to UCNs in identifiers requiring -fextended-identifiers. * doc/cppopts.texi (-fextended-identifiers): Document as enabled by default for C99 and later and C++. * doc/invoke.texi (-std=c99, -std=c11): Don't refer to extended identifiers needing -fextended-identifiers. 2014-11-05 Ilya Tocar <ilya.tocar@intel.com> * config/i386/i386.c (expand_vec_perm_pshufb): Try vpermq/vpermd for 512-bit wide modes. (expand_vec_perm_1): Use correct versions of patterns. * config/i386/sse.md (avx512f_vec_dup<mode>_1): New. (vashr<mode>3<mask_name>): Split V8HImode and V16QImode. 2014-11-05 Ilya Enkovich <ilya.enkovich@intel.com> * ipa-chkp.c: New. * ipa-chkp.h: New. * tree-chkp.c: New. * tree-chkp.h: New. * tree-chkp-opt.c: New. * rtl-chkp.c: New. * rtl-chkp.h: New. * Makefile.in (OBJS): Add ipa-chkp.o, rtl-chkp.o, tree-chkp.o tree-chkp-opt.o. (GTFILES): Add tree-chkp.c. * mode-classes.def (MODE_POINTER_BOUNDS): New. * tree.def (POINTER_BOUNDS_TYPE): New. * genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS. (POINTER_BOUNDS_MODE): New. (make_pointer_bounds_mode): New. * machmode.h (POINTER_BOUNDS_MODE_P): New. * stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS. (layout_type): Support POINTER_BOUNDS_TYPE. * tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE. * tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE. * tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE. (type_contains_placeholder_1): Likewise. (build_common_tree_nodes): Initialize pointer_bounds_type_node. * tree.h (POINTER_BOUNDS_TYPE_P): New. (pointer_bounds_type_node): New. (POINTER_BOUNDS_P): New. (BOUNDED_TYPE_P): New. (BOUNDED_P): New. (CALL_WITH_BOUNDS_P): New. * gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS. (gimple_call_with_bounds_p): New. (gimple_call_set_with_bounds): New. (gimple_return_retbnd): New. (gimple_return_set_retbnd): New * gimple.c (gimple_build_return): Increase number of ops for return statement. (gimple_build_call_from_tree): Propagate CALL_WITH_BOUNDS_P flag. * gimple-pretty-print.c (dump_gimple_return): Print second op. * rtl.h (CALL_EXPR_WITH_BOUNDS_P): New. * gimplify.c (gimplify_init_constructor): Avoid infinite loop during gimplification of bounds initializer. * calls.c: Include tree-chkp.h, rtl-chkp.h, bitmap.h. (special_function_p): Use original decl name when analyzing instrumentation clone. (arg_data): Add fields special_slot, pointer_arg and pointer_offset. (store_bounds): New. (emit_call_1): Propagate instrumentation flag for CALL. (initialize_argument_information): Compute pointer_arg, pointer_offset and special_slot for pointer bounds arguments. (finalize_must_preallocate): Preallocate when storing bounds in bounds table. (compute_argument_addresses): Skip pointer bounds. (expand_call): Store bounds into tables separately. Return result joined with resulting bounds. * cfgexpand.c: Include tree-chkp.h, rtl-chkp.h. (expand_call_stmt): Propagate bounds flag for CALL_EXPR. (expand_return): Add returned bounds arg. Handle returned bounds. (expand_gimple_stmt_1): Adjust to new expand_return signature. (gimple_expand_cfg): Reset rtx bounds map. * expr.c: Include tree-chkp.h, rtl-chkp.h. (expand_assignment): Handle returned bounds. (store_expr_with_bounds): New. Replaces store_expr with new bounds target argument. Handle bounds returned by calls. (store_expr): Now wraps store_expr_with_bounds. * expr.h (store_expr_with_bounds): New. * function.c: Include tree-chkp.h, rtl-chkp.h. (bounds_parm_data): New. (use_register_for_decl): Do not registerize decls used for bounds stores and loads. (assign_parms_augmented_arg_list): Add bounds of the result structure pointer as the second argument. (assign_parm_find_entry_rtl): Mark bounds are never passed on the stack. (assign_parm_is_stack_parm): Likewise. (assign_parm_load_bounds): New. (assign_bounds): New. (assign_parms): Load bounds and determine a location for returned bounds. (diddle_return_value_1): New. (diddle_return_value): Handle returned bounds. * function.h (rtl_data): Add field for returned bounds. * varasm.c: Include tree-chkp.h. (output_constant): Support POINTER_BOUNDS_TYPE. (output_constant_pool_2): Support MODE_POINTER_BOUNDS. (ultimate_transparent_alias_target): Move up. (make_decl_rtl): For instrumented function use name of the original decl. (assemble_start_function): Mark function as global in case it is instrumentation clone of the global function. (do_assemble_alias): Follow transparent alias chain for identifier. Check if original alias is public. (maybe_assemble_visibility): Use visibility of the original function for instrumented version. (default_unique_section): Likewise. * emit-rtl.c (immed_double_const): Support MODE_POINTER_BOUNDS. (init_emit_once): Build pointer bounds zero constants. * explow.c (trunc_int_for_mode): Support MODE_POINTER_BOUNDS. * target.def (builtin_chkp_function): New. (chkp_bound_type): New. (chkp_bound_mode): New. (chkp_make_bounds_constant): New. (chkp_initialize_bounds): New. (load_bounds_for_arg): New. (store_bounds_for_arg): New. (load_returned_bounds): New. (store_returned_bounds): New. (chkp_function_value_bounds): New. (setup_incoming_vararg_bounds): New. (function_arg): Update hook description with new possible return value CONST_INT. * targhooks.h (default_load_bounds_for_arg): New. (default_store_bounds_for_arg): New. (default_load_returned_bounds): New. (default_store_returned_bounds): New. (default_chkp_bound_type): New. (default_chkp_bound_mode): New. (default_builtin_chkp_function): New. (default_chkp_function_value_bounds): New. (default_chkp_make_bounds_constant): New. (default_chkp_initialize_bounds): New. (default_setup_incoming_vararg_bounds): New. * targhooks.c (default_load_bounds_for_arg): New. (default_store_bounds_for_arg): New. (default_load_returned_bounds): New. (default_store_returned_bounds): New. (default_chkp_bound_type): New. (default_chkp_bound_mode); New. (default_builtin_chkp_function): New. (default_chkp_function_value_bounds): New. (default_chkp_make_bounds_constant): New. (default_chkp_initialize_bounds): New. (default_setup_incoming_vararg_bounds): New. * builtin-types.def (BT_BND): New. (BT_FN_PTR_CONST_PTR): New. (BT_FN_CONST_PTR_CONST_PTR): New. (BT_FN_BND_CONST_PTR): New. (BT_FN_CONST_PTR_BND): New. (BT_FN_PTR_CONST_PTR_SIZE): New. (BT_FN_PTR_CONST_PTR_CONST_PTR): New. (BT_FN_VOID_PTRPTR_CONST_PTR): New. (BT_FN_VOID_CONST_PTR_SIZE): New. (BT_FN_VOID_PTR_BND): New. (BT_FN_CONST_PTR_CONST_PTR_CONST_PTR): New. (BT_FN_BND_CONST_PTR_SIZE): New. (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): New. * chkp-builtins.def: New. * builtins.def: include chkp-builtins.def. (DEF_CHKP_BUILTIN): New. * builtins.c: Include tree-chkp.h and rtl-chkp.h. (expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS, BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_NARROW, BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. (std_expand_builtin_va_start): Init bounds for va_list. * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add __CHKP__ macro when Pointer Bounds Checker is on. * params.def (PARAM_CHKP_MAX_CTOR_SIZE): New. * passes.def (pass_ipa_chkp_versioning): New. (pass_early_local_passes): Renamed to pass_build_ssa_passes. (pass_fixup_cfg): Moved to pass_chkp_instrumentation_passes. (pass_chkp_instrumentation_passes): New. (pass_ipa_chkp_produce_thunks): New. (pass_local_optimization_passes): New. (pass_chkp_opt): New. * tree-pass.h (make_pass_ipa_chkp_versioning): New. (make_pass_ipa_chkp_produce_thunks): New. (make_pass_chkp): New. (make_pass_chkp_opt): New. (make_pass_early_local_passes): Renamed to ... (make_pass_build_ssa_passes): This. (make_pass_chkp_instrumentation_passes): New. (make_pass_local_optimization_passes): New. * passes.c (pass_manager::execute_early_local_passes): Execute early passes in three steps. (execute_all_early_local_passes): Renamed to ... (execute_build_ssa_passes): This. (pass_data_early_local_passes): Renamed to ... (pass_data_build_ssa_passes): This. (pass_early_local_passes): Renamed to ... (pass_build_ssa_passes): This. (pass_data_chkp_instrumentation_passes): New. (pass_chkp_instrumentation_passes): New. (pass_data_local_optimization_passes): New. (pass_local_optimization_passes): New. (make_pass_early_local_passes): Renamed to ... (make_pass_build_ssa_passes): This. (make_pass_chkp_instrumentation_passes): New. (make_pass_local_optimization_passes): New. * c-family/c.opt (fcheck-pointer-bounds): New. (fchkp-check-incomplete-type): New. (fchkp-zero-input-bounds-for-main): New. (fchkp-first-field-has-own-bounds): New. (fchkp-narrow-bounds): New. (fchkp-narrow-to-innermost-array): New. (fchkp-optimize): New. (fchkp-use-fast-string-functions): New. (fchkp-use-nochk-string-functions): New. (fchkp-use-static-bounds): New. (fchkp-use-static-const-bounds): New. (fchkp-treat-zero-dynamic-size-as-infinite): New. (fchkp-check-read): New. (fchkp-check-write): New. (fchkp-store-bounds): New. (fchkp-instrument-calls): New. (fchkp-instrument-marked-only): New. (Wchkp): New. * c-family/c-common.c (handle_bnd_variable_size_attribute): New. (handle_bnd_legacy): New. (handle_bnd_instrument): New. (c_common_attribute_table): Add bnd_variable_size, bnd_legacy and bnd_instrument. Fix documentation. (c_common_format_attribute_table): Likewsie. * toplev.c: include tree-chkp.h. (process_options): Check Pointer Bounds Checker is supported. (compile_file): Add chkp_finish_file call. * ipa-cp.c (initialize_node_lattices): Use cgraph_local_p to handle instrumentation clones properly. (propagate_constants_accross_call): Do not propagate through instrumentation thunks. * ipa-pure-const.c (propagate_pure_const): Support IPA_REF_CHKP. * ipa-inline.c (early_inliner): Check edge has summary allocated. * ipa-split.c: Include tree-chkp.h. (find_retbnd): New. (split_part_set_ssa_name_p): New. (consider_split): Do not split retbnd and retval producers. (insert_bndret_call_after): new. (split_function): Propagate Pointer Bounds Checker instrumentation marks and handle returned bounds. * tree-ssa-sccvn.h (vn_reference_op_struct): Transform opcode into bit field and add with_bounds field. * tree-ssa-sccvn.c (copy_reference_ops_from_call): Set with_bounds field for instrumented calls. * tree-ssa-pre.c (create_component_ref_by_pieces_1): Restore CALL_WITH_BOUNDS_P flag for calls. * tree-ssa-ccp.c: Include tree-chkp.h. (insert_clobber_before_stack_restore): Handle BUILT_IN_CHKP_BNDRET calls. * tree-ssa-dce.c: Include tree-chkp.h. (propagate_necessity): For free call fed by alloc check bounds are also provided by the same alloc. (eliminate_unnecessary_stmts): Handle BUILT_IN_CHKP_BNDRET used by free calls. * tree-inline.c: Include tree-chkp.h. (declare_return_variable): Add arg holding returned bounds slot. Create and initialize returned bounds var. (remap_gimple_stmt): Handle returned bounds. Return sequence of statements instead of a single statement. (insert_init_stmt): Add declaration. (remap_gimple_seq): Adjust to new remap_gimple_stmt signature. (copy_bb): Adjust to changed return type of remap_gimple_stmt. Properly handle bounds in va_arg_pack and va_arg_pack_len. (expand_call_inline): Handle returned bounds. Add bounds copy for generated mem to mem assignments. * tree-inline.h (copy_body_data): Add fields retbnd and assign_stmts. * value-prof.c: Include tree-chkp.h. (gimple_ic): Support returned bounds. * ipa.c (cgraph_build_static_cdtor_1): Support contructors with "chkp ctor" and "bnd_legacy" attributes. (symtab_remove_unreachable_nodes): Keep initial values for pointer bounds to be used for checks eliminations. (process_references): Handle IPA_REF_CHKP. (walk_polymorphic_call_targets): Likewise. * ipa-visibility.c (cgraph_externally_visible_p): Mark instrumented 'main' as externally visible. (function_and_variable_visibility): Filter instrumentation thunks. * cgraph.h (cgraph_thunk_info): Add add_pointer_bounds_args field. (cgraph_node): Add instrumented_version, orig_decl and instrumentation_clone fields. (symtab_node::get_alias_target): Allow IPA_REF_CHKP reference. (varpool_node): Add need_bounds_init field. (cgraph_local_p): New. * cgraph.c: Include tree-chkp.h. (cgraph_node::remove): Fix instrumented_version of the referenced node if any. (cgraph_node::dump): Dump instrumentation_clone and instrumented_version fields. (cgraph_node::verify_node): Check correctness of IPA_REF_CHKP references and instrumentation thunks. (cgraph_can_remove_if_no_direct_calls_and_refs_p): Keep all not instrumented instrumentation clones alive. (cgraph_redirect_edge_call_stmt_to_callee): Support returned bounds. * cgraphbuild.c (rebuild_cgraph_edges): Rebuild IPA_REF_CHKP reference. (cgraph_rebuild_references): Likewise. * cgraphunit.c: Include tree-chkp.h. (assemble_thunks_and_aliases): Skip thunks calling instrumneted function version. (varpool_finalize_decl): Register statically initialized decls in Pointer Bounds Checker. (walk_polymorphic_call_targets): Do not mark generated call to __builtin_unreachable as with_bounds. (output_weakrefs): If there are both instrumented and original versions, output only one of them. (cgraph_node::expand_thunk): Set with_bounds flag for created call statement. * ipa-ref.h (ipa_ref_use): Add IPA_REF_CHKP. (ipa_ref): increase size of use field. * symtab.c (ipa_ref_use_name): Add element for IPA_REF_CHKP. * varpool.c (dump_varpool_node): Dump need_bounds_init field. (ctor_for_folding): Do not fold constant bounds vars. * lto-streamer.h (LTO_minor_version): Change minor version from 0 to 1. * lto-cgraph.c (compute_ltrans_boundary): Keep initial values for pointer bounds. (lto_output_node): Output instrumentation_clone, thunk.add_pointer_bounds_args and orig_decl field. (lto_output_ref): Adjust to new ipa_ref::use field size. (input_overwrite_node): Read instrumentation_clone field. (input_node): Read thunk.add_pointer_bounds_args and orig_decl fields. (input_ref): Adjust to new ipa_ref::use field size. (input_cgraph_1): Compute instrumented_version fields and restore IDENTIFIER_TRANSPARENT_ALIAS chains. (lto_output_varpool_node): Output need_bounds_init value. (input_varpool_node): Read need_bounds_init value. * lto-partition.c (add_symbol_to_partition_1): Keep original and instrumented versions together. (privatize_symbol_name): Restore transparent alias chain if required. (add_references_to_partition): Add references to pointer bounds vars. * dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE. * dwarf2out.c (gen_subprogram_die): Ignore bound args. (gen_type_die_with_usage): Skip pointer bounds. (dwarf2out_global_decl): Likewise. (is_base_type): Support POINTER_BOUNDS_TYPE. (gen_formal_types_die): Skip pointer bounds. (gen_decl_die): Likewise. * var-tracking.c (vt_add_function_parameters): Skip bounds parameters. * ipa-icf.c (sem_function::merge): Do not merge when instrumentation thunk still exists. (sem_variable::merge): Reset need_bounds_init flag. * doc/extend.texi: Document Pointer Bounds Checker built-in functions and attributes. * doc/tm.texi.in (TARGET_LOAD_BOUNDS_FOR_ARG): New. (TARGET_STORE_BOUNDS_FOR_ARG): New. (TARGET_LOAD_RETURNED_BOUNDS): New. (TARGET_STORE_RETURNED_BOUNDS): New. (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New. (TARGET_SETUP_INCOMING_VARARG_BOUNDS): New. (TARGET_BUILTIN_CHKP_FUNCTION): New. (TARGET_CHKP_BOUND_TYPE): New. (TARGET_CHKP_BOUND_MODE): New. (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New. (TARGET_CHKP_INITIALIZE_BOUNDS): New. * doc/tm.texi: Regenerated. * doc/rtl.texi (MODE_POINTER_BOUNDS): New. (BND32mode): New. (BND64mode): New. * doc/invoke.texi (-mmpx): New. (-mno-mpx): New. (chkp-max-ctor-size): New. * config/i386/constraints.md (w): New. (Ti): New. (Tb): New. * config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__. * config/i386/i386-modes.def (BND32): New. (BND64): New. * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New. * config/i386/i386.c: Include tree-chkp.h, rtl-chkp.h, tree-iterator.h. (regclass_map): Add bound registers. (dbx_register_map): Likewise. (dbx64_register_map): Likewise. (svr4_dbx_register_map): Likewise. (isa_opts): Add -mmpx. (PTA_MPX): New. (ix86_option_override_internal): Support MPX ISA. (ix86_conditional_register_usage): Support bound registers. (ix86_code_end): Add MPX bnd prefix. (output_set_got): Likewise. (print_reg): Avoid prefixes for bound registers. (ix86_print_operand): Add '!' (MPX bnd) print prefix support. (ix86_print_operand_punct_valid_p): Likewise. (ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and UNSPEC_BNDLDX_ADDR. (ix86_output_call_insn): Add MPX bnd prefix to branch instructions. (ix86_class_likely_spilled_p): Add bound regs support. (ix86_hard_regno_mode_ok): Likewise. (x86_order_regs_for_local_alloc): Likewise. (ix86_bnd_prefixed_insn_p): New. (ix86_builtins): Add IX86_BUILTIN_BNDMK, IX86_BUILTIN_BNDSTX, IX86_BUILTIN_BNDLDX, IX86_BUILTIN_BNDCL, IX86_BUILTIN_BNDCU, IX86_BUILTIN_BNDRET, IX86_BUILTIN_BNDNARROW, IX86_BUILTIN_BNDINT, IX86_BUILTIN_SIZEOF, IX86_BUILTIN_BNDLOWER, IX86_BUILTIN_BNDUPPER. (builtin_isa): Add leaf_p and nothrow_p fields. (def_builtin): Initialize leaf_p and nothrow_p. (ix86_add_new_builtins): Handle leaf_p and nothrow_p flags. (bdesc_mpx): New. (bdesc_mpx_const): New. (ix86_init_mpx_builtins): New. (ix86_init_builtins): Call ix86_init_mpx_builtins. (ix86_emit_cmove): New. (ix86_emit_move_max): New. (ix86_expand_builtin): Expand IX86_BUILTIN_BNDMK, IX86_BUILTIN_BNDSTX, IX86_BUILTIN_BNDLDX, IX86_BUILTIN_BNDCL, IX86_BUILTIN_BNDCU, IX86_BUILTIN_BNDRET, IX86_BUILTIN_BNDNARROW, IX86_BUILTIN_BNDINT, IX86_BUILTIN_SIZEOF, IX86_BUILTIN_BNDLOWER, IX86_BUILTIN_BNDUPPER. (ix86_function_value_bounds): New. (ix86_builtin_mpx_function): New. (ix86_get_arg_address_for_bt): New. (ix86_load_bounds): New. (ix86_store_bounds): New. (ix86_load_returned_bounds): New. (ix86_store_returned_bounds): New. (ix86_mpx_bound_mode): New. (ix86_make_bounds_constant): New. (ix86_initialize_bounds): (TARGET_LOAD_BOUNDS_FOR_ARG): New. (TARGET_STORE_BOUNDS_FOR_ARG): New. (TARGET_LOAD_RETURNED_BOUNDS): New. (TARGET_STORE_RETURNED_BOUNDS): New. (TARGET_CHKP_BOUND_MODE): New. (TARGET_BUILTIN_CHKP_FUNCTION): New. (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New. (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New. (TARGET_CHKP_INITIALIZE_BOUNDS): New. (ix86_option_override_internal): Do not support x32 with MPX. (init_cumulative_args): Init stdarg, bnd_regno, bnds_in_bt and force_bnd_pass. (function_arg_advance_32): Return number of used integer registers. (function_arg_advance_64): Likewise. (function_arg_advance_ms_64): Likewise. (ix86_function_arg_advance): Handle pointer bounds. (ix86_function_arg): Likewise. (ix86_function_value_regno_p): Mark fisrt bounds registers as possible function value. (ix86_function_value_1): Handle pointer bounds type/mode (ix86_return_in_memory): Likewise. (ix86_print_operand): Analyse insn to decide abounf "bnd" prefix. (ix86_expand_call): Generate returned bounds. (ix86_setup_incoming_vararg_bounds): New. (ix86_va_start): Initialize bounds for pointers in va_list. (TARGET_SETUP_INCOMING_VARARG_BOUNDS): New. * config/i386/i386.h (TARGET_MPX): New. (TARGET_MPX_P): New. (FIRST_PSEUDO_REGISTER): Fix to new value. (FIXED_REGISTERS): Add bound registers. (CALL_USED_REGISTERS): Likewise. (REG_ALLOC_ORDER): Likewise. (HARD_REGNO_NREGS): Likewise. (VALID_BND_REG_MODE): New. (FIRST_BND_REG): New. (LAST_BND_REG): New. (reg_class): Add BND_REGS. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. (BND_REGNO_P): New. (ANY_BND_REG_P): New. (BNDmode): New. (HI_REGISTER_NAMES): Add bound registers. (ix86_args): Add bnd_regno, bnds_in_bt, force_bnd_pass and stdarg fields. * config/i386/i386.md (UNSPEC_BNDMK): New. (UNSPEC_BNDMK_ADDR): New. (UNSPEC_BNDSTX): New. (UNSPEC_BNDLDX): New. (UNSPEC_BNDLDX_ADDR): New. (UNSPEC_BNDCL): New. (UNSPEC_BNDCU): New. (UNSPEC_BNDCN): New. (UNSPEC_MPX_FENCE): New. (UNSPEC_SIZEOF): New. (BND0_REG): New. (BND1_REG): New. (type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst. (length_immediate): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst. (prefix_rep): Check for bnd prefix. (prefix_0f): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst. (length_nobnd): New. (length): Use length_nobnd when specified. (memory): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst. (BND): New. (bnd_ptr): New. (BNDCHECK): New. (bndcheck): New. (*jcc_1): Add MPX bnd prefix. (*jcc_2): Likewise. (jump): Likewise. (*indirect_jump): Likewise. (*tablejump_1): Likewise. (simple_return_internal): Likewise. (simple_return_internal_long): Likewise. (simple_return_pop_internal): Likewise. (simple_return_indirect_internal): Likewise. (<mode>_mk): New. (*<mode>_mk): New. (mov<mode>): New. (*mov<mode>_internal_mpx): New. (<mode>_<bndcheck>): New. (*<mode>_<bndcheck>): New. (<mode>_ldx): New. (*<mode>_ldx): New. (<mode>_stx): New. (*<mode>_stx): New. move_size_reloc_<mode>): New. * config/i386/predicates.md (address_mpx_no_base_operand): New. (address_mpx_no_index_operand): New. (bnd_mem_operator): New. (symbol_operand): New. (x86_64_immediate_size_operand): New. * config/i386/i386.opt (mmpx): New. * config/i386/i386-builtin-types.def (BND): New. (ULONG): New. (BND_FTYPE_PCVOID_ULONG): New. (VOID_FTYPE_BND_PCVOID): New. (VOID_FTYPE_PCVOID_PCVOID_BND): New. (BND_FTYPE_PCVOID_PCVOID): New. (BND_FTYPE_PCVOID): New. (BND_FTYPE_BND_BND): New. (PVOID_FTYPE_PVOID_PVOID_ULONG): New. (PVOID_FTYPE_PCVOID_BND_ULONG): New. (ULONG_FTYPE_VOID): New. (PVOID_FTYPE_BND): New. 2014-11-05 Bernd Schmidt <bernds@codesourcery.com> * passes.def (pass_compute_alignments, pass_duplicate_computed_gotos, pass_variable_tracking, pass_free_cfg, pass_machine_reorg, pass_cleanup_barriers, pass_delay_slots, pass_split_for_shorten_branches, pass_convert_to_eh_region_ranges, pass_shorten_branches, pass_est_nothrow_function_flags, pass_dwarf2_frame, pass_final): Move outside of pass_postreload and into pass_late_compilation. (pass_late_compilation): Add. * passes.c (pass_data_late_compilation, pass_late_compilation, make_pass_late_compilation): New. * timevar.def (TV_LATE_COMPILATION): New. * target.def (omit_struct_return_reg): New data hook. * doc/tm.texi.in: Add @hook TARGET_OMIT_STRUCT_RETURN_REG. * doc/tm.texi: Regenerate. * function.c (expand_function_end): Use it. * target.def (no_register_allocation): New data hook. * doc/tm.texi.in: Add @hook TARGET_NO_REGISTER_ALLOCATION. * doc/tm.texi: Regenerate. * ira.c (gate_ira): New function. (pass_data_ira): Set has_gate. (pass_ira): Add a gate function. (pass_data_reload): Likewise. (pass_reload): Add a gate function. (pass_ira): Use it. * reload1.c (eliminate_regs): If reg_eliminate_is NULL, assert that no register allocation happens on the target and return. * final.c (alter_subreg): Ensure register is not a pseudo before calling simplify_subreg. (output_operand): Assert that x isn't a pseudo only if doing register allocation. * dbxout.c (dbxout_symbol): Don't call eliminate_regs on decls for global vars. * optabs.c (emit_indirect_jump): Test HAVE_indirect_jump and emit a sorry if necessary. 2014-11-05 Alex Velenko <Alex.Velenko@arm.com> * simplify-rtx.c (simplify_binary_operation_1): Div check added. * rtl.h (SUBREG_P): New macro added. 2014-11-05 Tejas Belagod <tejas.belagod@arm.com> * config/aarch64/aarch64-builtins.c (aarch64_build_scalar_type): Remove. (aarch64_scalar_builtin_types, aarch64_simd_type, aarch64_simd_type, aarch64_mangle_builtin_scalar_type, aarch64_mangle_builtin_vector_type, aarch64_mangle_builtin_type, aarch64_simd_builtin_std_type, aarch64_lookup_simd_builtin_type, aarch64_simd_builtin_type, aarch64_init_simd_builtin_types, aarch64_init_simd_builtin_scalar_types): New. (aarch64_init_simd_builtins): Refactor. (aarch64_init_crc32_builtins): Fixup with qualifier. * config/aarch64/aarch64-protos.h (aarch64_mangle_builtin_type): Export. * config/aarch64/aarch64-simd-builtin-types.def: New. * config/aarch64/aarch64.c (aarch64_simd_mangle_map): Remove. (aarch64_mangle_type): Refactor. * config/aarch64/arm_neon.h: Declare vector types based on internal types. * config/aarch64/t-aarch64: Update dependency. 2014-11-04 Pat Haugen <pthaugen@us.ibm.com> * config/rs6000/rs6000.c (atomic_hold_decl, atomic_clear_decl, atomic_update_decl): Guard declaration with #ifdef. 2014-11-04 Marek Polacek <polacek@redhat.com> * sanopt.c (sanopt_optimize_walker): Remove unused variables. 2014-11-04 Marek Polacek <polacek@redhat.com> * Makefile.in (OBJS): Add sanopt.o. (GTFILES): Add sanopt.c. * asan.h (asan_expand_check_ifn): Declare. * asan.c (asan_expand_check_ifn): No longer static. (class pass_sanopt, pass_sanopt::execute, make_pass_sanopt): Move... * sanopt.c: ...here. New file. 2014-11-04 Jiong Wang <jiong.wang@arm.com> Wilco Dijkstra <wilco.dijkstra@arm.com> PR target/63293 * config/aarch64/aarch64.c (aarch64_expand_epiloue): Add barriers before stack adjustment. 2014-11-04 Bernd Schmidt <bernds@codesourcery.com> * combine.c (combine_simplify_rtx): In STORE_FLAG_VALUE == -1 case, also verify that mode is equal to the mode of op0. * bb-reorder.c (get_uncond_jump_length): Avoid using delete_insn, emit into a sequence instead. 2014-11-04 Jan-Benedict Glaw <jbglaw@lug-owl.de> * config/sh/sh.c (emit_fpu_switch): Drop unused automatic variable. 2014-11-04 Alan Lawrence <alan.lawrence@arm.com> config/arm/neon.md (reduc_smin_<mode> *2): Rename to... (reduc_smin_scal_<mode> *2): ...this; extract scalar result. (reduc_smax_<mode> *2): Rename to... (reduc_smax_scal_<mode> *2): ...this; extract scalar result. (reduc_umin_<mode> *2): Rename to... (reduc_umin_scal_<mode> *2): ...this; extract scalar result. (reduc_umax_<mode> *2): Rename to... (reduc_umax_scal_<mode> *2): ...this; extract scalar result. 2014-11-04 Alan Lawrence <alan.lawrence@arm.com> config/arm/neon.md (reduc_plus_*): Rename to... (reduc_plus_scal_*): ...this; reduce to temp and extract scalar result. 2014-11-04 Michael Collison <michael.collison@linaro.org> * config/aarch64/iterators.md (lconst_atomic): New mode attribute to support constraints for CONST_INT in atomic operations. * config/aarch64/atomics.md (atomic_<atomic_optab><mode>): Use lconst_atomic constraint. (atomic_nand<mode>): Likewise. (atomic_fetch_<atomic_optab><mode>): Likewise. (atomic_fetch_nand<mode>): Likewise. (atomic_<atomic_optab>_fetch<mode>): Likewise. (atomic_nand_fetch<mode>): Likewise. 2014-11-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix typo in definition of __ARM_FEATURE_IDIV. 2014-11-04 Marek Polacek <polacek@redhat.com> * ubsan.c (instrument_object_size): Optimize [x & CST] array accesses. 2014-11-03 Jan-Benedict Glaw <jbglaw@lug-owl.de> * config/rx/rx.c (rx_handle_func_attribute): Mark unused argument. 2014-11-04 Zhenqiang Chen <zhenqiang.chen@arm.com> Revert: 2014-11-03 Zhenqiang Chen <zhenqiang.chen@arm.com> * ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): Allow CC mode if HAVE_cbranchcc4. 2014-11-03 Dominik Vogt <vogt@linux.vnet.ibm.com> * godump.c (go_format_type): Rewrite RECORD_TYPE nad UNION_TYPE support with -fdump-go-spec. Anonymous substructures are now flattened and replaced by their fields (record) or the first named, non-bitfield field (union). 2014-11-04 Manuel López-Ibáñez <manu@gcc.gnu.org> * input.c (expand_location_to_spelling_point): Fix typo. (expansion_point_location_if_in_system_header): Fix comment. 2014-11-03 Pitchumani Sivanupandi <pitchumani.s@atmel.com> * config/avr/gen-avr-mmcu-specs.c: Remove unnecessary format specifier. 2014-11-03 Richard Biener <rguenther@suse.de> * tree-eh.c (operation_could_trap_helper_p): Handle conversions like ordinary operations. * gimplify.c (gimplify_conversion): Gimplify CONVERT_EXPR as NOP_EXPR. 2014-11-03 Joseph Myers <joseph@codesourcery.com> * configure.ac (TARGET_GLIBC_MAJOR, TARGET_GLIBC_MINOR): Define macros. * configure, config.h.in: Regenerate. * config/rs6000/linux.h [TARGET_GLIBC_MAJOR > 2 || (TARGET_GLIBC_MAJOR == 2 && TARGET_GLIBC_MINOR >= 19)] (RS6000_GLIBC_ATOMIC_FENV): New macro. * config/rs6000/linux64.h [TARGET_GLIBC_MAJOR > 2 || (TARGET_GLIBC_MAJOR == 2 && TARGET_GLIBC_MINOR >= 19)] (RS6000_GLIBC_ATOMIC_FENV): New macro. * config/rs6000/rs6000.c (atomic_hold_decl, atomic_clear_decl) (atomic_update_decl): New static variables. (rs6000_atomic_assign_expand_fenv) [RS6000_GLIBC_ATOMIC_FENV]: Generate calls to __atomic_feholdexcept, __atomic_feclearexcept and __atomic_feupdateenv for soft-float and no-FPRs. 2014-11-03 Richard Biener <rguenther@suse.de> * match.pd: Add two abs patterns. Announce tree_expr_nonnegative_p. Also drop bogus FLOAT_EXPR and FIX_TRUNC_EXPR. * fold-const.c (fold_unary_loc): Remove them here. (tree_unary_nonnegative_warnv_p): Use CASE_CONVERT. * gimple-fold.c (fold_gimple_assign): Remove now obsolete GIMPLE_UNARY_RHS case. (gimple_fold_stmt_to_constant_1): Likewise. (replace_stmt_with_simplification): Fix inverted comparison. 2014-11-03 Marc Glisse <marc.glisse@inria.fr> PR tree-optimization/60770 * tree-into-ssa.c (rewrite_update_stmt): Return whether the statement should be removed. (maybe_register_def): Likewise. Replace clobbers with default definitions. (rewrite_dom_walker::before_dom_children): Remove statement if rewrite_update_stmt says so. * tree-ssa-live.c: Include tree-ssa.h. (set_var_live_on_entry): Do not mark undefined variables as live. (verify_live_on_entry): Do not check undefined variables. * tree-ssa.h (ssa_undefined_value_p): New parameter for the case of partially undefined variables. * tree-ssa.c (ssa_undefined_value_p): Likewise. (execute_update_addresses_taken): Do not drop clobbers. 2014-11-03 Marc Glisse <marc.glisse@inria.fr> PR tree-optimization/63666 * fold-const.c: Include "optabs.h". (fold_ternary_loc) <VEC_PERM_EXPR>: Avoid canonicalizing a can_vec_perm_p permutation to one that is not. 2014-11-03 Zhenqiang Chen <zhenqiang.chen@arm.com> * ifcvt.c (noce_try_store_flag_mask): Check rtx cost. 2014-11-03 Andrew Pinski <apinski@cavium.com> * config/mips/mips-cpus.def (octeon3): New cpu. * config/mips/mips.c (mips_rtx_cost_data): Add octeon3. (mips_print_operand <case 'T', case 't'>): Fix a bug as the mode of the comparison no longer matches mode of the operands. (mips_issue_rate): Handle PROCESSOR_OCTEON3. * config/mips/mips.h (TARGET_OCTEON): Add Octeon3. (TARGET_OCTEON2): Likewise. (TUNE_OCTEON): Add Octeon3. * config/mips/mips.md (processor): Add octeon3. * config/mips/octeon.md (octeon_fpu): New automaton and cpu_unit. (octeon_arith): Add octeon3. (octeon_condmove): Remove. (octeon_condmove_o1): New reservation. (octeon_condmove_o2): New reservation. (octeon_condmove_o3_int_on_cc): New reservation. (octeon_load_o2): Add octeon3. (octeon_cop_o2): Likewise. (octeon_store): Likewise. (octeon_brj_o2): Likewise. (octeon_imul3_o2): Likewise. (octeon_imul_o2): Likewise. (octeon_mfhilo_o2): Likewise. (octeon_imadd_o2): Likewise. (octeon_idiv_o2_si): Likewise. (octeon_idiv_o2_di): Likewise. (octeon_fpu): Add to the automaton. (octeon_fpu): New cpu unit. (octeon_condmove_o2): Check for non floating point modes. (octeon_load_o2): Add prefetchx. (octeon_cop_o2): Don't check for octeon3. (octeon3_faddsubcvt): New reservation. (octeon3_fmul): Likewise. (octeon3_fmadd): Likewise. (octeon3_div_sf): Likewise. (octeon3_div_df): Likewise. (octeon3_sqrt_sf): Likewise. (octeon3_sqrt_df): Likewise. (octeon3_rsqrt_sf): Likewise. (octeon3_rsqrt_df): Likewise. (octeon3_fabsnegmov): Likewise. (octeon_fcond): Likewise. (octeon_fcondmov): Likewise. (octeon_fpmtc1): Likewise. (octeon_fpmfc1): Likewise. (octeon_fpload): Likewise. (octeon_fpstore): Likewise. * config/mips/mips-tables.opt: Regenerate. * doc/invoke.texi (-march=@var{arch}): Add octeon3. 2014-11-03 Zhenqiang Chen <zhenqiang.chen@arm.com> * ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition): Allow CC mode if HAVE_cbranchcc4. 2014-11-02 Richard Sandiford <richard.sandiford@arm.com> * config/arc/arc.c (write_ext_corereg_1): Delete. (arc_write_ext_corereg): Use FOR_EACH_SUBRTX. 2014-11-02 Richard Sandiford <richard.sandiford@arm.com> * config/arc/arc.c (arc600_corereg_hazard_1): Delete. (arc600_corereg_hazard): Use FOR_EACH_SUBRTX. 2014-11-02 Richard Sandiford <richard.sandiford@arm.com> * config/arc/arc.c (arc_rewrite_small_data_p): Constify argument. (small_data_pattern_1): Delete. (small_data_pattern): Use FOR_EACH_SUBRTX. 2014-11-02 Richard Sandiford <richard.sandiford@arm.com> * config/arc/arc.c: Include rtl-iter.h. (arc_rewrite_small_data_1): Delete. (arc_rewrite_small_data): Use FOR_EACH_SUBRTX_PTR. 2014-11-02 Michael Collison <michael.collison@linaro.org> * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO) : Update to support vector modes. (CTZ_DEFINED_VALUE_AT_ZERO): Ditto. 2014-11-01 Andrew MacLeod <amacleod@redhat,com> * optabs.h: Flatten insn-codes.h to source files. Move some prototypes and structs to genopinit.c. Adjust protyoptypes to match optabs.c. * genopinit.c (main): Emit prototypes and structs into insn-opinit.h. * optabs.c: (gen_move_insn): Move to expr.c. * expr.h: Move protypes and enums to optabs.h. * expr.c: (gen_move_insn): Relocate from optabs.c. * genemit.c (main): Include insn-codes.h. * gengtype.c (open_base_files): Include insn-codes.h. * asan.c: Include insn-codes.h. * bb-reorder.c: Ditto. * builtins.c: Ditto. * calls.c: Ditto. * cfgexpand.c: Ditto. * cilk-common.c: Ditto. * combine.c: Ditto. * dojump.c: Ditto. * dse.c: Ditto. * except.c: Ditto. * explow.c: Ditto. * expmed.c: Ditto. * function.c: Ditto. * ifcvt.c: Ditto. * internal-fn.c: Ditto. * loop-unroll.c: Ditto. * lra.c: Ditto. * modulo-sched.c: Ditto. * omp-low.c: Ditto. * postreload.c: Ditto. * ree.c: Ditto. * reload.c: Ditto. * reload1.c: Ditto. * shrink-wrap.c: Ditto. * simplify-rtx.c: Ditto. * stmt.c: Ditto. * target-globals.c: Ditto. * targhooks.c: Ditto. * toplev.c: Ditto. * tree-if-conv.c: Ditto. * tree-ssa-forwprop.c: Ditto. * tree-ssa-loop-prefetch.c: Ditto. * tree-ssa-math-opts.c: Ditto. * tree-ssa-phiopt.c: Ditto. * tree-ssa-reassoc.c: Ditto. * tree-switch-conversion.c: Ditto. * tree-vect-data-refs.c: Ditto. * tree-vect-generic.c: Ditto. * tree-vect-loop.c: Ditto. * tree-vect-patterns.c: Ditto. * tree-vect-slp.c: Ditto. * tree-vect-stmts.c: Ditto. * tree-vrp.c: Ditto. * value-prof.c: Ditto. * config/aarch64/aarch64-builtins.c: Ditto. * config/alpha/alpha.c: Ditto. * config/arm/arm.c: Ditto. * config/cris/cris.c: Ditto. * config/epiphany/epiphany.c: Ditto. * config/frv/frv.c: Ditto. * config/h8300/h8300.c: Ditto. * config/ia64/ia64.c: Ditto. * config/iq2000/iq2000.c: Ditto. * config/m32c/m32c.c: Ditto. * config/mep/mep.c: Ditto. * config/microblaze/microblaze.c: Ditto. * config/mips/mips.c: Ditto. * config/mn10300/mn10300.c: Ditto. * config/moxie/moxie.c: Ditto. * config/msp430/msp430.c: Ditto. * config/nios2/nios2.c: Ditto. * config/pa/pa.c: Ditto. * config/rl78/rl78.c: Ditto. * config/rs6000/rs6000.c: Ditto. * config/rx/rx.c: Ditto. * config/s390/s390.c: Ditto. * config/sh/sh.c: Ditto. * config/sh/sh_treg_combine.cc: Ditto. * config/spu/spu.c: Ditto. * config/stormy16/stormy16.c: Ditto. * config/tilegx/mul-tables.c: Ditto. * config/tilegx/tilegx.c: Ditto. * config/tilepro/mul-tables.c: Ditto. * config/tilepro/tilepro.c: Ditto. * config/vax/vax.c: Ditto. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * doc/tm.texi.in (MOVE_BY_PIECES_P): Remove. (CLEAR_BY_PIECES_P): Likewise. (SET_BY_PIECES_P): Likewise. (STORE_BY_PIECES_P): Likewise. * doc/tm.texi: Regenerate. * system.h: Poison MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P, STORE_BY_PIECES_P. * expr.c (MOVE_BY_PIECES_P): Remove. (CLEAR_BY_PIECES_P): Likewise. (SET_BY_PIECES_P): Likewise. (STORE_BY_PIECES_P): Likewise. (can_move_by_pieces): Rewrite in terms of targetm.use_by_pieces_infrastructure_p. (emit_block_move_hints): Likewise. (can_store_by_pieces): Likewise. (store_by_pieces): Likewise. (clear_storage_hints): Likewise. (emit_push_insn): Likewise. (expand_constructor): Likewise. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructre_p): New. (TARGET_USE_BY_PIECES_INFRASTRUCTURE): Likewise. * config/aarch64/aarch64.h (STORE_BY_PIECES_P): Delete. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * config/mips/mips.h (MOVE_BY_PIECES_P): Remove. (STORE_BY_PIECES_P): Likewise. * config/mips/mips.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. (mips_move_by_pieces_p): Rename to... (mips_use_by_pieces_infrastructure_p): ...this, use new hook parameters, use the default hook implementation as a fall-back. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. (sh_use_by_pieces_infrastructure_p): Likewise. * config/sh/sh.h (MOVE_BY_PIECES_P): Remove. (STORE_BY_PIECES_P): Likewise. (SET_BY_PIECES_P): Likewise. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * config/arc/arc.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New. (arc_use_by_pieces_infrastructure_p): Likewise. * confir/arc/arc.h (MOVE_BY_PIECES_P): Delete. (CAN_MOVE_BY_PIECES): Likewise. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * config/s390/s390.c (s390_use_by_pieces_infrastructure_p): New. (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise. * config/s390/s390.h (MOVE_BY_PIECES_P): Remove. (CLEAR_BY_PIECES): Likewise. (SET_BY_PIECES): Likewise. (STORE_BY_PIECES): Likewise. 2014-11-01 James Greenhalgh <james.greenhalgh@arm.com> * target.def (use_by_pieces_infrastructure_p): New. * doc/tm.texi.in (MOVE_BY_PIECES_P): Describe that this macro is deprecated. (STORE_BY_PIECES_P): Likewise. (CLEAR_BY_PIECES_P): Likewise. (SET_BY_PIECES_P): Likewise. (TARGET_MOVE_BY_PIECES_PROFITABLE_P): Add hook. * doc/tm.texi: Regenerate. * expr.c (MOVE_BY_PIECES_P): Rewrite in terms of TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. (STORE_BY_PIECES_P): Likewise. (CLEAR_BY_PIECES_P): Likewise. (SET_BY_PIECES_P): Likewise. (STORE_MAX_PIECES): Move to... * defaults.h (STORE_MAX_PIECES): ...here. * targhooks.c (get_move_ratio): New. (default_use_by_pieces_infrastructure_p): Likewise. * targhooks.h (default_use_by_pieces_infrastructure_p): New. * target.h (by_pieces_operation): New. 2014-10-31 Uros Bizjak <ubizjak@gmail.com> PR target/63702 * config/i386/i386.c (ix86_expand_args_builtin): Remove extra assignment to 'nargs' variable. 2014-10-31 Uros Bizjak <ubizjak@gmail.com> PR target/63620 * config/i386/i386-protos.h (ix86_use_pseudo_pic_reg): Declare. * config/i386/i386.c (ix86_use_pseudo_pic_reg): Export. * config/i386/i386.md (*pushtf): Allow only CONST_DOUBLEs that won't be reloaded through memory. (*pushxf): Ditto. (*pushdf): Ditto. 2014-10-31 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/63659 * ree.c (update_reg_equal_equiv_notes): New function. (combine_set_extension, transform_ifelse): Use it. 2014-10-31 Jeff Law <law@redhat.com> * doc/contrib.texi: Add contribution notes for Balaji Iyer (Cilk+) and Jonny Grant (collect2). 2014-10-31 Richard Biener <rguenther@suse.de> * builtins.c (fold_builtin_atomic_always_lock_free): Use CONVERT_EXPR_P, CONVERT_EXPR_CODE_P and CASE_CONVERT where approprate. (fold_builtin_expect): Likewise. (integer_valued_real_p): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * ipa-inline-analysis.c (eliminated_by_inlining_prob): Likewise. (find_foldable_builtin_expect): Likewise. * trans-mem.c (thread_private_new_memory): Likewise. * tree-affine.c (aff_combination_expand): Likewise. * tree-data-ref.c (initialize_matrix_A): Likewise. * tree-inline.c (copy_bb): Likewise. * tree-pretty-print.c (dump_function_name): Likewise. (print_call_name): Likewise. * tree-ssa-forwprop.c (constant_pointer_difference): Likewise. * tree-ssa-math-opts.c (find_bswap_or_nop_1): Likewise. * tree-vect-generic.c (expand_vector_operations_1): Likewise. * tree-vect-patterns.c (vect_handle_widen_op_by_const): Likewise. (vect_recog_widen_mult_pattern): Likewise. (vect_operation_fits_smaller_type): Likewise. * tree-vrp.c (find_assert_locations_1): Likewise. * tree-ssa-dom.c (initialize_hash_element): Canonicalize converts to NOP_EXPR. 2014-10-31 Richard Biener <rguenther@suse.de> * genmatch.c (expr::gen_transform): Use NOP_EXPRs instead of CONVERT_EXPRs in generated code. (dt_simplify::gen): Likewise. 2014-10-31 Evgeny Stupachenko <evstupac@gmail.com> PR target/63534 * config/i386/i386.c (ix86_init_pic_reg): Emit SET_GOT to REAL_PIC_OFFSET_TABLE_REGNUM for mcount profiling. (ix86_save_reg): Save REAL_PIC_OFFSET_TABLE_REGNUM when profiling using mcount in 32bit PIC mode. (ix86_elim_entry_set_got): New. (ix86_expand_prologue): For the mcount profiling emit new SET_GOT in PROLOGUE, delete initial if possible. 2014-10-31 Eric Botcazou <ebotcazou@adacore.com> * ipa-inline.c (want_inline_small_function_p): Fix typo and formatting. (want_inline_function_to_all_callers_p): Fix formatting and simplify. 2014-10-31 Thomas Preud'homme <thomas.preudhomme@arm.com> PR tree-optimization/63259 * tree-ssa-math-opts.c (bswap_replace): Replace expression by a rotation left if it is a 16 bit byte swap. (pass_optimize_bswap::execute): Also consider bswap in LROTATE_EXPR and RROTATE_EXPR statements if it is a byte rotation. 2014-10-31 Jakub Jelinek <jakub@redhat.com> PR sanitizer/63697 * tree-vrp.c (simplify_internal_call_using_ranges): For subcode == MINUS_EXPR, check overflow on vr0.min - vr1.max and vr0.max - vr1.min instead of vr0.min - vr1.min and vr0.max - vr1.max. 2014-10-31 Max Ostapenko <m.ostapenko@partner.samsung.com> PR ipa/63696 * ipa-icf.c (sem_function::~sem_function): Change free to delete to avoid alloc-dealloc mismatch with new, called in ipa_icf::sem_function::init. 2014-10-30 Felix Yang <felix.yang@huawei.com> * config/xtensa/xtensa.h (TARGET_LOOPS): New Macro. * config/xtensa/xtensa.c: Include dumpfile.h and hw-doloop.h. (xtensa_reorg, xtensa_reorg_loops): New. (xtensa_can_use_doloop_p, xtensa_invalid_within_doloop): New. (hwloop_optimize, hwloop_fail, hwloop_pattern_reg): New. (xtensa_emit_loop_end): Emit the zero-overhead loop end label. (xtensa_doloop_hooks): Define. * config/xtensa/xtensa.md (doloop_end, loop_end): New (zero_cost_loop_start): Rewritten. (zero_cost_loop_end): Likewise. 2014-10-30 Steve Ellcey <sellcey@imgtec.com> * config.gcc (mips*-*-linux*): Combine 32 and 64 bit cases. 2014-10-30 Richard Biener <rguenther@suse.de> * genmatch.c: Remove <map>, <utility> and <string> includes. Include ggc.h and hash-map.h. (ggc_internal_cleared_alloc): Provide stub definition. (ggc_free): Likewise. (struct capture_id_map_hasher): New traits for hash_map. (cid_map_t): New typedef. (everywhere else): Replace std::map use with cid_map_t. * hash-map.h (hash_map::elements): New member function. * Makefile.in (build/genmatch.o): Add $(HASH_TABLE_H), hash-map.h and $(GGC_H) as dependency. 2014-10-30 Richard Biener <rguenther@suse.de> * genmatch.c (capture_info::walk_c_expr): Ignore capture uses inside TREE_TYPE (). * gimple-ssa-strength-reduction.c (stmt_cost): Use CASE_CONVERT. (find_candidates_dom_walker::before_dom_children): Likewise. (replace_mult_candidate): Use CONVERT_EXPR_CODE_P. (replace_profitable_candidates): Likewise. * tree-ssa-dom.c (initialize_hash_element): Canonicalize CONVERT_EXPR_CODE_P to CONVERT_EXPR. * convert.c (convert_to_integer): Use CASE_CONVERT. 2014-10-30 Richard Biener <rguenther@suse.de> * match.pd: Implement more patterns that simplify to a single value. * fold-const.c (fold_binary_loc): Remove them here. * tree-ssa-forwprop.c (simplify_bitwise_binary): Likewise. (fwprop_ssa_val): Remove restriction on single uses. 2014-10-30 Jan-Benedict Glaw <jbglaw@lug-owl.de> * config/avr/driver-avr.c (avr_set_current_device): Remove. 2014-10-30 Martin Liska <mliska@suse.cz> PR ipa/63574 PR ipa/63664 * ipa-icf-gimple.c (func_checker::parse_labels): Missing comment added. (func_checker::compare_gimple_label): Simlified comparison introduced. * ipa-icf-gimple.h: Missing comment added. 2014-10-30 Jeff Law <law@redhat.com> * config/pa/pa-protos.h (pa_output_arg_descriptor): Strengthen argument from rtx to rtx_insn *. (compute_movmem_length, compute_clrmem_length): Likewise. (copy_fp_args, length_fp_args): Likewise. * config/pa/pa.c (legitimize_pic_address): Promote local variable "insn" from rtx to rtx_insn *. (legitimize_tls_address, pa_emit_move_sequence): Likewise. (pa_output_block_move, store_reg, store_reg_modify): Likewise. (set_reg_plus_d, pa_expand_prologue, hppa_profile_hook): Likewise. (branch_to_delay_slot_p, branch_needs_nop_p, use_skip_p): Likewise. (pa_output_arg_descriptor): Strengthen argument to an rtx_insn *. (compute_movmem_length, compute_clrmem_length): Likewise. (copy_fp-args, length_fp_args): Likewise. 2014-10-29 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> * config/arm/arm.h (MACHMODE): Treat machine_mode as a scalar typedef. (CUMULATIVE_ARGS): Guard against target includes. (machine_function): Likewise. 2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c (aarch64_madd_needs_nop): Restore recog state after aarch64_prev_real_insn call. 2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.h (MACHMODE): Add 'enum' to machine_mode. 2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.h (MACHMODE): Add 'enum' to machine_mode. (struct machine_function): Gate definition on !defined(USED_FOR_TARGET). 2014-10-29 DJ Delorie <dj@redhat.com> * expmed.c (strict_volatile_bitfield_p): Fix off-by-one error. 2014-10-29 Martin Liska <mliska@suse.cz> PR ipa/63587 * cgraphunit.c (cgraph_node::expand_thunk): Only VAR_DECLs are put to local declarations. * function.c (add_local_decl): Implementation moved from header file, assert introduced for tree type. * function.h: Likewise. 2014-10-29 Dominik Vogt <vogt@linux.vnet.ibm.com> * godump.c (go_format_type): Represent "float _Complex" and "double _Complex" as complex64 or complex128 in Go, as appropriate. 2014-10-29 Richard Biener <rguenther@suse.de> * match.pd: Implement a first set of conversion patterns. * fold-const.c (fold_unary_loc): Remove them here. * tree-ssa-forwprop.c (simplify_vce): Remove. (pass_forwprop::execute): Do not call simplify_vce. 2014-10-29 Richard Sandiford <richard.sandiford@arm.com> * addresses.h, alias.c, asan.c, auto-inc-dec.c, bt-load.c, builtins.c, builtins.h, caller-save.c, calls.c, calls.h, cfgexpand.c, cfgloop.h, cfgrtl.c, combine.c, compare-elim.c, config/aarch64/aarch64-builtins.c, config/aarch64/aarch64-protos.h, config/aarch64/aarch64-simd.md, config/aarch64/aarch64.c, config/aarch64/aarch64.h, config/aarch64/aarch64.md, config/alpha/alpha-protos.h, config/alpha/alpha.c, config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h, config/arc/predicates.md, config/arm/aarch-common-protos.h, config/arm/aarch-common.c, config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h, config/arm/arm.md, config/arm/neon.md, config/arm/thumb2.md, config/avr/avr-log.c, config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.md, config/bfin/bfin-protos.h, config/bfin/bfin.c, config/c6x/c6x-protos.h, config/c6x/c6x.c, config/c6x/c6x.md, config/cr16/cr16-protos.h, config/cr16/cr16.c, config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.md, config/darwin-protos.h, config/darwin.c, config/epiphany/epiphany-protos.h, config/epiphany/epiphany.c, config/epiphany/epiphany.md, config/fr30/fr30.c, config/frv/frv-protos.h, config/frv/frv.c, config/frv/predicates.md, config/h8300/h8300-protos.h, config/h8300/h8300.c, config/i386/i386-builtin-types.awk, config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.md, config/i386/predicates.md, config/i386/sse.md, config/i386/sync.md, config/ia64/ia64-protos.h, config/ia64/ia64.c, config/iq2000/iq2000-protos.h, config/iq2000/iq2000.c, config/iq2000/iq2000.md, config/lm32/lm32-protos.h, config/lm32/lm32.c, config/m32c/m32c-protos.h, config/m32c/m32c.c, config/m32r/m32r-protos.h, config/m32r/m32r.c, config/m68k/m68k-protos.h, config/m68k/m68k.c, config/mcore/mcore-protos.h, config/mcore/mcore.c, config/mcore/mcore.md, config/mep/mep-protos.h, config/mep/mep.c, config/microblaze/microblaze-protos.h, config/microblaze/microblaze.c, config/mips/mips-protos.h, config/mips/mips.c, config/mmix/mmix-protos.h, config/mmix/mmix.c, config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c, config/moxie/moxie.c, config/msp430/msp430-protos.h, config/msp430/msp430.c, config/nds32/nds32-cost.c, config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c, config/nds32/nds32-protos.h, config/nds32/nds32.c, config/nios2/nios2-protos.h, config/nios2/nios2.c, config/pa/pa-protos.h, config/pa/pa.c, config/pdp11/pdp11-protos.h, config/pdp11/pdp11.c, config/rl78/rl78-protos.h, config/rl78/rl78.c, config/rs6000/altivec.md, config/rs6000/rs6000-c.c, config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/rx/rx-protos.h, config/rx/rx.c, config/s390/predicates.md, config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h, config/s390/s390.md, config/sh/predicates.md, config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.md, config/sparc/predicates.md, config/sparc/sparc-protos.h, config/sparc/sparc.c, config/sparc/sparc.md, config/spu/spu-protos.h, config/spu/spu.c, config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c, config/tilegx/tilegx-protos.h, config/tilegx/tilegx.c, config/tilegx/tilegx.md, config/tilepro/tilepro-protos.h, config/tilepro/tilepro.c, config/v850/v850-protos.h, config/v850/v850.c, config/v850/v850.md, config/vax/vax-protos.h, config/vax/vax.c, config/vms/vms-c.c, config/xtensa/xtensa-protos.h, config/xtensa/xtensa.c, coverage.c, cprop.c, cse.c, cselib.c, cselib.h, dbxout.c, ddg.c, df-problems.c, dfp.c, dfp.h, doc/md.texi, doc/rtl.texi, doc/tm.texi, doc/tm.texi.in, dojump.c, dse.c, dwarf2cfi.c, dwarf2out.c, dwarf2out.h, emit-rtl.c, emit-rtl.h, except.c, explow.c, expmed.c, expmed.h, expr.c, expr.h, final.c, fixed-value.c, fixed-value.h, fold-const.c, function.c, function.h, fwprop.c, gcse.c, gengenrtl.c, genmodes.c, genopinit.c, genoutput.c, genpreds.c, genrecog.c, gensupport.c, gimple-ssa-strength-reduction.c, graphite-clast-to-gimple.c, haifa-sched.c, hooks.c, hooks.h, ifcvt.c, internal-fn.c, ira-build.c, ira-color.c, ira-conflicts.c, ira-costs.c, ira-emit.c, ira-int.h, ira-lives.c, ira.c, ira.h, jump.c, langhooks.h, libfuncs.h, lists.c, loop-doloop.c, loop-invariant.c, loop-iv.c, loop-unroll.c, lower-subreg.c, lower-subreg.h, lra-assigns.c, lra-constraints.c, lra-eliminations.c, lra-int.h, lra-lives.c, lra-spills.c, lra.c, lra.h, machmode.h, omp-low.c, optabs.c, optabs.h, output.h, postreload.c, print-tree.c, read-rtl.c, real.c, real.h, recog.c, recog.h, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c, regs.h, reload.c, reload.h, reload1.c, rtl.c, rtl.h, rtlanal.c, rtlhash.c, rtlhooks-def.h, rtlhooks.c, sched-deps.c, sel-sched-dump.c, sel-sched-ir.c, sel-sched-ir.h, sel-sched.c, simplify-rtx.c, stmt.c, stor-layout.c, stor-layout.h, target.def, targhooks.c, targhooks.h, tree-affine.c, tree-call-cdce.c, tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-if-conv.c, tree-inline.c, tree-outof-ssa.c, tree-scalar-evolution.c, tree-ssa-address.c, tree-ssa-ccp.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-ivopts.h, tree-ssa-loop-manip.c, tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-streamer-in.c, tree-switch-conversion.c, tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop.c, tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c, tree-vrp.c, tree.c, tree.h, tsan.c, ubsan.c, valtrack.c, var-tracking.c, varasm.c: Remove redundant enum from machine_mode. * gengtype.c (main): Treat machine_mode as a scalar typedef. * genmodes.c (emit_insn_modes_h): Hide inline functions if USED_FOR_TARGET. 2014-10-29 Richard Sandiford <richard.sandiford@arm.com> PR rtl-optimization/63340 (part 2) * rtl.h (invalid_mode_change_p): Delete. (valid_mode_changes_for_regno): New function. * reginfo.c (invalid_mode_change_p): Delete. (valid_mode_changes_for_regno): New function. * ira-costs.c (setup_regno_cost_classes_by_aclass): Restrict the classes to registers that are allowed by valid_mode_changes_for_regno. (setup_regno_cost_classes_by_mode): Likewise. (print_allocno_costs): Remove invalid_mode_change_p test. (print_pseudo_costs, find_costs_and_classes): Likewise. 2014-10-29 Richard Sandiford <richard.sandiford@arm.com> PR rtl-optimization/63340 (part 1) * ira-costs.c (all_cost_classes): New variable. (complete_cost_classes): New function, split out from... (setup_cost_classes): ...here. (initiate_regno_cost_classes): Set up all_cost_classes. (restrict_cost_classes): New function. (setup_regno_cost_classes_by_aclass): Restrict the cost classes to registers that are valid for the register's mode. (setup_regno_cost_classes_by_mode): Model the mode cache as a restriction of all_cost_classes to a particular mode. (print_allocno_costs): Remove contains_reg_of_mode check. (print_pseudo_costs, find_costs_and_classes): Likewise. 2014-10-29 Richard Biener <rguenther@suse.de> PR tree-optimization/63666 * tree-vect-slp.c (vect_get_mask_element): Properly handle accessing out-of-bound elements. 2014-10-29 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/i386.md (movhi_internal): Always detect maskmov. (movqi_internal): Fix target check. 2014-10-29 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/avx512bwintrin.h: Add new intrinsics. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto. 2014-10-28 Dominik Vogt <vogt@linux.vnet.ibm.com> * godump.c (precision_to_units): New helper function. (go_append_artificial_name): Ditto. (go_append_decl_name): Ditto. (go_append_bitfield): Ditto. (go_get_uinttype_for_precision): Ditto. (go_append_padding): Ditto. (go_force_record_alignment): Ditto. (go_format_type): Represent unions with an array of uints of the size of the alignment in go. This fixes the 'random' size of the union's representation using just the first field. (go_format_type): Add argument that indicates whether a record is nested (used for generation of artificial go names). (go_output_fndecl): Adapt to new go_format_type signature. (go_output_typedef): Ditto. (go_output_var): Ditto. (go_output_var): Prefer to output type as alias (typedef). (go_format_type): Bitfields in records are simulated as arrays of bytes in go. * godump.c (go_format_type): Fix handling of arrays with zero elements. 2014-10-28 Andrew MacLeod <amacleod@redhat.com> * cgraph.h: Flatten. Remove all include files. (symbol_table::initialize): Move to cgraph.c. * cgraph.c: Adjust include files. (symbol_table::initialize): Relocate from cgraph.h. * gengtype.c (open_base_files): Adjust include files. * gccplugin.h: Add hash-map.h, is-a.h, plugin-api.h, and ipa-ref.h to included files. * ipa-inline.h: Remove all include files. * ipa-prop.h: Ditto. * ipa-reference.h: Ditto. * ipa-utils.h: Ditto: * lto-streamer.h: Remove cgraph.h from include list. * asan.c: Adjust include files. * auto-profile.c: Ditto. * bb-reorder.c: Ditto. * calls.c: Ditto. * cfgexpand.c: Ditto. * cgraphbuild.c: Ditto. * cgraphclones.c: Ditto. * cgraphunit.c: Ditto. * combine.c: Ditto. * coverage.c: Ditto. * data-streamer.c: Ditto. * data-streamer-in.c: Ditto. * data-streamer-out.c: Ditto. * dbxout.c: Ditto. * dwarf2out.c: Ditto. * except.c: Ditto. * expr.c: Ditto. * final.c: Ditto. * fold-const.c: Ditto. * ggc-page.c: Ditto. * gimple-fold.c: Ditto. * gimple-iterator.c: Ditto. * gimple-pretty-print.c: Ditto. * gimple-streamer-in.c: Ditto. * gimple-streamer-out.c: Ditto. * gimplify.c: Ditto. * ipa.c: Ditto. * ipa-comdats.c: Ditto. * ipa-cp.c: Ditto. * ipa-devirt.c: Ditto. * ipa-icf.c: Ditto. * ipa-icf-gimple.c: Ditto. * ipa-inline-analysis.c: Ditto. * ipa-inline.c: Ditto. * ipa-inline-transform.c: Ditto. * ipa-polymorphic-call.c: Ditto. * ipa-profile.c: Ditto. * ipa-prop.c: Ditto. * ipa-pure-const.c: Ditto. * ipa-ref.c: Ditto. * ipa-reference.c: Ditto. * ipa-split.c: Ditto. * ipa-utils.c: Ditto. * ipa-visibility.c: Ditto. * langhooks.c: Ditto. * lto-cgraph.c: Ditto. * lto-compress.c: Ditto. * lto-opts.c: Ditto. * lto-section-in.c: Ditto. * lto-section-out.c: Ditto. * lto-streamer.c: Ditto. * lto-streamer-in.c: Ditto. * lto-streamer-out.c: Ditto. * omp-low.c: Ditto. * opts-global.c: Ditto. * passes.c: Ditto. * predict.c: Ditto. * print-tree.c: Ditto. * profile.c: Ditto. * ree.c: Ditto. * stor-layout.c: Ditto. * symtab.c: Ditto. * toplev.c: Ditto. * trans-mem.c: Ditto. * tree.c: Ditto. * tree-cfg.c: Ditto. * tree-eh.c: Ditto. * tree-emutls.c: Ditto. * tree-inline.c: Ditto. * tree-nested.c: Ditto. * tree-pretty-print.c: Ditto. * tree-profile.c: Ditto. * tree-sra.c: Ditto. * tree-ssa-alias.c: Ditto. * tree-ssa-loop-ivcanon.c: Ditto. * tree-ssa-loop-ivopts.c: Ditto. * tree-ssa-pre.c: Ditto. * tree-ssa-structalias.c: Ditto. * tree-streamer.c: Ditto. * tree-streamer-in.c: Ditto. * tree-streamer-out.c: Ditto. * tree-switch-conversion.c: Ditto. * tree-tailcall.c: Ditto. * tree-vect-data-refs.c: Ditto. * tree-vectorizer.c: Ditto. * tree-vect-stmts.c: Ditto. * tsan.c: Ditto. * ubsan.c: Ditto. * value-prof.c: Ditto. * varasm.c: Ditto. * varpool.c: Ditto. * config/arm/arm.c: Ditto. * config/bfin/bfin.c: Ditto. * config/c6x/c6x.c: Ditto. * config/cris/cris.c: Ditto. * config/darwin.c: Ditto. * config/darwin-c.c: Ditto. * config/i386/i386.c: Ditto. * config/i386/winnt.c: Ditto. * config/microblaze/microblaze.c: Ditto. * config/mips/mips.c: Ditto. * config/rs6000/rs6000.c: Ditto. * config/rx/rx.c: Ditto. 2014-10-28 Richard Biener <rguenther@suse.de> * gimple-fold.h (follow_single_use_edges): Declare. * gimple-fold.c (follow_single_use_edges): New function. (gimple_fold_stmt_to_constant_1): Dispatch to gimple_simplify. * tree-ssa-propagate.c (substitute_and_fold_dom_walker::before_dom_children): Allow following single-use edges when folding stmts we propagated into. 2014-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/avx512bwintrin.h: New. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vldqintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto. * config/i386/immintrin.h: Include avx512vlintrin.h, avx512bwintrin.h, avx512dqintrin.h, avx512vlbwintrin.h, avx512vldqintrin.h. 2014-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/i386.c (ix86_expand_args_builtin): Handle avx_vpermilv4df_mask, avx_shufpd256_mask, avx_vpermilv2df_mask. 2014-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/i386.c (ix86_init_mmx_sse_builtins): Define __builtin_ia32_gather3siv2df, __builtin_ia32_gather3siv4df, __builtin_ia32_gather3div2df, __builtin_ia32_gather3div4df, __builtin_ia32_gather3siv4sf, __builtin_ia32_gather3siv8sf, __builtin_ia32_gather3div4sf, __builtin_ia32_gather3div8sf, __builtin_ia32_gather3siv2di, __builtin_ia32_gather3siv4di, __builtin_ia32_gather3div2di, __builtin_ia32_gather3div4di, __builtin_ia32_gather3siv4si, __builtin_ia32_gather3siv8si, __builtin_ia32_gather3div4si, __builtin_ia32_gather3div8si, __builtin_ia32_gather3altsiv4df, __builtin_ia32_gather3altdiv8sf, __builtin_ia32_gather3altsiv4di, __builtin_ia32_gather3altdiv8si, __builtin_ia32_scattersiv8sf, __builtin_ia32_scattersiv4sf, __builtin_ia32_scattersiv4df, __builtin_ia32_scattersiv2df, __builtin_ia32_scatterdiv8sf, __builtin_ia32_scatterdiv4sf, __builtin_ia32_scatterdiv4df, __builtin_ia32_scatterdiv2df, __builtin_ia32_scattersiv8si, __builtin_ia32_scattersiv4si, __builtin_ia32_scattersiv4di, __builtin_ia32_scattersiv2di, __builtin_ia32_scatterdiv8si, __builtin_ia32_scatterdiv4si, __builtin_ia32_scatterdiv4di, __builtin_ia32_scatterdiv2di. 2014-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_GATHER3ALTSIV4DF, IX86_BUILTIN_GATHER3ALTDIV8SF, IX86_BUILTIN_GATHER3ALTSIV4DI, IX86_BUILTIN_GATHER3ALTDIV8SI. (ix86_expand_builtin): Handle IX86_BUILTIN_GATHER3ALTDIV8SF, IX86_BUILTIN_GATHER3ALTDIV8SI, IX86_BUILTIN_SCATTERSIV4DF, IX86_BUILTIN_SCATTERSIV4DI, IX86_BUILTIN_SCATTERDIV2DF, IX86_BUILTIN_SCATTERDIV4DF, IX86_BUILTIN_GATHER3ALTSIV4DI, IX86_BUILTIN_GATHER3ALTSIV4DF, IX86_BUILTIN_SCATTERDIV4DI, IX86_BUILTIN_SCATTERDIV2DI, IX86_BUILTIN_GATHER3SIV8SI, IX86_BUILTIN_GATHER3DIV8SI, IX86_BUILTIN_GATHER3SIV4DF, IX86_BUILTIN_GATHER3SIV4DI, IX86_BUILTIN_GATHER3DIV8SF, IX86_BUILTIN_GATHER3SIV8SF, IX86_BUILTIN_GATHER3DIV4DF, IX86_BUILTIN_GATHER3DIV2DF, IX86_BUILTIN_GATHER3DIV2DI, IX86_BUILTIN_GATHER3DIV4DI, IX86_BUILTIN_SCATTERDIV4SF, IX86_BUILTIN_SCATTERSIV2DI, IX86_BUILTIN_GATHER3SIV2DI, IX86_BUILTIN_GATHER3SIV4SI, IX86_BUILTIN_GATHER3SIV4SF, IX86_BUILTIN_GATHER3SIV2DF, IX86_BUILTIN_SCATTERSIV2DF, IX86_BUILTIN_SCATTERDIV4SI, IX86_BUILTIN_SCATTERSIV4SF, IX86_BUILTIN_SCATTERSIV4SI, IX86_BUILTIN_SCATTERDIV8SI, IX86_BUILTIN_GATHER3DIV4SI, IX86_BUILTIN_SCATTERSIV8SI, IX86_BUILTIN_SCATTERSIV8SF, IX86_BUILTIN_GATHER3DIV4SF, IX86_BUILTIN_SCATTERDIV8SF. (ix86_vectorize_builtin_gather): Update V2DFmode, V4DFmode, V2DImode, V4DImode, V4SFmode, V8SFmode, V4SImode, V8SImode. 2014-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com> Anna Tikhonova <anna.tikhonova@intel.com> Ilya Tocar <ilya.tocar@intel.com> Andrey Turetskiy <andrey.turetskiy@intel.com> Ilya Verbin <ilya.verbin@intel.com> Kirill Yukhin <kirill.yukhin@intel.com> Michael Zolotukhin <michael.v.zolotukhin@intel.com> * config/i386/i386-builtin-types.def (SHORT): New. (V32HI): Ditto. (V12QI): Ditto. (V14QI): Ditto. (V32SI): Ditto. (V8UDI): Ditto. (V16USI): Ditto. (V32UHI): Ditto. (PSHORT): Ditto. (PV32QI): Ditto. (PV32HI): Ditto. (PV64QI): Ditto. (PCV8HI): Ditto. (PCV16QI): Ditto. (PCV16HI): Ditto. (PCV32QI): Ditto. (PCV32HI): Ditto. (PCV64QI): Ditto. (V4SF_FTYPE_V2DF_V4SF_QI): Ditto. (V4SF_FTYPE_V4DF_V4SF_QI): Ditto. (V4SF_FTYPE_V8HI_V4SF_QI): Ditto. (V8SF_FTYPE_V8HI_V8SF_QI): Ditto. (V16SF_FTYPE_V16HI): Ditto. (V16SF_FTYPE_V16HI_V16SF_HI): Ditto. (V16SF_FTYPE_V16SI): Ditto. (V4DI_FTYPE_V4DI): Ditto. (V16SI_FTYPE_V16SF): Ditto. (V8DI_FTYPE_PV2DI): Ditto. (V8DF_FTYPE_PV2DF): Ditto. (V4DI_FTYPE_PV2DI): Ditto. (V4DF_FTYPE_PV2DF): Ditto. (V16SI_FTYPE_PV2SI): Ditto. (V16SF_FTYPE_PV2SF): Ditto. (V8SF_FTYPE_FLOAT): Ditto. (V4SF_FTYPE_FLOAT): Ditto. (V4DF_FTYPE_DOUBLE): Ditto. (V8SF_FTYPE_PV4SF): Ditto. (V8SI_FTYPE_PV4SI): Ditto. (V4SI_FTYPE_PV2SI): Ditto. (V8SF_FTYPE_PV2SF): Ditto. (V8SI_FTYPE_PV2SI): Ditto. (V16SF_FTYPE_PV8SF): Ditto. (V16SI_FTYPE_PV8SI): Ditto. (V8DI_FTYPE_V8SF): Ditto. (V4DI_FTYPE_V4SF): Ditto. (V2DI_FTYPE_V4SF): Ditto. (V64QI_FTYPE_QI): Ditto. (V32HI_FTYPE_HI): Ditto. (V16UHI_FTYPE_V16UHI): Ditto. (V32UHI_FTYPE_V32UHI): Ditto. (V2UDI_FTYPE_V2UDI): Ditto. (V4UDI_FTYPE_V4UDI): Ditto. (V8UDI_FTYPE_V8UDI): Ditto. (V4USI_FTYPE_V4USI): Ditto. (V16USI_FTYPE_V16USI): Ditto. (V2DF_FTYPE_V4DF_INT_V2DF_QI): Ditto. (V2DF_FTYPE_V8DF_INT): Ditto. (V2DF_FTYPE_V8DF_INT_V2DF_QI): Ditto. (V2DI_FTYPE_V2DI_INT_V2DI_QI): Ditto. (V8DF_FTYPE_V8DF_INT): Ditto. (V4SF_FTYPE_V8SF_INT_V4SF_QI): Ditto. (V4SI_FTYPE_V2DF_V4SI_QI): Ditto. (V4SI_FTYPE_V4SI_INT_V4SI_QI): Ditto. (V4SI_FTYPE_V8HI_V8HI_V4SI_QI): Ditto. (V4SI_FTYPE_V8SI_INT_V4SI_QI): Ditto. (V8HI_FTYPE_V16QI_V16QI_V8HI_QI): Ditto. (V8DI_FTYPE_V8DI_INT): Ditto. (V8HI_FTYPE_V8SF_INT_V8HI_QI): Ditto. (V8HI_FTYPE_V4SF_INT_V8HI_QI): Ditto. (V8SF_FTYPE_V16SF_INT): Ditto. (V8SF_FTYPE_V16SF_INT_V8SF_QI): Ditto. (V64QI_FTYPE_V32HI_V32HI): Ditto. (V32HI_FTYPE_V16SI_V16SI): Ditto. (V8DF_FTYPE_V8DF_V2DF_INT): Ditto. (V8DF_FTYPE_V8DF_V2DF_INT_V8DF_QI): Ditto. (V8DF_FTYPE_V8DF_V8DF_INT): Ditto. (V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI_INT): Ditto. (V8DF_FTYPE_V8DF_V8DF_V8DI_INT): Ditto. (V8DF_FTYPE_V8DF_V8DF_V8DI_INT_QI): Ditto. (V4DF_FTYPE_V4DF_V4DF_V4DI_INT_QI): Ditto. (V2DF_FTYPE_V2DF_V2DF_V2DI_INT_QI): Ditto. (V16SF_FTYPE_V16SF_V16SF_INT_V16SF_HI_INT): Ditto. (V8SF_FTYPE_V8SF_V8SF_V8SI_INT_QI): Ditto. (V16SF_FTYPE_V16SF_V8SF_INT_V16SF_HI): Ditto. (V32HI_FTYPE_V64QI_V64QI): Ditto. (V16HI_FTYPE_V32QI_V32QI_V16HI_HI): Ditto. (V32HI_FTYPE_V64QI_V64QI_V32HI_SI): Ditto. (V32HI_FTYPE_V32HI_V32HI): Ditto. (V32HI_FTYPE_V32HI_INT): Ditto. (V16SI_FTYPE_V16SI_V8SI_INT_V16SI_HI): Ditto. (V16SI_FTYPE_V32HI_V32HI): Ditto. (V8SI_FTYPE_V16HI_V16HI_V8SI_QI): Ditto. (V16SI_FTYPE_V32HI_V32HI_V16SI_HI): Ditto. (V8SI_FTYPE_V8SI_INT_V8SI_QI): Ditto. (V8SI_FTYPE_V16SI_INT): Ditto. (V8SI_FTYPE_V16SI_INT_V8SI_QI): Ditto. (V8DI_FTYPE_V8DI_V8DI_INT_V8DI_DI): Ditto. (V4DI_FTYPE_V4DI_V4DI_INT_V4DI_SI): Ditto. (V2DI_FTYPE_V2DI_V2DI_INT_V2DI_HI): Ditto. (V8DI_FTYPE_V8DI_V4DI_INT): Ditto. (V8DI_FTYPE_V8DI_V2DI_INT): Ditto. (V8DI_FTYPE_V8DI_V2DI_INT_V8DI_QI): Ditto. (V8DI_FTYPE_V16SI_V16SI): Ditto. (V8DI_FTYPE_V64QI_V64QI): Ditto. (V4DI_FTYPE_V4DI_INT_V4DI_QI): Ditto. (V2DI_FTYPE_V4DI_INT_V2DI_QI): Ditto. (V2DI_FTYPE_V8DI_INT): Ditto. (V2DI_FTYPE_V8DI_INT_V2DI_QI): Ditto. (QI_FTYPE_QI): Ditto. (SI_FTYPE_SI): Ditto. (DI_FTYPE_DI): Ditto. (HI_FTYPE_V16QI): Ditto. (SI_FTYPE_V32QI): Ditto. (DI_FTYPE_V64QI): Ditto. (QI_FTYPE_V8HI): Ditto. (HI_FTYPE_V16HI): Ditto. (SI_FTYPE_V32HI): Ditto. (QI_FTYPE_V4SI): Ditto. (QI_FTYPE_V8SI): Ditto. (HI_FTYPE_V16SI): Ditto. (QI_FTYPE_V2DI): Ditto. (QI_FTYPE_V4DI): Ditto. (QI_FTYPE_V8DI): Ditto. (V16QI_FTYPE_HI): Ditto. (V32QI_FTYPE_SI): Ditto. (V64QI_FTYPE_DI): Ditto. (V8HI_FTYPE_QI): Ditto. (V16HI_FTYPE_HI): Ditto. (V32HI_FTYPE_SI): Ditto. (V4SI_FTYPE_QI): Ditto. (V4SI_FTYPE_HI): Ditto. (V8SI_FTYPE_QI): Ditto. (V8SI_FTYPE_HI): Ditto. (V2DI_FTYPE_QI): Ditto. (V4DI_FTYPE_QI): Ditto. (QI_FTYPE_QI_QI): Ditto. (SI_FTYPE_SI_SI): Ditto. (DI_FTYPE_DI_DI): Ditto. (QI_FTYPE_QI_INT): Ditto. (SI_FTYPE_SI_INT): Ditto. (DI_FTYPE_DI_INT): Ditto. (HI_FTYPE_V16QI_V16QI): Ditto. (HI_FTYPE_V16QI_V16QI_HI): Ditto. (HI_FTYPE_V16QI_V16QI_INT_HI): Ditto. (SI_FTYPE_V32QI_V32QI): Ditto. (SI_FTYPE_V32QI_V32QI_SI): Ditto. (SI_FTYPE_V32QI_V32QI_INT_SI): Ditto. (DI_FTYPE_V64QI_V64QI): Ditto. (DI_FTYPE_V64QI_V64QI_DI): Ditto. (DI_FTYPE_V64QI_V64QI_INT_DI): Ditto. (QI_FTYPE_V8HI_V8HI): Ditto. (QI_FTYPE_V8HI_V8HI_QI): Ditto. (QI_FTYPE_V8HI_V8HI_INT_QI): Ditto. (HI_FTYPE_V16HI_V16HI): Ditto. (HI_FTYPE_V16HI_V16HI_HI): Ditto. (HI_FTYPE_V16HI_V16HI_INT_HI): Ditto. (SI_FTYPE_V32HI_V32HI): Ditto. (SI_FTYPE_V32HI_V32HI_SI): Ditto. (SI_FTYPE_V32HI_V32HI_INT_SI): Ditto. (QI_FTYPE_V4SI_V4SI): Ditto. (QI_FTYPE_V4SI_V4SI_QI): Ditto. (QI_FTYPE_V4SI_V4SI_INT_QI): Ditto. (QI_FTYPE_V8SI_V8SI): Ditto. (QI_FTYPE_V8SI_V8SI_QI): Ditto. (QI_FTYPE_V8SI_V8SI_INT_QI): Ditto. (QI_FTYPE_V2DI_V2DI): Ditto. (QI_FTYPE_V2DI_V2DI_QI): Ditto. (QI_FTYPE_V2DI_V2DI_INT_QI): Ditto. (QI_FTYPE_V4DI_V4DI): Ditto. (QI_FTYPE_V4DI_V4DI_QI): Ditto. (QI_FTYPE_V4DI_V4DI_INT_QI): Ditto. (V32HI_FTYPE_V32HI_V32HI_V32HI): Ditto. (V4DF_FTYPE_V4DF_V4DI_INT): Ditto. (V2DF_FTYPE_V2DI_V2DF_V2DF_QI): Ditto. (V2DF_FTYPE_V2DF_V2DI_V2DF_QI): Ditto. (V4DF_FTYPE_V4DF_V2DF_INT_V4DF_QI): Ditto. (V8DI_FTYPE_V8DI_V8DI_INT): Ditto. (V4SF_FTYPE_V4SI_V4SF_V4SF_QI): Ditto. (V4SF_FTYPE_V4SF_V4SI_V4SF_QI): Ditto. (V4SF_FTYPE_V4SF_V4SF_V4SF_QI): Ditto. (V4SF_FTYPE_V4SF_V2DF_V4SF_QI): Ditto. (V8SF_FTYPE_V8SF_V4SF_INT_V8SF_QI): Ditto. (V8SI_FTYPE_V8SI_V4SI_INT_V8SI_QI): Ditto. (V4DI_FTYPE_V4DI_V2DI_INT_V4DI_QI): Ditto. (V2DF_FTYPE_V2DF_V2DF_QI): Ditto. (V2DF_FTYPE_V4SF_V2DF_QI): Ditto. (V2DF_FTYPE_V4SI_V2DF_QI): Ditto. (V4DF_FTYPE_V4DF_V4DF_QI): Ditto. (V4DF_FTYPE_V4SF_V4DF_QI): Ditto. (V4DF_FTYPE_V4SI_V4DF_QI): Ditto. (V2DI_FTYPE_V4SI_V2DI_QI): Ditto. (V2DI_FTYPE_V8HI_V2DI_QI): Ditto. (V8DI_FTYPE_V8DF_V8DI_QI): Ditto. (V4DI_FTYPE_V4DF_V4DI_QI): Ditto. (V2DI_FTYPE_V2DF_V2DI_QI): Ditto. (V2DI_FTYPE_V2DI_V2DI_V2DI_QI): Ditto. (V2DI_FTYPE_V2DI_V2DI_INT_V2DI_QI): Ditto. (V4DI_FTYPE_V4DI_V4DI_V4DI_QI): Ditto. (V4DI_FTYPE_V4DI_V4DI_INT_V4DI_QI): Ditto. (V2DI_FTYPE_V16QI_V2DI_QI): Ditto. (V4DI_FTYPE_V16QI_V4DI_QI): Ditto. (V4DI_FTYPE_V4DI_V4DI_QI): Ditto. (V4DI_FTYPE_V4SI_V4DI_QI): Ditto. (V4DI_FTYPE_V8HI_V4DI_QI): Ditto. (V4DF_FTYPE_V4DI_V4DF_V4DF_QI): Ditto. (V4DF_FTYPE_V4DF_V4DI_V4DF_QI): Ditto. (V4DF_FTYPE_V4DF_V4DF_V4DF_QI): Ditto. (V16QI_FTYPE_V16QI_V16QI_V16QI_HI): Ditto. (V16HI_FTYPE_V16HI_V16HI_V16HI_HI): Ditto. (V32HI_FTYPE_V32HI_V32HI_V32HI_SI): Ditto. (V64QI_FTYPE_V64QI_V64QI_V64QI_DI): Ditto. (V32QI_FTYPE_V32QI_V32QI_V32QI_SI): Ditto. (V8HI_FTYPE_V8HI_V8HI_V8HI_QI): Ditto. (V4SF_FTYPE_V4SF_V4SF_QI): Ditto. (V4SF_FTYPE_V4SI_V4SF_QI): Ditto. (V8SF_FTYPE_V8SF_V8SF_QI): Ditto. (V8SF_FTYPE_V8SI_V8SF_QI): Ditto. (V4SI_FTYPE_V16QI_V4SI_QI): Ditto. (V4SI_FTYPE_V8HI_V4SI_QI): Ditto. (V8SI_FTYPE_V8SI_V8SI_QI): Ditto. (V8SI_FTYPE_V8HI_V8SI_QI): Ditto. (V8SI_FTYPE_V16QI_V8SI_QI): Ditto. (V4SI_FTYPE_V4SI_V4SI_V4SI_QI): Ditto. (V4SI_FTYPE_V4SI_V4SI_INT_V4SI_QI): Ditto. (V8SF_FTYPE_V8SF_V8SF_V8SF_QI): Ditto. (V8SF_FTYPE_V8SI_V8SF_V8SF_QI): Ditto. (V8SF_FTYPE_V8SF_V8SI_V8SF_QI): Ditto. (V8SI_FTYPE_V8SI_V8SI_V8SI_QI): Ditto. (V8SI_FTYPE_V8SI_V8SI_INT_V8SI_QI): Ditto. (V16SF_FTYPE_V8SF_V16SF_HI): Ditto. (V16SI_FTYPE_V8SI_V16SI_HI): Ditto. (V4SI_FTYPE_V4DF_V4SI_QI): Ditto. (V8DI_FTYPE_PCCHAR_V8DI_QI): Ditto. (V8SF_FTYPE_PCFLOAT_V8SF_QI): Ditto. (V4SF_FTYPE_PCFLOAT_V4SF_QI): Ditto. (V4DF_FTYPE_PCDOUBLE_V4DF_QI): Ditto. (V2DF_FTYPE_PCDOUBLE_V2DF_QI): Ditto. (V8SI_FTYPE_PCCHAR_V8SI_QI): Ditto. (V4SI_FTYPE_PCCHAR_V4SI_QI): Ditto. (V4DI_FTYPE_PCCHAR_V4DI_QI): Ditto. (V2DI_FTYPE_PCCHAR_V2DI_QI): Ditto. (V16QI_FTYPE_V16SI_V16QI_HI): Ditto. (V16QI_FTYPE_V8DI_V16QI_QI): Ditto. (V32HI_FTYPE_V32HI_V32HI_SI): Ditto. (V32HI_FTYPE_V64QI_V64QI_INT): Ditto. (V32HI_FTYPE_V32QI_V32HI_SI): Ditto. (V16HI_FTYPE_V16HI_V16HI_HI): Ditto. (V16HI_FTYPE_V32QI_V32QI_INT): Ditto. (V16HI_FTYPE_V16QI_V16HI_HI): Ditto. (V8HI_FTYPE_V16QI_V8HI_QI): Ditto. (V8HI_FTYPE_V16QI_V16QI_INT): Ditto. (V8SF_FTYPE_V4SF_V8SF_QI): Ditto. (V4DF_FTYPE_V2DF_V4DF_QI): Ditto. (V8SI_FTYPE_V4SI_V8SI_QI): Ditto. (V8SI_FTYPE_SI_V8SI_QI): Ditto. (V4SI_FTYPE_V4SI_V4SI_QI): Ditto. (V4SI_FTYPE_SI_V4SI_QI): Ditto. (V4DI_FTYPE_V2DI_V4DI_QI): Ditto. (V4DI_FTYPE_DI_V4DI_QI): Ditto. (V2DI_FTYPE_V2DI_V2DI_QI): Ditto. (V2DI_FTYPE_DI_V2DI_QI): Ditto. (V64QI_FTYPE_V64QI_V64QI_DI): Ditto. (V64QI_FTYPE_V16QI_V64QI_DI): Ditto. (V64QI_FTYPE_QI_V64QI_DI): Ditto. (V32QI_FTYPE_V32QI_V32QI_SI): Ditto. (V32QI_FTYPE_V16QI_V32QI_SI): Ditto. (V32QI_FTYPE_QI_V32QI_SI): Ditto. (V16QI_FTYPE_V16QI_V16QI_HI): Ditto. (V16QI_FTYPE_QI_V16QI_HI): Ditto. (V32HI_FTYPE_V8HI_V32HI_SI): Ditto. (V32HI_FTYPE_HI_V32HI_SI): Ditto. (V16HI_FTYPE_V8HI_V16HI_HI): Ditto. (V16HI_FTYPE_HI_V16HI_HI): Ditto. (V8HI_FTYPE_V8HI_V8HI_QI): Ditto. (V8HI_FTYPE_HI_V8HI_QI): Ditto. (V64QI_FTYPE_PCV64QI_V64QI_DI): Ditto. (V32HI_FTYPE_PCV32HI_V32HI_SI): Ditto. (V32QI_FTYPE_PCV32QI_V32QI_SI): Ditto. (V16SF_FTYPE_PCV8SF_V16SF_HI): Ditto. (V16SI_FTYPE_PCV8SI_V16SI_HI): Ditto. (V16HI_FTYPE_PCV16HI_V16HI_HI): Ditto. (V16QI_FTYPE_PCV16QI_V16QI_HI): Ditto. (V8DF_FTYPE_PCV2DF_V8DF_QI): Ditto. (V8SF_FTYPE_PCV8SF_V8SF_QI): Ditto. (V8SF_FTYPE_PCV4SF_V8SF_QI): Ditto. (V8DI_FTYPE_PCV2DI_V8DI_QI): Ditto. (V8SI_FTYPE_PCV8SI_V8SI_QI): Ditto. (V8SI_FTYPE_PCV4SI_V8SI_QI): Ditto. (V8HI_FTYPE_PCV8HI_V8HI_QI): Ditto. (V4DF_FTYPE_PCV2DF_V4DF_QI): Ditto. (V4DF_FTYPE_PCV4DF_V4DF_QI): Ditto. (V4SF_FTYPE_PCV4SF_V4SF_QI): Ditto. (V4DI_FTYPE_PCV4DI_V4DI_QI): Ditto. (V4DI_FTYPE_PCV2DI_V4DI_QI): Ditto. (V4SI_FTYPE_PCV4SI_V4SI_QI): Ditto. (V2DF_FTYPE_PCV2DF_V2DF_QI): Ditto. (V2DI_FTYPE_PCV2DI_V2DI_QI): Ditto. (V16QI_FTYPE_V8HI_V16QI_QI): Ditto. (V16QI_FTYPE_V16HI_V16QI_HI): Ditto. (V16QI_FTYPE_V4SI_V16QI_QI): Ditto. (V16QI_FTYPE_V8SI_V16QI_QI): Ditto. (V8HI_FTYPE_V4SI_V8HI_QI): Ditto. (V8HI_FTYPE_V8SI_V8HI_QI): Ditto. (V16QI_FTYPE_V2DI_V16QI_QI): Ditto. (V16QI_FTYPE_V4DI_V16QI_QI): Ditto. (V8HI_FTYPE_V2DI_V8HI_QI): Ditto. (V8HI_FTYPE_V4DI_V8HI_QI): Ditto. (V4SI_FTYPE_V2DI_V4SI_QI): Ditto. (V4SI_FTYPE_V4DI_V4SI_QI): Ditto. (V32QI_FTYPE_V32HI_V32QI_SI): Ditto. (V2DF_FTYPE_V2DF_INT_V2DF_QI): Ditto. (V4DF_FTYPE_V4DF_INT_V4DF_QI): Ditto. (V4SF_FTYPE_V4SF_INT_V4SF_QI): Ditto. (V8SF_FTYPE_V8SF_INT_V8SF_QI): Ditto. (V4DF_FTYPE_V4DF_V4DF_INT_V4DF_QI): Ditto. (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_QI): Ditto. (V8SF_FTYPE_V8SF_V8SF_INT_V8SF_QI): Ditto. (V4SF_FTYPE_V4SF_V4SF_INT_V4SF_QI): Ditto. (VOID_FTYPE_PV8HI_V4DI_QI): Ditto. (VOID_FTYPE_PV8HI_V2DI_QI): Ditto. (VOID_FTYPE_PV4SI_V4DI_QI): Ditto. (VOID_FTYPE_PV4SI_V2DI_QI): Ditto. (VOID_FTYPE_PV8HI_V8SI_QI): Ditto. (VOID_FTYPE_PV8HI_V4SI_QI): Ditto. (VOID_FTYPE_PV4DF_V4DF_QI): Ditto. (VOID_FTYPE_PV2DF_V2DF_QI): Ditto. (VOID_FTYPE_PV8SF_V8SF_QI): Ditto. (VOID_FTYPE_PV4SF_V4SF_QI): Ditto. (VOID_FTYPE_PV4DI_V4DI_QI): Ditto. (VOID_FTYPE_PV2DI_V2DI_QI): Ditto. (VOID_FTYPE_PV16QI_V8SI_QI): Ditto. (VOID_FTYPE_PV16QI_V4SI_QI): Ditto. (VOID_FTYPE_PV16QI_V4DI_QI): Ditto. (VOID_FTYPE_PV16QI_V2DI_QI): Ditto. (VOID_FTYPE_PV8SI_V8SI_QI): Ditto. (VOID_FTYPE_PV4SI_V4SI_QI): Ditto. (VOID_FTYPE_PV32HI_V32HI_SI): Ditto. (VOID_FTYPE_PV16HI_V16HI_HI): Ditto. (VOID_FTYPE_PV8HI_V8HI_QI): Ditto. (VOID_FTYPE_PV64QI_V64QI_DI): Ditto. (VOID_FTYPE_PV32QI_V32QI_SI): Ditto. (VOID_FTYPE_PV16QI_V16QI_HI): Ditto. (V8SI_FTYPE_V8SF_V8SI_QI): Ditto. (V4SI_FTYPE_V4SF_V4SI_QI): Ditto. (V8DI_FTYPE_V8SF_V8DI_QI): Ditto. (V4DI_FTYPE_V4SF_V4DI_QI): Ditto. (V2DI_FTYPE_V4SF_V2DI_QI): Ditto. (V8SF_FTYPE_V8DI_V8SF_QI): Ditto. (V4SF_FTYPE_V4DI_V4SF_QI): Ditto. (V4SF_FTYPE_V2DI_V4SF_QI): Ditto. (V8DF_FTYPE_V8DI_V8DF_QI): Ditto. (V4DF_FTYPE_V4DI_V4DF_QI): Ditto. (V2DF_FTYPE_V2DI_V2DF_QI): Ditto. (V32HI_FTYPE_V32HI_INT_V32HI_SI): Ditto. (V32HI_FTYPE_V32HI_V8HI_V32HI_SI): Ditto. (V16HI_FTYPE_V16HI_INT_V16HI_HI): Ditto. (V16HI_FTYPE_V16HI_V8HI_V16HI_HI): Ditto. (V8HI_FTYPE_V8HI_INT_V8HI_QI): Ditto. (V32HI_FTYPE_V64QI_V64QI_INT_V32HI_SI): Ditto. (V16HI_FTYPE_V32QI_V32QI_INT_V16HI_HI): Ditto. (V8HI_FTYPE_V16QI_V16QI_INT_V8HI_QI): Ditto. (V64QI_FTYPE_V32HI_V32HI_V64QI_DI): Ditto. (V32QI_FTYPE_V16HI_V16HI_V32QI_SI): Ditto. (V16QI_FTYPE_V8HI_V8HI_V16QI_HI): Ditto. (V32HI_FTYPE_V16SI_V16SI_V32HI_SI): Ditto. (V16HI_FTYPE_V8SI_V8SI_V16HI_HI): Ditto. (V8HI_FTYPE_V4SI_V4SI_V8HI_QI): Ditto. (V8DI_FTYPE_V16SI_V16SI_V8DI_QI): Ditto. (V4DI_FTYPE_V8SI_V8SI_V4DI_QI): Ditto. (V2DI_FTYPE_V4SI_V4SI_V2DI_QI): Ditto. (V8SI_FTYPE_V8SI_V8SI_V8SI_INT_QI): Ditto. (V4DI_FTYPE_V4DI_V4DI_V4DI_INT_QI): Ditto. (V4SI_FTYPE_V4SI_V4SI_V4SI_INT_QI): Ditto. (V2DI_FTYPE_V2DI_V2DI_V2DI_INT_QI): Ditto. (V2DF_FTYPE_V2DF_V2DI_V2DF): Ditto. (V4DF_FTYPE_V4DF_V4DI_V4DF): Ditto. (V4SF_FTYPE_V4SF_V4SI_V4SF): Ditto. (V8SF_FTYPE_V8SF_V8SI_V8SF): Ditto. (V8SI_FTYPE_V8SI_V4SI_V8SI_QI): Ditto. (V4DI_FTYPE_V4DI_V2DI_V4DI_QI): Ditto. (QI_FTYPE_V8DF_INT): Ditto. (QI_FTYPE_V4DF_INT): Ditto. (QI_FTYPE_V4DF_V4DF_INT_QI): Ditto. (QI_FTYPE_V2DF_INT): Ditto. (HI_FTYPE_V16SF_INT): Ditto. (QI_FTYPE_V8SF_INT): Ditto. (QI_FTYPE_V8SF_V8SF_INT_QI): Ditto. (QI_FTYPE_V4SF_INT): Ditto. (QI_FTYPE_V8DF_INT_QI): Ditto. (QI_FTYPE_V4DF_INT_QI): Ditto. (QI_FTYPE_V2DF_INT_QI): Ditto. (HI_FTYPE_V16SF_INT_HI): Ditto. (QI_FTYPE_V8SF_INT_QI): Ditto. (QI_FTYPE_V4SF_INT_QI): Ditto. (V8DI_FTYPE_V8DF_V8DI_QI_INT): Ditto. (V8DI_FTYPE_V8SF_V8DI_QI_INT): Ditto. (V8DF_FTYPE_V8DI_V8DF_QI_INT): Ditto. (V8SF_FTYPE_V8DI_V8SF_QI_INT): Ditto. (V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_QI_INT): Ditto. (V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_QI_INT): Ditto. (V4DF_FTYPE_V4DF_PCDOUBLE_V8SI_QI_INT): Ditto. (V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_QI_INT): Ditto. (V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_QI_INT): Ditto. (V4SF_FTYPE_V4SF_PCFLOAT_V4SI_QI_INT): Ditto. (V8SF_FTYPE_V8SF_PCFLOAT_V8SI_QI_INT): Ditto. (V4SF_FTYPE_V4SF_PCFLOAT_V2DI_QI_INT): Ditto. (V4SF_FTYPE_V4SF_PCFLOAT_V4DI_QI_INT): Ditto. (V8SF_FTYPE_V8SF_PCFLOAT_V4DI_QI_INT): Ditto. (V2DI_FTYPE_V2DI_PCINT64_V4SI_QI_INT): Ditto. (V4DI_FTYPE_V4DI_PCINT64_V4SI_QI_INT): Ditto. (V4DI_FTYPE_V4DI_PCINT64_V8SI_QI_INT): Ditto. (V2DI_FTYPE_V2DI_PCINT64_V2DI_QI_INT): Ditto. (V4DI_FTYPE_V4DI_PCINT64_V4DI_QI_INT): Ditto. (V4SI_FTYPE_V4SI_PCINT_V4SI_QI_INT): Ditto. (V8SI_FTYPE_V8SI_PCINT_V8SI_QI_INT): Ditto. (V4SI_FTYPE_V4SI_PCINT_V2DI_QI_INT): Ditto. (V4SI_FTYPE_V4SI_PCINT_V4DI_QI_INT): Ditto. (V8SI_FTYPE_V8SI_PCINT_V4DI_QI_INT): Ditto. (VOID_FTYPE_PFLOAT_QI_V8SI_V8SF_INT): Ditto. (VOID_FTYPE_PFLOAT_QI_V4SI_V4SF_INT): Ditto. (VOID_FTYPE_PDOUBLE_QI_V4SI_V4DF_INT): Ditto. (VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT): Ditto. (VOID_FTYPE_PFLOAT_QI_V4DI_V4SF_INT): Ditto. (VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT): Ditto. (VOID_FTYPE_PDOUBLE_QI_V4DI_V4DF_INT): Ditto. (VOID_FTYPE_PDOUBLE_QI_V2DI_V2DF_INT): Ditto. (VOID_FTYPE_PINT_QI_V8SI_V8SI_INT): Ditto. (VOID_FTYPE_PINT_QI_V4SI_V4SI_INT): Ditto. (VOID_FTYPE_PLONGLONG_QI_V4SI_V4DI_INT): Ditto. (VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT): Ditto. (VOID_FTYPE_PINT_QI_V4DI_V4SI_INT): Ditto. (VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): Ditto. (VOID_FTYPE_PLONGLONG_QI_V4DI_V4DI_INT): Ditto. (VOID_FTYPE_PLONGLONG_QI_V2DI_V2DI_INT): Ditto. (V8DI_FTYPE_V8DI_INT): Ditto. (V8DI_FTYPE_V8DI_V8DI_INT): Ditto. (V8DI_FTYPE_V8DI_V8DI_INT_V8DI_DI): Ditto. (V4DI_FTYPE_V4DI_V4DI_INT_V4DI_SI): Ditto. (V2DI_FTYPE_V2DI_V2DI_INT_V2DI_HI): Ditto. (V2DF_FTYPE_ V2DF_ V2DF_ V2DI_ INT_ QI): Remove. (V4SF_FTYPE_ V4SF_ V2DF_ V4SF_ QI): Ditto. (V4SF_FTYPE_ V4SF_ V4SF_ V4SF_ QI): Ditto. (V2DF_FTYPE_ PCDOUBLE_ V2DF_ QI): Ditto. (V4SF_FTYPE_ PCFLOAT_ V4SF_ QI): Ditto. (V16QI_FTYPE_ V16SI_ V16QI_ HI): Ditto. (V16QI_FTYPE_ V8DI_ V16QI_ QI): Ditto. (V4SF_FTYPE_ V4SF_ V4SF_ INT_ V4SF_ QI): Ditto. (V2DF_FTYPE_ V2DF_ V2DF_ INT_ V2DF_ QI): Ditto. (V8DI_FTYPE_ V16SI_ V16SI_ V8DI_ QI): Ditto. * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_PMOVUSQD256_MEM, IX86_BUILTIN_PMOVUSQD128_MEM, IX86_BUILTIN_PMOVSQD256_MEM, IX86_BUILTIN_PMOVSQD128_MEM, IX86_BUILTIN_PMOVQD256_MEM, IX86_BUILTIN_PMOVQD128_MEM, IX86_BUILTIN_PMOVUSQW256_MEM, IX86_BUILTIN_PMOVUSQW128_MEM, IX86_BUILTIN_PMOVSQW256_MEM, IX86_BUILTIN_PMOVSQW128_MEM, IX86_BUILTIN_PMOVQW256_MEM, IX86_BUILTIN_PMOVQW128_MEM, IX86_BUILTIN_PMOVUSQB256_MEM, IX86_BUILTIN_PMOVUSQB128_MEM, IX86_BUILTIN_PMOVSQB256_MEM, IX86_BUILTIN_PMOVSQB128_MEM, IX86_BUILTIN_PMOVQB256_MEM, IX86_BUILTIN_PMOVQB128_MEM, IX86_BUILTIN_PMOVUSDW256_MEM, IX86_BUILTIN_PMOVUSDW128_MEM, IX86_BUILTIN_PMOVSDW256_MEM, IX86_BUILTIN_PMOVSDW128_MEM, IX86_BUILTIN_PMOVDW256_MEM, IX86_BUILTIN_PMOVDW128_MEM, IX86_BUILTIN_PMOVUSDB256_MEM, IX86_BUILTIN_PMOVUSDB128_MEM, IX86_BUILTIN_PMOVSDB256_MEM, IX86_BUILTIN_PMOVSDB128_MEM, IX86_BUILTIN_PMOVDB256_MEM, IX86_BUILTIN_PMOVDB128_MEM, IX86_BUILTIN_MOVDQA64LOAD256_MASK, IX86_BUILTIN_MOVDQA64LOAD128_MASK, IX86_BUILTIN_MOVDQA32LOAD256_MASK, IX86_BUILTIN_MOVDQA32LOAD128_MASK, IX86_BUILTIN_MOVDQA64STORE256_MASK, IX86_BUILTIN_MOVDQA64STORE128_MASK, IX86_BUILTIN_MOVDQA32STORE256_MASK, IX86_BUILTIN_MOVDQA32STORE128_MASK, IX86_BUILTIN_LOADAPD256_MASK, IX86_BUILTIN_LOADAPD128_MASK, IX86_BUILTIN_LOADAPS256_MASK, IX86_BUILTIN_LOADAPS128_MASK, IX86_BUILTIN_STOREAPD256_MASK, IX86_BUILTIN_STOREAPD128_MASK, IX86_BUILTIN_STOREAPS256_MASK, IX86_BUILTIN_STOREAPS128_MASK, IX86_BUILTIN_LOADUPD256_MASK, IX86_BUILTIN_LOADUPD128_MASK, IX86_BUILTIN_LOADUPS256_MASK, IX86_BUILTIN_LOADUPS128_MASK, IX86_BUILTIN_STOREUPD256_MASK, IX86_BUILTIN_STOREUPD128_MASK, IX86_BUILTIN_STOREUPS256_MASK, IX86_BUILTIN_STOREUPS128_MASK, IX86_BUILTIN_LOADDQUDI256_MASK, IX86_BUILTIN_LOADDQUDI128_MASK, IX86_BUILTIN_LOADDQUSI256_MASK, IX86_BUILTIN_LOADDQUSI128_MASK, IX86_BUILTIN_LOADDQUHI256_MASK, IX86_BUILTIN_LOADDQUHI128_MASK, IX86_BUILTIN_LOADDQUQI256_MASK, IX86_BUILTIN_LOADDQUQI128_MASK, IX86_BUILTIN_STOREDQUDI256_MASK, IX86_BUILTIN_STOREDQUDI128_MASK, IX86_BUILTIN_STOREDQUSI256_MASK, IX86_BUILTIN_STOREDQUSI128_MASK, IX86_BUILTIN_STOREDQUHI256_MASK, IX86_BUILTIN_STOREDQUHI128_MASK, IX86_BUILTIN_STOREDQUQI256_MASK, IX86_BUILTIN_STOREDQUQI128_MASK, IX86_BUILTIN_COMPRESSPDSTORE256, IX86_BUILTIN_COMPRESSPDSTORE128, IX86_BUILTIN_COMPRESSPSSTORE256, IX86_BUILTIN_COMPRESSPSSTORE128, IX86_BUILTIN_PCOMPRESSQSTORE256, IX86_BUILTIN_PCOMPRESSQSTORE128, IX86_BUILTIN_PCOMPRESSDSTORE256, IX86_BUILTIN_PCOMPRESSDSTORE128, IX86_BUILTIN_EXPANDPDLOAD256, IX86_BUILTIN_EXPANDPDLOAD128, IX86_BUILTIN_EXPANDPSLOAD256, IX86_BUILTIN_EXPANDPSLOAD128, IX86_BUILTIN_PEXPANDQLOAD256, IX86_BUILTIN_PEXPANDQLOAD128, IX86_BUILTIN_PEXPANDDLOAD256, IX86_BUILTIN_PEXPANDDLOAD128, IX86_BUILTIN_EXPANDPDLOAD256Z, IX86_BUILTIN_EXPANDPDLOAD128Z, IX86_BUILTIN_EXPANDPSLOAD256Z, IX86_BUILTIN_EXPANDPSLOAD128Z, IX86_BUILTIN_PEXPANDQLOAD256Z, IX86_BUILTIN_PEXPANDQLOAD128Z, IX86_BUILTIN_PEXPANDDLOAD256Z, IX86_BUILTIN_PEXPANDDLOAD128Z, IX86_BUILTIN_PALIGNR256_MASK, IX86_BUILTIN_PALIGNR128_MASK, IX86_BUILTIN_MOVDQA64_256_MASK, IX86_BUILTIN_MOVDQA64_128_MASK, IX86_BUILTIN_MOVDQA32_256_MASK, IX86_BUILTIN_MOVDQA32_128_MASK, IX86_BUILTIN_MOVAPD256_MASK, IX86_BUILTIN_MOVAPD128_MASK, IX86_BUILTIN_MOVAPS256_MASK, IX86_BUILTIN_MOVAPS128_MASK, IX86_BUILTIN_MOVDQUHI256_MASK, IX86_BUILTIN_MOVDQUHI128_MASK, IX86_BUILTIN_MOVDQUQI256_MASK, IX86_BUILTIN_MOVDQUQI128_MASK, IX86_BUILTIN_MINPS128_MASK, IX86_BUILTIN_MAXPS128_MASK, IX86_BUILTIN_MINPD128_MASK, IX86_BUILTIN_MAXPD128_MASK, IX86_BUILTIN_MAXPD256_MASK, IX86_BUILTIN_MAXPS256_MASK, IX86_BUILTIN_MINPD256_MASK, IX86_BUILTIN_MINPS256_MASK, IX86_BUILTIN_MULPS128_MASK, IX86_BUILTIN_DIVPS128_MASK, IX86_BUILTIN_MULPD128_MASK, IX86_BUILTIN_DIVPD128_MASK, IX86_BUILTIN_DIVPD256_MASK, IX86_BUILTIN_DIVPS256_MASK, IX86_BUILTIN_MULPD256_MASK, IX86_BUILTIN_MULPS256_MASK, IX86_BUILTIN_ADDPD128_MASK, IX86_BUILTIN_ADDPD256_MASK, IX86_BUILTIN_ADDPS128_MASK, IX86_BUILTIN_ADDPS256_MASK, IX86_BUILTIN_SUBPD128_MASK, IX86_BUILTIN_SUBPD256_MASK, IX86_BUILTIN_SUBPS128_MASK, IX86_BUILTIN_SUBPS256_MASK, IX86_BUILTIN_XORPD256_MASK, IX86_BUILTIN_XORPD128_MASK, IX86_BUILTIN_XORPS256_MASK, IX86_BUILTIN_XORPS128_MASK, IX86_BUILTIN_ORPD256_MASK, IX86_BUILTIN_ORPD128_MASK, IX86_BUILTIN_ORPS256_MASK, IX86_BUILTIN_ORPS128_MASK, IX86_BUILTIN_BROADCASTF32x2_256, IX86_BUILTIN_BROADCASTI32x2_256, IX86_BUILTIN_BROADCASTI32x2_128, IX86_BUILTIN_BROADCASTF64X2_256, IX86_BUILTIN_BROADCASTI64X2_256, IX86_BUILTIN_BROADCASTF32X4_256, IX86_BUILTIN_BROADCASTI32X4_256, IX86_BUILTIN_EXTRACTF32X4_256, IX86_BUILTIN_EXTRACTI32X4_256, IX86_BUILTIN_DBPSADBW256, IX86_BUILTIN_DBPSADBW128, IX86_BUILTIN_CVTTPD2QQ256, IX86_BUILTIN_CVTTPD2QQ128, IX86_BUILTIN_CVTTPD2UQQ256, IX86_BUILTIN_CVTTPD2UQQ128, IX86_BUILTIN_CVTPD2QQ256, IX86_BUILTIN_CVTPD2QQ128, IX86_BUILTIN_CVTPD2UQQ256, IX86_BUILTIN_CVTPD2UQQ128, IX86_BUILTIN_CVTPD2UDQ256_MASK, IX86_BUILTIN_CVTPD2UDQ128_MASK, IX86_BUILTIN_CVTTPS2QQ256, IX86_BUILTIN_CVTTPS2QQ128, IX86_BUILTIN_CVTTPS2UQQ256, IX86_BUILTIN_CVTTPS2UQQ128, IX86_BUILTIN_CVTTPS2DQ256_MASK, IX86_BUILTIN_CVTTPS2DQ128_MASK, IX86_BUILTIN_CVTTPS2UDQ256, IX86_BUILTIN_CVTTPS2UDQ128, IX86_BUILTIN_CVTTPD2DQ256_MASK, IX86_BUILTIN_CVTTPD2DQ128_MASK, IX86_BUILTIN_CVTTPD2UDQ256_MASK, IX86_BUILTIN_CVTTPD2UDQ128_MASK, IX86_BUILTIN_CVTPD2DQ256_MASK, IX86_BUILTIN_CVTPD2DQ128_MASK, IX86_BUILTIN_CVTDQ2PD256_MASK, IX86_BUILTIN_CVTDQ2PD128_MASK, IX86_BUILTIN_CVTUDQ2PD256_MASK, IX86_BUILTIN_CVTUDQ2PD128_MASK, IX86_BUILTIN_CVTDQ2PS256_MASK, IX86_BUILTIN_CVTDQ2PS128_MASK, IX86_BUILTIN_CVTUDQ2PS256_MASK, IX86_BUILTIN_CVTUDQ2PS128_MASK, IX86_BUILTIN_CVTPS2PD256_MASK, IX86_BUILTIN_CVTPS2PD128_MASK, IX86_BUILTIN_PBROADCASTB256_MASK, IX86_BUILTIN_PBROADCASTB256_GPR_MASK, IX86_BUILTIN_PBROADCASTB128_MASK, IX86_BUILTIN_PBROADCASTB128_GPR_MASK, IX86_BUILTIN_PBROADCASTW256_MASK, IX86_BUILTIN_PBROADCASTW256_GPR_MASK, IX86_BUILTIN_PBROADCASTW128_MASK, IX86_BUILTIN_PBROADCASTW128_GPR_MASK, IX86_BUILTIN_PBROADCASTD256_MASK, IX86_BUILTIN_PBROADCASTD256_GPR_MASK, IX86_BUILTIN_PBROADCASTD128_MASK, IX86_BUILTIN_PBROADCASTD128_GPR_MASK, IX86_BUILTIN_PBROADCASTQ256_MASK, IX86_BUILTIN_PBROADCASTQ256_GPR_MASK, IX86_BUILTIN_PBROADCASTQ256_MEM_MASK, IX86_BUILTIN_PBROADCASTQ128_MASK, IX86_BUILTIN_PBROADCASTQ128_GPR_MASK, IX86_BUILTIN_PBROADCASTQ128_MEM_MASK, IX86_BUILTIN_BROADCASTSS256, IX86_BUILTIN_BROADCASTSS128, IX86_BUILTIN_BROADCASTSD256, IX86_BUILTIN_EXTRACTF64X2_256, IX86_BUILTIN_EXTRACTI64X2_256, IX86_BUILTIN_INSERTF32X4_256, IX86_BUILTIN_INSERTI32X4_256, IX86_BUILTIN_PMOVSXBW256_MASK, IX86_BUILTIN_PMOVSXBW128_MASK, IX86_BUILTIN_PMOVSXBD256_MASK, IX86_BUILTIN_PMOVSXBD128_MASK, IX86_BUILTIN_PMOVSXBQ256_MASK, IX86_BUILTIN_PMOVSXBQ128_MASK, IX86_BUILTIN_PMOVSXWD256_MASK, IX86_BUILTIN_PMOVSXWD128_MASK, IX86_BUILTIN_PMOVSXWQ256_MASK, IX86_BUILTIN_PMOVSXWQ128_MASK, IX86_BUILTIN_PMOVSXDQ256_MASK, IX86_BUILTIN_PMOVSXDQ128_MASK, IX86_BUILTIN_PMOVZXBW256_MASK, IX86_BUILTIN_PMOVZXBW128_MASK, IX86_BUILTIN_PMOVZXBD256_MASK, IX86_BUILTIN_PMOVZXBD128_MASK, IX86_BUILTIN_PMOVZXBQ256_MASK, IX86_BUILTIN_PMOVZXBQ128_MASK, IX86_BUILTIN_PMOVZXWD256_MASK, IX86_BUILTIN_PMOVZXWD128_MASK, IX86_BUILTIN_PMOVZXWQ256_MASK, IX86_BUILTIN_PMOVZXWQ128_MASK, IX86_BUILTIN_PMOVZXDQ256_MASK, IX86_BUILTIN_PMOVZXDQ128_MASK, IX86_BUILTIN_REDUCEPD256_MASK, IX86_BUILTIN_REDUCEPD128_MASK, IX86_BUILTIN_REDUCEPS256_MASK, IX86_BUILTIN_REDUCEPS128_MASK, IX86_BUILTIN_REDUCESD_MASK, IX86_BUILTIN_REDUCESS_MASK, IX86_BUILTIN_VPERMVARHI256_MASK, IX86_BUILTIN_VPERMVARHI128_MASK, IX86_BUILTIN_VPERMT2VARHI256, IX86_BUILTIN_VPERMT2VARHI256_MASKZ, IX86_BUILTIN_VPERMT2VARHI128, IX86_BUILTIN_VPERMT2VARHI128_MASKZ, IX86_BUILTIN_VPERMI2VARHI256, IX86_BUILTIN_VPERMI2VARHI128, IX86_BUILTIN_RCP14PD256, IX86_BUILTIN_RCP14PD128, IX86_BUILTIN_RCP14PS256, IX86_BUILTIN_RCP14PS128, IX86_BUILTIN_RSQRT14PD256_MASK, IX86_BUILTIN_RSQRT14PD128_MASK, IX86_BUILTIN_RSQRT14PS256_MASK, IX86_BUILTIN_RSQRT14PS128_MASK, IX86_BUILTIN_SQRTPD256_MASK, IX86_BUILTIN_SQRTPD128_MASK, IX86_BUILTIN_SQRTPS256_MASK, IX86_BUILTIN_SQRTPS128_MASK, IX86_BUILTIN_PADDB128_MASK, IX86_BUILTIN_PADDW128_MASK, IX86_BUILTIN_PADDD128_MASK, IX86_BUILTIN_PADDQ128_MASK, IX86_BUILTIN_PSUBB128_MASK, IX86_BUILTIN_PSUBW128_MASK, IX86_BUILTIN_PSUBD128_MASK, IX86_BUILTIN_PSUBQ128_MASK, IX86_BUILTIN_PADDSB128_MASK, IX86_BUILTIN_PADDSW128_MASK, IX86_BUILTIN_PSUBSB128_MASK, IX86_BUILTIN_PSUBSW128_MASK, IX86_BUILTIN_PADDUSB128_MASK, IX86_BUILTIN_PADDUSW128_MASK, IX86_BUILTIN_PSUBUSB128_MASK, IX86_BUILTIN_PSUBUSW128_MASK, IX86_BUILTIN_PADDB256_MASK, IX86_BUILTIN_PADDW256_MASK, IX86_BUILTIN_PADDD256_MASK, IX86_BUILTIN_PADDQ256_MASK, IX86_BUILTIN_PADDSB256_MASK, IX86_BUILTIN_PADDSW256_MASK, IX86_BUILTIN_PADDUSB256_MASK, IX86_BUILTIN_PADDUSW256_MASK, IX86_BUILTIN_PSUBB256_MASK, IX86_BUILTIN_PSUBW256_MASK, IX86_BUILTIN_PSUBD256_MASK, IX86_BUILTIN_PSUBQ256_MASK, IX86_BUILTIN_PSUBSB256_MASK, IX86_BUILTIN_PSUBSW256_MASK, IX86_BUILTIN_PSUBUSB256_MASK, IX86_BUILTIN_PSUBUSW256_MASK, IX86_BUILTIN_SHUF_F64x2_256, IX86_BUILTIN_SHUF_I64x2_256, IX86_BUILTIN_SHUF_I32x4_256, IX86_BUILTIN_SHUF_F32x4_256, IX86_BUILTIN_PMOVWB128, IX86_BUILTIN_PMOVWB256, IX86_BUILTIN_PMOVSWB128, IX86_BUILTIN_PMOVSWB256, IX86_BUILTIN_PMOVUSWB128, IX86_BUILTIN_PMOVUSWB256, IX86_BUILTIN_PMOVDB128, IX86_BUILTIN_PMOVDB256, IX86_BUILTIN_PMOVSDB128, IX86_BUILTIN_PMOVSDB256, IX86_BUILTIN_PMOVUSDB128, IX86_BUILTIN_PMOVUSDB256, IX86_BUILTIN_PMOVDW128, IX86_BUILTIN_PMOVDW256, IX86_BUILTIN_PMOVSDW128, IX86_BUILTIN_PMOVSDW256, IX86_BUILTIN_PMOVUSDW128, IX86_BUILTIN_PMOVUSDW256, IX86_BUILTIN_PMOVQB128, IX86_BUILTIN_PMOVQB256, IX86_BUILTIN_PMOVSQB128, IX86_BUILTIN_PMOVSQB256, IX86_BUILTIN_PMOVUSQB128, IX86_BUILTIN_PMOVUSQB256, IX86_BUILTIN_PMOVQW128, IX86_BUILTIN_PMOVQW256, IX86_BUILTIN_PMOVSQW128, IX86_BUILTIN_PMOVSQW256, IX86_BUILTIN_PMOVUSQW128, IX86_BUILTIN_PMOVUSQW256, IX86_BUILTIN_PMOVQD128, IX86_BUILTIN_PMOVQD256, IX86_BUILTIN_PMOVSQD128, IX86_BUILTIN_PMOVSQD256, IX86_BUILTIN_PMOVUSQD128, IX86_BUILTIN_PMOVUSQD256, IX86_BUILTIN_RANGEPD256, IX86_BUILTIN_RANGEPD128, IX86_BUILTIN_RANGEPS256, IX86_BUILTIN_RANGEPS128, IX86_BUILTIN_GETEXPPS256, IX86_BUILTIN_GETEXPPD256, IX86_BUILTIN_GETEXPPS128, IX86_BUILTIN_GETEXPPD128, IX86_BUILTIN_FIXUPIMMPD256_MASK, IX86_BUILTIN_FIXUPIMMPD256_MASKZ, IX86_BUILTIN_FIXUPIMMPS256_MASK, IX86_BUILTIN_FIXUPIMMPS256_MASKZ, IX86_BUILTIN_FIXUPIMMPD128_MASK, IX86_BUILTIN_FIXUPIMMPD128_MASKZ, IX86_BUILTIN_FIXUPIMMPS128_MASK, IX86_BUILTIN_FIXUPIMMPS128_MASKZ, IX86_BUILTIN_PABSQ256, IX86_BUILTIN_PABSQ128, IX86_BUILTIN_PABSD256_MASK, IX86_BUILTIN_PABSD128_MASK, IX86_BUILTIN_PMULHRSW256_MASK, IX86_BUILTIN_PMULHRSW128_MASK, IX86_BUILTIN_PMULHUW128_MASK, IX86_BUILTIN_PMULHUW256_MASK, IX86_BUILTIN_PMULHW256_MASK, IX86_BUILTIN_PMULHW128_MASK, IX86_BUILTIN_PMULLW256_MASK, IX86_BUILTIN_PMULLW128_MASK, IX86_BUILTIN_PMULLQ256, IX86_BUILTIN_PMULLQ128, IX86_BUILTIN_ANDPD256_MASK, IX86_BUILTIN_ANDPD128_MASK, IX86_BUILTIN_ANDPS256_MASK, IX86_BUILTIN_ANDPS128_MASK, IX86_BUILTIN_ANDNPD256_MASK, IX86_BUILTIN_ANDNPD128_MASK, IX86_BUILTIN_ANDNPS256_MASK, IX86_BUILTIN_ANDNPS128_MASK, IX86_BUILTIN_PSLLWI128_MASK, IX86_BUILTIN_PSLLDI128_MASK, IX86_BUILTIN_PSLLQI128_MASK, IX86_BUILTIN_PSLLW128_MASK, IX86_BUILTIN_PSLLD128_MASK, IX86_BUILTIN_PSLLQ128_MASK, IX86_BUILTIN_PSLLWI256_MASK , IX86_BUILTIN_PSLLW256_MASK, IX86_BUILTIN_PSLLDI256_MASK, IX86_BUILTIN_PSLLD256_MASK, IX86_BUILTIN_PSLLQI256_MASK, IX86_BUILTIN_PSLLQ256_MASK, IX86_BUILTIN_PSRADI128_MASK, IX86_BUILTIN_PSRAD128_MASK, IX86_BUILTIN_PSRADI256_MASK, IX86_BUILTIN_PSRAD256_MASK, IX86_BUILTIN_PSRAQI128_MASK, IX86_BUILTIN_PSRAQ128_MASK, IX86_BUILTIN_PSRAQI256_MASK, IX86_BUILTIN_PSRAQ256_MASK, IX86_BUILTIN_PANDD256, IX86_BUILTIN_PANDD128, IX86_BUILTIN_PSRLDI128_MASK, IX86_BUILTIN_PSRLD128_MASK, IX86_BUILTIN_PSRLDI256_MASK, IX86_BUILTIN_PSRLD256_MASK, IX86_BUILTIN_PSRLQI128_MASK, IX86_BUILTIN_PSRLQ128_MASK, IX86_BUILTIN_PSRLQI256_MASK, IX86_BUILTIN_PSRLQ256_MASK, IX86_BUILTIN_PANDQ256, IX86_BUILTIN_PANDQ128, IX86_BUILTIN_PANDND256, IX86_BUILTIN_PANDND128, IX86_BUILTIN_PANDNQ256, IX86_BUILTIN_PANDNQ128, IX86_BUILTIN_PORD256, IX86_BUILTIN_PORD128, IX86_BUILTIN_PORQ256, IX86_BUILTIN_PORQ128, IX86_BUILTIN_PXORD256, IX86_BUILTIN_PXORD128, IX86_BUILTIN_PXORQ256, IX86_BUILTIN_PXORQ128, IX86_BUILTIN_PACKSSWB256_MASK, IX86_BUILTIN_PACKSSWB128_MASK, IX86_BUILTIN_PACKUSWB256_MASK, IX86_BUILTIN_PACKUSWB128_MASK, IX86_BUILTIN_RNDSCALEPS256, IX86_BUILTIN_RNDSCALEPD256, IX86_BUILTIN_RNDSCALEPS128, IX86_BUILTIN_RNDSCALEPD128, IX86_BUILTIN_VTERNLOGQ256_MASK, IX86_BUILTIN_VTERNLOGQ256_MASKZ, IX86_BUILTIN_VTERNLOGD256_MASK, IX86_BUILTIN_VTERNLOGD256_MASKZ, IX86_BUILTIN_VTERNLOGQ128_MASK, IX86_BUILTIN_VTERNLOGQ128_MASKZ, IX86_BUILTIN_VTERNLOGD128_MASK, IX86_BUILTIN_VTERNLOGD128_MASKZ, IX86_BUILTIN_SCALEFPD256, IX86_BUILTIN_SCALEFPS256, IX86_BUILTIN_SCALEFPD128, IX86_BUILTIN_SCALEFPS128, IX86_BUILTIN_VFMADDPD256_MASK, IX86_BUILTIN_VFMADDPD256_MASK3, IX86_BUILTIN_VFMADDPD256_MASKZ, IX86_BUILTIN_VFMADDPD128_MASK, IX86_BUILTIN_VFMADDPD128_MASK3, IX86_BUILTIN_VFMADDPD128_MASKZ, IX86_BUILTIN_VFMADDPS256_MASK, IX86_BUILTIN_VFMADDPS256_MASK3, IX86_BUILTIN_VFMADDPS256_MASKZ, IX86_BUILTIN_VFMADDPS128_MASK, IX86_BUILTIN_VFMADDPS128_MASK3, IX86_BUILTIN_VFMADDPS128_MASKZ, IX86_BUILTIN_VFMSUBPD256_MASK3, IX86_BUILTIN_VFMSUBPD128_MASK3, IX86_BUILTIN_VFMSUBPS256_MASK3, IX86_BUILTIN_VFMSUBPS128_MASK3, IX86_BUILTIN_VFNMADDPD256_MASK, IX86_BUILTIN_VFNMADDPD128_MASK, IX86_BUILTIN_VFNMADDPS256_MASK, IX86_BUILTIN_VFNMADDPS128_MASK, IX86_BUILTIN_VFNMSUBPD256_MASK, IX86_BUILTIN_VFNMSUBPD256_MASK3, IX86_BUILTIN_VFNMSUBPD128_MASK, IX86_BUILTIN_VFNMSUBPD128_MASK3, IX86_BUILTIN_VFNMSUBPS256_MASK, IX86_BUILTIN_VFNMSUBPS256_MASK3, IX86_BUILTIN_VFNMSUBPS128_MASK, IX86_BUILTIN_VFNMSUBPS128_MASK3, IX86_BUILTIN_VFMADDSUBPD256_MASK, IX86_BUILTIN_VFMADDSUBPD256_MASK3, IX86_BUILTIN_VFMADDSUBPD256_MASKZ, IX86_BUILTIN_VFMADDSUBPD128_MASK, IX86_BUILTIN_VFMADDSUBPD128_MASK3, IX86_BUILTIN_VFMADDSUBPD128_MASKZ, IX86_BUILTIN_VFMADDSUBPS256_MASK, IX86_BUILTIN_VFMADDSUBPS256_MASK3, IX86_BUILTIN_VFMADDSUBPS256_MASKZ, IX86_BUILTIN_VFMADDSUBPS128_MASK, IX86_BUILTIN_VFMADDSUBPS128_MASK3, IX86_BUILTIN_VFMADDSUBPS128_MASKZ, IX86_BUILTIN_VFMSUBADDPD256_MASK3, IX86_BUILTIN_VFMSUBADDPD128_MASK3, IX86_BUILTIN_VFMSUBADDPS256_MASK3, IX86_BUILTIN_VFMSUBADDPS128_MASK3, IX86_BUILTIN_INSERTF64X2_256, IX86_BUILTIN_INSERTI64X2_256, IX86_BUILTIN_PSRAVV16HI, IX86_BUILTIN_PSRAVV8HI, IX86_BUILTIN_PMADDUBSW256_MASK, IX86_BUILTIN_PMADDUBSW128_MASK, IX86_BUILTIN_PMADDWD256_MASK, IX86_BUILTIN_PMADDWD128_MASK, IX86_BUILTIN_PSRLVV16HI, IX86_BUILTIN_PSRLVV8HI, IX86_BUILTIN_CVTPS2DQ256_MASK, IX86_BUILTIN_CVTPS2DQ128_MASK, IX86_BUILTIN_CVTPS2UDQ256, IX86_BUILTIN_CVTPS2UDQ128, IX86_BUILTIN_CVTPS2QQ256, IX86_BUILTIN_CVTPS2QQ128, IX86_BUILTIN_CVTPS2UQQ256, IX86_BUILTIN_CVTPS2UQQ128, IX86_BUILTIN_GETMANTPS256, IX86_BUILTIN_GETMANTPS128, IX86_BUILTIN_GETMANTPD256, IX86_BUILTIN_GETMANTPD128, IX86_BUILTIN_MOVDDUP256_MASK, IX86_BUILTIN_MOVDDUP128_MASK, IX86_BUILTIN_MOVSHDUP256_MASK, IX86_BUILTIN_MOVSHDUP128_MASK, IX86_BUILTIN_MOVSLDUP256_MASK, IX86_BUILTIN_MOVSLDUP128_MASK, IX86_BUILTIN_CVTQQ2PS256, IX86_BUILTIN_CVTQQ2PS128, IX86_BUILTIN_CVTUQQ2PS256, IX86_BUILTIN_CVTUQQ2PS128, IX86_BUILTIN_CVTQQ2PD256, IX86_BUILTIN_CVTQQ2PD128, IX86_BUILTIN_CVTUQQ2PD256, IX86_BUILTIN_CVTUQQ2PD128, IX86_BUILTIN_VPERMT2VARQ256, IX86_BUILTIN_VPERMT2VARQ256_MASKZ, IX86_BUILTIN_VPERMT2VARD256, IX86_BUILTIN_VPERMT2VARD256_MASKZ, IX86_BUILTIN_VPERMI2VARQ256, IX86_BUILTIN_VPERMI2VARD256, IX86_BUILTIN_VPERMT2VARPD256, IX86_BUILTIN_VPERMT2VARPD256_MASKZ, IX86_BUILTIN_VPERMT2VARPS256, IX86_BUILTIN_VPERMT2VARPS256_MASKZ, IX86_BUILTIN_VPERMI2VARPD256, IX86_BUILTIN_VPERMI2VARPS256, IX86_BUILTIN_VPERMT2VARQ128, IX86_BUILTIN_VPERMT2VARQ128_MASKZ, IX86_BUILTIN_VPERMT2VARD128, IX86_BUILTIN_VPERMT2VARD128_MASKZ, IX86_BUILTIN_VPERMI2VARQ128, IX86_BUILTIN_VPERMI2VARD128, IX86_BUILTIN_VPERMT2VARPD128, IX86_BUILTIN_VPERMT2VARPD128_MASKZ, IX86_BUILTIN_VPERMT2VARPS128, IX86_BUILTIN_VPERMT2VARPS128_MASKZ, IX86_BUILTIN_VPERMI2VARPD128, IX86_BUILTIN_VPERMI2VARPS128, IX86_BUILTIN_PSHUFB256_MASK, IX86_BUILTIN_PSHUFB128_MASK, IX86_BUILTIN_PSHUFHW256_MASK, IX86_BUILTIN_PSHUFHW128_MASK, IX86_BUILTIN_PSHUFLW256_MASK, IX86_BUILTIN_PSHUFLW128_MASK, IX86_BUILTIN_PSHUFD256_MASK, IX86_BUILTIN_PSHUFD128_MASK, IX86_BUILTIN_SHUFPD256_MASK, IX86_BUILTIN_SHUFPD128_MASK, IX86_BUILTIN_SHUFPS256_MASK, IX86_BUILTIN_SHUFPS128_MASK, IX86_BUILTIN_PROLVQ256, IX86_BUILTIN_PROLVQ128, IX86_BUILTIN_PROLQ256, IX86_BUILTIN_PROLQ128, IX86_BUILTIN_PRORVQ256, IX86_BUILTIN_PRORVQ128, IX86_BUILTIN_PRORQ256, IX86_BUILTIN_PRORQ128, IX86_BUILTIN_PSRAVQ128, IX86_BUILTIN_PSRAVQ256, IX86_BUILTIN_PSLLVV4DI_MASK, IX86_BUILTIN_PSLLVV2DI_MASK, IX86_BUILTIN_PSLLVV8SI_MASK, IX86_BUILTIN_PSLLVV4SI_MASK, IX86_BUILTIN_PSRAVV8SI_MASK, IX86_BUILTIN_PSRAVV4SI_MASK, IX86_BUILTIN_PSRLVV4DI_MASK, IX86_BUILTIN_PSRLVV2DI_MASK, IX86_BUILTIN_PSRLVV8SI_MASK, IX86_BUILTIN_PSRLVV4SI_MASK, IX86_BUILTIN_PSRAWI256_MASK, IX86_BUILTIN_PSRAW256_MASK, IX86_BUILTIN_PSRAWI128_MASK, IX86_BUILTIN_PSRAW128_MASK, IX86_BUILTIN_PSRLWI256_MASK, IX86_BUILTIN_PSRLW256_MASK, IX86_BUILTIN_PSRLWI128_MASK, IX86_BUILTIN_PSRLW128_MASK, IX86_BUILTIN_PRORVD256, IX86_BUILTIN_PROLVD256, IX86_BUILTIN_PRORD256, IX86_BUILTIN_PROLD256, IX86_BUILTIN_PRORVD128, IX86_BUILTIN_PROLVD128, IX86_BUILTIN_PRORD128, IX86_BUILTIN_PROLD128, IX86_BUILTIN_FPCLASSPD256, IX86_BUILTIN_FPCLASSPD128, IX86_BUILTIN_FPCLASSSD, IX86_BUILTIN_FPCLASSPS256, IX86_BUILTIN_FPCLASSPS128, IX86_BUILTIN_FPCLASSSS, IX86_BUILTIN_CVTB2MASK128, IX86_BUILTIN_CVTB2MASK256, IX86_BUILTIN_CVTW2MASK128, IX86_BUILTIN_CVTW2MASK256, IX86_BUILTIN_CVTD2MASK128, IX86_BUILTIN_CVTD2MASK256, IX86_BUILTIN_CVTQ2MASK128, IX86_BUILTIN_CVTQ2MASK256, IX86_BUILTIN_CVTMASK2B128, IX86_BUILTIN_CVTMASK2B256, IX86_BUILTIN_CVTMASK2W128, IX86_BUILTIN_CVTMASK2W256, IX86_BUILTIN_CVTMASK2D128, IX86_BUILTIN_CVTMASK2D256, IX86_BUILTIN_CVTMASK2Q128, IX86_BUILTIN_CVTMASK2Q256, IX86_BUILTIN_PCMPEQB128_MASK, IX86_BUILTIN_PCMPEQB256_MASK, IX86_BUILTIN_PCMPEQW128_MASK, IX86_BUILTIN_PCMPEQW256_MASK, IX86_BUILTIN_PCMPEQD128_MASK, IX86_BUILTIN_PCMPEQD256_MASK, IX86_BUILTIN_PCMPEQQ128_MASK, IX86_BUILTIN_PCMPEQQ256_MASK, IX86_BUILTIN_PCMPGTB128_MASK, IX86_BUILTIN_PCMPGTB256_MASK, IX86_BUILTIN_PCMPGTW128_MASK, IX86_BUILTIN_PCMPGTW256_MASK, IX86_BUILTIN_PCMPGTD128_MASK, IX86_BUILTIN_PCMPGTD256_MASK, IX86_BUILTIN_PCMPGTQ128_MASK, IX86_BUILTIN_PCMPGTQ256_MASK, IX86_BUILTIN_PTESTMB128, IX86_BUILTIN_PTESTMB256, IX86_BUILTIN_PTESTMW128, IX86_BUILTIN_PTESTMW256, IX86_BUILTIN_PTESTMD128, IX86_BUILTIN_PTESTMD256, IX86_BUILTIN_PTESTMQ128, IX86_BUILTIN_PTESTMQ256, IX86_BUILTIN_PTESTNMB128, IX86_BUILTIN_PTESTNMB256, IX86_BUILTIN_PTESTNMW128, IX86_BUILTIN_PTESTNMW256, IX86_BUILTIN_PTESTNMD128, IX86_BUILTIN_PTESTNMD256, IX86_BUILTIN_PTESTNMQ128, IX86_BUILTIN_PTESTNMQ256, IX86_BUILTIN_PBROADCASTMB128, IX86_BUILTIN_PBROADCASTMB256, IX86_BUILTIN_PBROADCASTMW128, IX86_BUILTIN_PBROADCASTMW256, IX86_BUILTIN_COMPRESSPD256, IX86_BUILTIN_COMPRESSPD128, IX86_BUILTIN_COMPRESSPS256, IX86_BUILTIN_COMPRESSPS128, IX86_BUILTIN_PCOMPRESSQ256, IX86_BUILTIN_PCOMPRESSQ128, IX86_BUILTIN_PCOMPRESSD256, IX86_BUILTIN_PCOMPRESSD128, IX86_BUILTIN_EXPANDPD256, IX86_BUILTIN_EXPANDPD128, IX86_BUILTIN_EXPANDPS256, IX86_BUILTIN_EXPANDPS128, IX86_BUILTIN_PEXPANDQ256, IX86_BUILTIN_PEXPANDQ128, IX86_BUILTIN_PEXPANDD256, IX86_BUILTIN_PEXPANDD128, IX86_BUILTIN_EXPANDPD256Z, IX86_BUILTIN_EXPANDPD128Z, IX86_BUILTIN_EXPANDPS256Z, IX86_BUILTIN_EXPANDPS128Z, IX86_BUILTIN_PEXPANDQ256Z, IX86_BUILTIN_PEXPANDQ128Z, IX86_BUILTIN_PEXPANDD256Z, IX86_BUILTIN_PEXPANDD128Z, IX86_BUILTIN_PMAXSD256_MASK, IX86_BUILTIN_PMINSD256_MASK, IX86_BUILTIN_PMAXUD256_MASK, IX86_BUILTIN_PMINUD256_MASK, IX86_BUILTIN_PMAXSD128_MASK, IX86_BUILTIN_PMINSD128_MASK, IX86_BUILTIN_PMAXUD128_MASK, IX86_BUILTIN_PMINUD128_MASK, IX86_BUILTIN_PMAXSQ256_MASK, IX86_BUILTIN_PMINSQ256_MASK, IX86_BUILTIN_PMAXUQ256_MASK, IX86_BUILTIN_PMINUQ256_MASK, IX86_BUILTIN_PMAXSQ128_MASK, IX86_BUILTIN_PMINSQ128_MASK, IX86_BUILTIN_PMAXUQ128_MASK, IX86_BUILTIN_PMINUQ128_MASK, IX86_BUILTIN_PMINSB256_MASK, IX86_BUILTIN_PMINUB256_MASK, IX86_BUILTIN_PMAXSB256_MASK, IX86_BUILTIN_PMAXUB256_MASK, IX86_BUILTIN_PMINSB128_MASK, IX86_BUILTIN_PMINUB128_MASK, IX86_BUILTIN_PMAXSB128_MASK, IX86_BUILTIN_PMAXUB128_MASK, IX86_BUILTIN_PMINSW256_MASK, IX86_BUILTIN_PMINUW256_MASK, IX86_BUILTIN_PMAXSW256_MASK, IX86_BUILTIN_PMAXUW256_MASK, IX86_BUILTIN_PMINSW128_MASK, IX86_BUILTIN_PMINUW128_MASK, IX86_BUILTIN_PMAXSW128_MASK, IX86_BUILTIN_PMAXUW128_MASK, IX86_BUILTIN_VPCONFLICTQ256, IX86_BUILTIN_VPCONFLICTD256, IX86_BUILTIN_VPCLZCNTQ256, IX86_BUILTIN_VPCLZCNTD256, IX86_BUILTIN_UNPCKHPD256_MASK, IX86_BUILTIN_UNPCKHPD128_MASK, IX86_BUILTIN_UNPCKHPS256_MASK, IX86_BUILTIN_UNPCKHPS128_MASK, IX86_BUILTIN_UNPCKLPD256_MASK, IX86_BUILTIN_UNPCKLPD128_MASK, IX86_BUILTIN_UNPCKLPS256_MASK, IX86_BUILTIN_VPCONFLICTQ128, IX86_BUILTIN_VPCONFLICTD128, IX86_BUILTIN_VPCLZCNTQ128, IX86_BUILTIN_VPCLZCNTD128, IX86_BUILTIN_UNPCKLPS128_MASK, IX86_BUILTIN_ALIGND256, IX86_BUILTIN_ALIGNQ256, IX86_BUILTIN_ALIGND128, IX86_BUILTIN_ALIGNQ128, IX86_BUILTIN_CVTPS2PH256_MASK, IX86_BUILTIN_CVTPS2PH_MASK, IX86_BUILTIN_CVTPH2PS_MASK, IX86_BUILTIN_CVTPH2PS256_MASK, IX86_BUILTIN_PUNPCKHDQ128_MASK, IX86_BUILTIN_PUNPCKHDQ256_MASK, IX86_BUILTIN_PUNPCKHQDQ128_MASK, IX86_BUILTIN_PUNPCKHQDQ256_MASK, IX86_BUILTIN_PUNPCKLDQ128_MASK, IX86_BUILTIN_PUNPCKLDQ256_MASK, IX86_BUILTIN_PUNPCKLQDQ128_MASK, IX86_BUILTIN_PUNPCKLQDQ256_MASK, IX86_BUILTIN_PUNPCKHBW128_MASK, IX86_BUILTIN_PUNPCKHBW256_MASK, IX86_BUILTIN_PUNPCKHWD128_MASK, IX86_BUILTIN_PUNPCKHWD256_MASK, IX86_BUILTIN_PUNPCKLBW128_MASK, IX86_BUILTIN_PUNPCKLBW256_MASK, IX86_BUILTIN_PUNPCKLWD128_MASK, IX86_BUILTIN_PUNPCKLWD256_MASK, IX86_BUILTIN_PSLLVV16HI, IX86_BUILTIN_PSLLVV8HI, IX86_BUILTIN_PACKSSDW256_MASK, IX86_BUILTIN_PACKSSDW128_MASK, IX86_BUILTIN_PACKUSDW256_MASK, IX86_BUILTIN_PACKUSDW128_MASK, IX86_BUILTIN_PAVGB256_MASK, IX86_BUILTIN_PAVGW256_MASK, IX86_BUILTIN_PAVGB128_MASK, IX86_BUILTIN_PAVGW128_MASK, IX86_BUILTIN_VPERMVARSF256_MASK, IX86_BUILTIN_VPERMVARDF256_MASK, IX86_BUILTIN_VPERMDF256_MASK, IX86_BUILTIN_PABSB256_MASK, IX86_BUILTIN_PABSB128_MASK, IX86_BUILTIN_PABSW256_MASK, IX86_BUILTIN_PABSW128_MASK, IX86_BUILTIN_VPERMILVARPD_MASK, IX86_BUILTIN_VPERMILVARPS_MASK, IX86_BUILTIN_VPERMILVARPD256_MASK, IX86_BUILTIN_VPERMILVARPS256_MASK, IX86_BUILTIN_VPERMILPD_MASK, IX86_BUILTIN_VPERMILPS_MASK, IX86_BUILTIN_VPERMILPD256_MASK, IX86_BUILTIN_VPERMILPS256_MASK, IX86_BUILTIN_BLENDMQ256, IX86_BUILTIN_BLENDMD256, IX86_BUILTIN_BLENDMPD256, IX86_BUILTIN_BLENDMPS256, IX86_BUILTIN_BLENDMQ128, IX86_BUILTIN_BLENDMD128, IX86_BUILTIN_BLENDMPD128, IX86_BUILTIN_BLENDMPS128, IX86_BUILTIN_BLENDMW256, IX86_BUILTIN_BLENDMB256, IX86_BUILTIN_BLENDMW128, IX86_BUILTIN_BLENDMB128, IX86_BUILTIN_PMULLD256_MASK, IX86_BUILTIN_PMULLD128_MASK, IX86_BUILTIN_PMULUDQ256_MASK, IX86_BUILTIN_PMULDQ256_MASK, IX86_BUILTIN_PMULDQ128_MASK, IX86_BUILTIN_PMULUDQ128_MASK, IX86_BUILTIN_CVTPD2PS256_MASK, IX86_BUILTIN_CVTPD2PS_MASK, IX86_BUILTIN_VPERMVARSI256_MASK, IX86_BUILTIN_VPERMVARDI256_MASK, IX86_BUILTIN_VPERMDI256_MASK, IX86_BUILTIN_CMPQ256, IX86_BUILTIN_CMPD256, IX86_BUILTIN_UCMPQ256, IX86_BUILTIN_UCMPD256, IX86_BUILTIN_CMPB256, IX86_BUILTIN_CMPW256, IX86_BUILTIN_UCMPB256, IX86_BUILTIN_UCMPW256, IX86_BUILTIN_CMPPD256_MASK, IX86_BUILTIN_CMPPS256_MASK, IX86_BUILTIN_CMPQ128, IX86_BUILTIN_CMPD128, IX86_BUILTIN_UCMPQ128, IX86_BUILTIN_UCMPD128, IX86_BUILTIN_CMPB128, IX86_BUILTIN_CMPW128, IX86_BUILTIN_UCMPB128, IX86_BUILTIN_UCMPW128, IX86_BUILTIN_CMPPD128_MASK, IX86_BUILTIN_CMPPS128_MASK, IX86_BUILTIN_GATHER3SIV8SF, IX86_BUILTIN_GATHER3SIV4SF, IX86_BUILTIN_GATHER3SIV4DF, IX86_BUILTIN_GATHER3SIV2DF, IX86_BUILTIN_GATHER3DIV8SF, IX86_BUILTIN_GATHER3DIV4SF, IX86_BUILTIN_GATHER3DIV4DF, IX86_BUILTIN_GATHER3DIV2DF, IX86_BUILTIN_GATHER3SIV8SI, IX86_BUILTIN_GATHER3SIV4SI, IX86_BUILTIN_GATHER3SIV4DI, IX86_BUILTIN_GATHER3SIV2DI, IX86_BUILTIN_GATHER3DIV8SI, IX86_BUILTIN_GATHER3DIV4SI, IX86_BUILTIN_GATHER3DIV4DI, IX86_BUILTIN_GATHER3DIV2DI, IX86_BUILTIN_SCATTERSIV8SF, IX86_BUILTIN_SCATTERSIV4SF, IX86_BUILTIN_SCATTERSIV4DF, IX86_BUILTIN_SCATTERSIV2DF, IX86_BUILTIN_SCATTERDIV8SF, IX86_BUILTIN_SCATTERDIV4SF, IX86_BUILTIN_SCATTERDIV4DF, IX86_BUILTIN_SCATTERDIV2DF, IX86_BUILTIN_SCATTERSIV8SI, IX86_BUILTIN_SCATTERSIV4SI, IX86_BUILTIN_SCATTERSIV4DI, IX86_BUILTIN_SCATTERSIV2DI, IX86_BUILTIN_SCATTERDIV8SI, IX86_BUILTIN_SCATTERDIV4SI, IX86_BUILTIN_SCATTERDIV4DI, IX86_BUILTIN_SCATTERDIV2DI, IX86_BUILTIN_RANGESD128, IX86_BUILTIN_RANGESS128, IX86_BUILTIN_KUNPCKWD, IX86_BUILTIN_KUNPCKDQ, IX86_BUILTIN_BROADCASTF32x2_512, IX86_BUILTIN_BROADCASTI32x2_512, IX86_BUILTIN_BROADCASTF64X2_512, IX86_BUILTIN_BROADCASTI64X2_512, IX86_BUILTIN_BROADCASTF32X8_512, IX86_BUILTIN_BROADCASTI32X8_512, IX86_BUILTIN_EXTRACTF64X2_512, IX86_BUILTIN_EXTRACTF32X8, IX86_BUILTIN_EXTRACTI64X2_512, IX86_BUILTIN_EXTRACTI32X8, IX86_BUILTIN_REDUCEPD512_MASK, IX86_BUILTIN_REDUCEPS512_MASK, IX86_BUILTIN_PMULLQ512, IX86_BUILTIN_XORPD512, IX86_BUILTIN_XORPS512, IX86_BUILTIN_ORPD512, IX86_BUILTIN_ORPS512, IX86_BUILTIN_ANDPD512, IX86_BUILTIN_ANDPS512, IX86_BUILTIN_ANDNPD512, IX86_BUILTIN_ANDNPS512, IX86_BUILTIN_INSERTF32X8, IX86_BUILTIN_INSERTI32X8, IX86_BUILTIN_INSERTF64X2_512, IX86_BUILTIN_INSERTI64X2_512, IX86_BUILTIN_FPCLASSPD512, IX86_BUILTIN_FPCLASSPS512, IX86_BUILTIN_CVTD2MASK512, IX86_BUILTIN_CVTQ2MASK512, IX86_BUILTIN_CVTMASK2D512, IX86_BUILTIN_CVTMASK2Q512, IX86_BUILTIN_CVTPD2QQ512, IX86_BUILTIN_CVTPS2QQ512, IX86_BUILTIN_CVTPD2UQQ512, IX86_BUILTIN_CVTPS2UQQ512, IX86_BUILTIN_CVTQQ2PS512, IX86_BUILTIN_CVTUQQ2PS512, IX86_BUILTIN_CVTQQ2PD512, IX86_BUILTIN_CVTUQQ2PD512, IX86_BUILTIN_CVTTPS2QQ512, IX86_BUILTIN_CVTTPS2UQQ512, IX86_BUILTIN_CVTTPD2QQ512, IX86_BUILTIN_CVTTPD2UQQ512, IX86_BUILTIN_RANGEPS512, IX86_BUILTIN_RANGEPD512, IX86_BUILTIN_PACKUSDW512, IX86_BUILTIN_PACKSSDW512, IX86_BUILTIN_LOADDQUHI512_MASK, IX86_BUILTIN_LOADDQUQI512_MASK, IX86_BUILTIN_PSLLDQ512, IX86_BUILTIN_PSRLDQ512, IX86_BUILTIN_STOREDQUHI512_MASK, IX86_BUILTIN_STOREDQUQI512_MASK, IX86_BUILTIN_PALIGNR512, IX86_BUILTIN_PALIGNR512_MASK, IX86_BUILTIN_MOVDQUHI512_MASK, IX86_BUILTIN_MOVDQUQI512_MASK, IX86_BUILTIN_PSADBW512, IX86_BUILTIN_DBPSADBW512, IX86_BUILTIN_PBROADCASTB512, IX86_BUILTIN_PBROADCASTB512_GPR, IX86_BUILTIN_PBROADCASTW512, IX86_BUILTIN_PBROADCASTW512_GPR, IX86_BUILTIN_PMOVSXBW512_MASK, IX86_BUILTIN_PMOVZXBW512_MASK, IX86_BUILTIN_VPERMVARHI512_MASK, IX86_BUILTIN_VPERMT2VARHI512, IX86_BUILTIN_VPERMT2VARHI512_MASKZ, IX86_BUILTIN_VPERMI2VARHI512, IX86_BUILTIN_PAVGB512, IX86_BUILTIN_PAVGW512, IX86_BUILTIN_PADDB512, IX86_BUILTIN_PSUBB512, IX86_BUILTIN_PSUBSB512, IX86_BUILTIN_PADDSB512, IX86_BUILTIN_PSUBUSB512, IX86_BUILTIN_PADDUSB512, IX86_BUILTIN_PSUBW512, IX86_BUILTIN_PADDW512, IX86_BUILTIN_PSUBSW512, IX86_BUILTIN_PADDSW512, IX86_BUILTIN_PSUBUSW512, IX86_BUILTIN_PADDUSW512, IX86_BUILTIN_PMAXUW512, IX86_BUILTIN_PMAXSW512, IX86_BUILTIN_PMINUW512, IX86_BUILTIN_PMINSW512, IX86_BUILTIN_PMAXUB512, IX86_BUILTIN_PMAXSB512, IX86_BUILTIN_PMINUB512, IX86_BUILTIN_PMINSB512, IX86_BUILTIN_PMOVWB512, IX86_BUILTIN_PMOVSWB512, IX86_BUILTIN_PMOVUSWB512, IX86_BUILTIN_PMULHRSW512_MASK, IX86_BUILTIN_PMULHUW512_MASK, IX86_BUILTIN_PMULHW512_MASK, IX86_BUILTIN_PMULLW512_MASK, IX86_BUILTIN_PSLLWI512_MASK, IX86_BUILTIN_PSLLW512_MASK, IX86_BUILTIN_PACKSSWB512, IX86_BUILTIN_PACKUSWB512, IX86_BUILTIN_PSRAVV32HI, IX86_BUILTIN_PMADDUBSW512_MASK, IX86_BUILTIN_PMADDWD512_MASK, IX86_BUILTIN_PSRLVV32HI, IX86_BUILTIN_PUNPCKHBW512, IX86_BUILTIN_PUNPCKHWD512, IX86_BUILTIN_PUNPCKLBW512, IX86_BUILTIN_PUNPCKLWD512, IX86_BUILTIN_PSHUFB512, IX86_BUILTIN_PSHUFHW512, IX86_BUILTIN_PSHUFLW512, IX86_BUILTIN_PSRAWI512, IX86_BUILTIN_PSRAW512, IX86_BUILTIN_PSRLWI512, IX86_BUILTIN_PSRLW512, IX86_BUILTIN_CVTB2MASK512, IX86_BUILTIN_CVTW2MASK512, IX86_BUILTIN_CVTMASK2B512, IX86_BUILTIN_CVTMASK2W512, IX86_BUILTIN_PCMPEQB512_MASK, IX86_BUILTIN_PCMPEQW512_MASK, IX86_BUILTIN_PCMPGTB512_MASK, IX86_BUILTIN_PCMPGTW512_MASK, IX86_BUILTIN_PTESTMB512, IX86_BUILTIN_PTESTMW512, IX86_BUILTIN_PTESTNMB512, IX86_BUILTIN_PTESTNMW512, IX86_BUILTIN_PSLLVV32HI, IX86_BUILTIN_PABSB512, IX86_BUILTIN_PABSW512, IX86_BUILTIN_BLENDMW512, IX86_BUILTIN_BLENDMB512, IX86_BUILTIN_CMPB512, IX86_BUILTIN_CMPW512, IX86_BUILTIN_UCMPB512, IX86_BUILTIN_UCMPW512. (bdesc_special_args): Add __builtin_ia32_loaddquhi512_mask, __builtin_ia32_loaddquqi512_mask, __builtin_ia32_storedquhi512_mask, __builtin_ia32_storedquqi512_mask, __builtin_ia32_loaddquhi256_mask, __builtin_ia32_loaddquhi128_mask, __builtin_ia32_loaddquqi256_mask, __builtin_ia32_loaddquqi128_mask, __builtin_ia32_movdqa64load256_mask, __builtin_ia32_movdqa64load128_mask, __builtin_ia32_movdqa32load256_mask, __builtin_ia32_movdqa32load128_mask, __builtin_ia32_movdqa64store256_mask, __builtin_ia32_movdqa64store128_mask, __builtin_ia32_movdqa32store256_mask, __builtin_ia32_movdqa32store128_mask, __builtin_ia32_loadapd256_mask, __builtin_ia32_loadapd128_mask, __builtin_ia32_loadaps256_mask, __builtin_ia32_loadaps128_mask, __builtin_ia32_storeapd256_mask, __builtin_ia32_storeapd128_mask, __builtin_ia32_storeaps256_mask, __builtin_ia32_storeaps128_mask, __builtin_ia32_loadupd256_mask, __builtin_ia32_loadupd128_mask, __builtin_ia32_loadups256_mask, __builtin_ia32_loadups128_mask, __builtin_ia32_storeupd256_mask, __builtin_ia32_storeupd128_mask, __builtin_ia32_storeups256_mask, __builtin_ia32_storeups128_mask, __builtin_ia32_loaddqudi256_mask, __builtin_ia32_loaddqudi128_mask, __builtin_ia32_loaddqusi256_mask, __builtin_ia32_loaddqusi128_mask, __builtin_ia32_storedqudi256_mask, __builtin_ia32_storedqudi128_mask, __builtin_ia32_storedqusi256_mask, __builtin_ia32_storedqusi128_mask, __builtin_ia32_storedquhi256_mask, __builtin_ia32_storedquhi128_mask, __builtin_ia32_storedquqi256_mask, __builtin_ia32_storedquqi128_mask, __builtin_ia32_compressstoredf256_mask, __builtin_ia32_compressstoredf128_mask, __builtin_ia32_compressstoresf256_mask, __builtin_ia32_compressstoresf128_mask, __builtin_ia32_compressstoredi256_mask, __builtin_ia32_compressstoredi128_mask, __builtin_ia32_compressstoresi256_mask, __builtin_ia32_compressstoresi128_mask, __builtin_ia32_expandloaddf256_mask, __builtin_ia32_expandloaddf128_mask, __builtin_ia32_expandloadsf256_mask, __builtin_ia32_expandloadsf128_mask, __builtin_ia32_expandloaddi256_mask, __builtin_ia32_expandloaddi128_mask, __builtin_ia32_expandloadsi256_mask, __builtin_ia32_expandloadsi128_mask, __builtin_ia32_expandloaddf256_maskz, __builtin_ia32_expandloaddf128_maskz, __builtin_ia32_expandloadsf256_maskz, __builtin_ia32_expandloadsf128_maskz, __builtin_ia32_expandloaddi256_maskz, __builtin_ia32_expandloaddi128_maskz, __builtin_ia32_expandloadsi256_maskz, __builtin_ia32_expandloadsi128_maskz, __builtin_ia32_pmovqd256mem_mask, __builtin_ia32_pmovqd128mem_mask, __builtin_ia32_pmovsqd256mem_mask, __builtin_ia32_pmovsqd128mem_mask, __builtin_ia32_pmovusqd256mem_mask, __builtin_ia32_pmovusqd128mem_mask, __builtin_ia32_pmovqw256mem_mask, __builtin_ia32_pmovqw128mem_mask, __builtin_ia32_pmovsqw256mem_mask, __builtin_ia32_pmovsqw128mem_mask, __builtin_ia32_pmovusqw256mem_mask, __builtin_ia32_pmovusqw128mem_mask, __builtin_ia32_pmovqb256mem_mask, __builtin_ia32_pmovqb128mem_mask, __builtin_ia32_pmovsqb256mem_mask, __builtin_ia32_pmovsqb128mem_mask, __builtin_ia32_pmovusqb256mem_mask, __builtin_ia32_pmovusqb128mem_mask, __builtin_ia32_pmovdb256mem_mask, __builtin_ia32_pmovdb128mem_mask, __builtin_ia32_pmovsdb256mem_mask, __builtin_ia32_pmovsdb128mem_mask, __builtin_ia32_pmovusdb256mem_mask, __builtin_ia32_pmovusdb128mem_mask, __builtin_ia32_pmovdw256mem_mask, __builtin_ia32_pmovdw128mem_mask, __builtin_ia32_pmovsdw256mem_mask, __builtin_ia32_pmovsdw128mem_mask, __builtin_ia32_pmovusdw256mem_mask, __builtin_ia32_pmovusdw128mem_mask, __builtin_ia32_palignr256_mask, __builtin_ia32_palignr128_mask, __builtin_ia32_movdqa64_256_mask, __builtin_ia32_movdqa64_128_mask, __builtin_ia32_movdqa32_256_mask, __builtin_ia32_movdqa32_128_mask, __builtin_ia32_movapd256_mask, __builtin_ia32_movapd128_mask, __builtin_ia32_movaps256_mask, __builtin_ia32_movaps128_mask, __builtin_ia32_movdquhi256_mask, __builtin_ia32_movdquhi128_mask, __builtin_ia32_movdquqi256_mask, __builtin_ia32_movdquqi128_mask, __builtin_ia32_minps_mask, __builtin_ia32_maxps_mask, __builtin_ia32_minpd_mask, __builtin_ia32_maxpd_mask, __builtin_ia32_maxpd256_mask, __builtin_ia32_maxps256_mask, __builtin_ia32_minpd256_mask, __builtin_ia32_minps256_mask, __builtin_ia32_mulps_mask, __builtin_ia32_divps_mask, __builtin_ia32_mulpd_mask, __builtin_ia32_divpd_mask, __builtin_ia32_divpd256_mask, __builtin_ia32_divps256_mask, __builtin_ia32_mulpd256_mask, __builtin_ia32_mulps256_mask, __builtin_ia32_addpd128_mask, __builtin_ia32_addpd256_mask, __builtin_ia32_addps128_mask, __builtin_ia32_addps256_mask, __builtin_ia32_subpd128_mask, __builtin_ia32_subpd256_mask, __builtin_ia32_subps128_mask, __builtin_ia32_subps256_mask, __builtin_ia32_xorpd256_mask, __builtin_ia32_xorpd128_mask, __builtin_ia32_xorps256_mask, __builtin_ia32_xorps128_mask, __builtin_ia32_orpd256_mask, __builtin_ia32_orpd128_mask, __builtin_ia32_orps256_mask, __builtin_ia32_orps128_mask, __builtin_ia32_broadcastf32x2_256_mask, __builtin_ia32_broadcasti32x2_256_mask, __builtin_ia32_broadcasti32x2_128_mask, __builtin_ia32_broadcastf64x2_256_mask, __builtin_ia32_broadcasti64x2_256_mask, __builtin_ia32_broadcastf32x4_256_mask, __builtin_ia32_broadcasti32x4_256_mask, __builtin_ia32_extractf32x4_256_mask, __builtin_ia32_extracti32x4_256_mask, __builtin_ia32_dbpsadbw256_mask, __builtin_ia32_dbpsadbw128_mask, __builtin_ia32_cvttpd2qq256_mask, __builtin_ia32_cvttpd2qq128_mask, __builtin_ia32_cvttpd2uqq256_mask, __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvtpd2qq256_mask, __builtin_ia32_cvtpd2qq128_mask, __builtin_ia32_cvtpd2uqq256_mask, __builtin_ia32_cvtpd2uqq128_mask, __builtin_ia32_cvtpd2udq256_mask, __builtin_ia32_cvtpd2udq128_mask, __builtin_ia32_cvttps2qq256_mask, __builtin_ia32_cvttps2qq128_mask, __builtin_ia32_cvttps2uqq256_mask, __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvttps2dq256_mask, __builtin_ia32_cvttps2dq128_mask, __builtin_ia32_cvttps2udq256_mask, __builtin_ia32_cvttps2udq128_mask, __builtin_ia32_cvttpd2dq256_mask, __builtin_ia32_cvttpd2dq128_mask, __builtin_ia32_cvttpd2udq256_mask, __builtin_ia32_cvttpd2udq128_mask, __builtin_ia32_cvtpd2dq256_mask, __builtin_ia32_cvtpd2dq128_mask, __builtin_ia32_cvtdq2pd256_mask, __builtin_ia32_cvtdq2pd128_mask, __builtin_ia32_cvtudq2pd256_mask, __builtin_ia32_cvtudq2pd128_mask, __builtin_ia32_cvtdq2ps256_mask, __builtin_ia32_cvtdq2ps128_mask, __builtin_ia32_cvtudq2ps256_mask, __builtin_ia32_cvtudq2ps128_mask, __builtin_ia32_cvtps2pd256_mask, __builtin_ia32_cvtps2pd128_mask, __builtin_ia32_pbroadcastb256_mask, __builtin_ia32_pbroadcastb256_gpr_mask, __builtin_ia32_pbroadcastb128_mask, __builtin_ia32_pbroadcastb128_gpr_mask, __builtin_ia32_pbroadcastw256_mask, __builtin_ia32_pbroadcastw256_gpr_mask, __builtin_ia32_pbroadcastw128_mask, __builtin_ia32_pbroadcastw128_gpr_mask, __builtin_ia32_pbroadcastd256_mask, __builtin_ia32_pbroadcastd256_gpr_mask, __builtin_ia32_pbroadcastd128_mask, __builtin_ia32_pbroadcastd128_gpr_mask, __builtin_ia32_pbroadcastq256_mask, __builtin_ia32_pbroadcastq256_gpr_mask, __builtin_ia32_pbroadcastq256_mem_mask, __builtin_ia32_pbroadcastq128_mask, __builtin_ia32_pbroadcastq128_gpr_mask, __builtin_ia32_pbroadcastq128_mem_mask, __builtin_ia32_broadcastss256_mask, __builtin_ia32_broadcastss128_mask, __builtin_ia32_broadcastsd256_mask, __builtin_ia32_extractf64x2_256_mask, __builtin_ia32_extracti64x2_256_mask, __builtin_ia32_insertf32x4_256_mask, __builtin_ia32_inserti32x4_256_mask, __builtin_ia32_pmovsxbw256_mask, __builtin_ia32_pmovsxbw128_mask, __builtin_ia32_pmovsxbd256_mask, __builtin_ia32_pmovsxbd128_mask, __builtin_ia32_pmovsxbq256_mask, __builtin_ia32_pmovsxbq128_mask, __builtin_ia32_pmovsxwd256_mask, __builtin_ia32_pmovsxwd128_mask, __builtin_ia32_pmovsxwq256_mask, __builtin_ia32_pmovsxwq128_mask, __builtin_ia32_pmovsxdq256_mask, __builtin_ia32_pmovsxdq128_mask, __builtin_ia32_pmovzxbw256_mask, __builtin_ia32_pmovzxbw128_mask, __builtin_ia32_pmovzxbd256_mask, __builtin_ia32_pmovzxbd128_mask, __builtin_ia32_pmovzxbq256_mask, __builtin_ia32_pmovzxbq128_mask, __builtin_ia32_pmovzxwd256_mask, __builtin_ia32_pmovzxwd128_mask, __builtin_ia32_pmovzxwq256_mask, __builtin_ia32_pmovzxwq128_mask, __builtin_ia32_pmovzxdq256_mask, __builtin_ia32_pmovzxdq128_mask, __builtin_ia32_reducepd256_mask, __builtin_ia32_reducepd128_mask, __builtin_ia32_reduceps256_mask, __builtin_ia32_reduceps128_mask, __builtin_ia32_reducesd, __builtin_ia32_reducess, __builtin_ia32_permvarhi256_mask, __builtin_ia32_permvarhi128_mask, __builtin_ia32_vpermt2varhi256_mask, __builtin_ia32_vpermt2varhi256_maskz, __builtin_ia32_vpermt2varhi128_mask, __builtin_ia32_vpermt2varhi128_maskz, __builtin_ia32_vpermi2varhi256_mask, __builtin_ia32_vpermi2varhi128_mask, __builtin_ia32_rcp14pd256_mask, __builtin_ia32_rcp14pd128_mask, __builtin_ia32_rcp14ps256_mask, __builtin_ia32_rcp14ps128_mask, __builtin_ia32_rsqrt14pd256_mask, __builtin_ia32_rsqrt14pd128_mask, __builtin_ia32_rsqrt14ps256_mask, __builtin_ia32_rsqrt14ps128_mask, __builtin_ia32_sqrtpd256_mask, __builtin_ia32_sqrtpd128_mask, __builtin_ia32_sqrtps256_mask, __builtin_ia32_sqrtps128_mask, __builtin_ia32_paddb128_mask, __builtin_ia32_paddw128_mask, __builtin_ia32_paddd128_mask, __builtin_ia32_paddq128_mask, __builtin_ia32_psubb128_mask, __builtin_ia32_psubw128_mask, __builtin_ia32_psubd128_mask, __builtin_ia32_psubq128_mask, __builtin_ia32_paddsb128_mask, __builtin_ia32_paddsw128_mask, __builtin_ia32_psubsb128_mask, __builtin_ia32_psubsw128_mask, __builtin_ia32_paddusb128_mask, __builtin_ia32_paddusw128_mask, __builtin_ia32_psubusb128_mask, __builtin_ia32_psubusw128_mask, __builtin_ia32_paddb256_mask, __builtin_ia32_paddw256_mask, __builtin_ia32_paddd256_mask, __builtin_ia32_paddq256_mask, __builtin_ia32_paddsb256_mask, __builtin_ia32_paddsw256_mask, __builtin_ia32_paddusb256_mask, __builtin_ia32_paddusw256_mask, __builtin_ia32_psubb256_mask, __builtin_ia32_psubw256_mask, __builtin_ia32_psubd256_mask, __builtin_ia32_psubq256_mask, __builtin_ia32_psubsb256_mask, __builtin_ia32_psubsw256_mask, __builtin_ia32_psubusb256_mask, __builtin_ia32_psubusw256_mask, __builtin_ia32_shuf_f64x2_256_mask, __builtin_ia32_shuf_i64x2_256_mask, __builtin_ia32_shuf_i32x4_256_mask, __builtin_ia32_shuf_f32x4_256_mask, __builtin_ia32_pmovwb128_mask, __builtin_ia32_pmovwb256_mask, __builtin_ia32_pmovswb128_mask, __builtin_ia32_pmovswb256_mask, __builtin_ia32_pmovuswb128_mask, __builtin_ia32_pmovuswb256_mask, __builtin_ia32_pmovdb128_mask, __builtin_ia32_pmovdb256_mask, __builtin_ia32_pmovsdb128_mask, __builtin_ia32_pmovsdb256_mask, __builtin_ia32_pmovusdb128_mask, __builtin_ia32_pmovusdb256_mask, __builtin_ia32_pmovdw128_mask, __builtin_ia32_pmovdw256_mask, __builtin_ia32_pmovsdw128_mask, __builtin_ia32_pmovsdw256_mask, __builtin_ia32_pmovusdw128_mask, __builtin_ia32_pmovusdw256_mask, __builtin_ia32_pmovqb128_mask, __builtin_ia32_pmovqb256_mask, __builtin_ia32_pmovsqb128_mask, __builtin_ia32_pmovsqb256_mask, __builtin_ia32_pmovusqb128_mask, __builtin_ia32_pmovusqb256_mask, __builtin_ia32_pmovqw128_mask, __builtin_ia32_pmovqw256_mask, __builtin_ia32_pmovsqw128_mask, __builtin_ia32_pmovsqw256_mask, __builtin_ia32_pmovusqw128_mask, __builtin_ia32_pmovusqw256_mask, __builtin_ia32_pmovqd128_mask, __builtin_ia32_pmovqd256_mask, __builtin_ia32_pmovsqd128_mask, __builtin_ia32_pmovsqd256_mask, __builtin_ia32_pmovusqd128_mask, __builtin_ia32_pmovusqd256_mask, __builtin_ia32_rangepd256_mask, __builtin_ia32_rangepd128_mask, __builtin_ia32_rangeps256_mask, __builtin_ia32_rangeps128_mask, __builtin_ia32_getexpps256_mask, __builtin_ia32_getexppd256_mask, __builtin_ia32_getexpps128_mask, __builtin_ia32_getexppd128_mask, __builtin_ia32_fixupimmpd256, __builtin_ia32_fixupimmpd256_mask, __builtin_ia32_fixupimmpd256_maskz, __builtin_ia32_fixupimmps256, __builtin_ia32_fixupimmps256_mask, __builtin_ia32_fixupimmps256_maskz, __builtin_ia32_fixupimmpd128, __builtin_ia32_fixupimmpd128_mask, __builtin_ia32_fixupimmpd128_maskz, __builtin_ia32_fixupimmps128, __builtin_ia32_fixupimmps128_mask, __builtin_ia32_fixupimmps128_maskz, __builtin_ia32_pabsq256_mask, __builtin_ia32_pabsq128_mask, __builtin_ia32_pabsd256_mask, __builtin_ia32_pabsd128_mask, __builtin_ia32_pmulhrsw256_mask, __builtin_ia32_pmulhrsw128_mask, __builtin_ia32_pmulhuw128_mask, __builtin_ia32_pmulhuw256_mask, __builtin_ia32_pmulhw256_mask, __builtin_ia32_pmulhw128_mask, __builtin_ia32_pmullw256_mask, __builtin_ia32_pmullw128_mask, __builtin_ia32_pmullq256_mask, __builtin_ia32_pmullq128_mask, __builtin_ia32_andpd256_mask, __builtin_ia32_andpd128_mask, __builtin_ia32_andps256_mask, __builtin_ia32_andps128_mask, __builtin_ia32_andnpd256_mask, __builtin_ia32_andnpd128_mask, __builtin_ia32_andnps256_mask, __builtin_ia32_andnps128_mask, __builtin_ia32_psllwi128_mask, __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask, __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask, __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask, __builtin_ia32_psllw256_mask,