+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>
+2014-11-04 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: