+2012-10-29 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline.c (want_inline_function_called_once_p): Rename to ...
+ (want_inline_function_to_all_callers_p): check also functions with
+ multiple callers.
+ (ipa_inline): Handle inlining for size into multiple callers.
+
+2012-10-29 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53695
+ * tracer.c (tracer): Fixup loop structure.
+ * cfgloopmanip.c (force_single_succ_latches): Add assert.
+ (fix_loop_structure): Re-compute loop latches and disambiguate
+ loops with multiple latches if required.
+
+2012-10-29 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_decompose_address): Use simplify_gen_subreg
+ to check SImode equivalent of address, zero-extended with AND RTX.
+ * config/i386/i386.md (ashift to lea splitter): Split to SImode mult.
+ (simple lea to add/shift peephole2s): Remove peephole2s that operate
+ on subregs of DImode operations.
+
+2012-10-28 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/55106
+ * lra-constraints.c (skip_usage_debug_insns): New function.
+ (check_secondary_memory_needed_p): Ditto.
+ (inherit_reload_reg): Use the new functions. Improve debug output.
+
+2012-10-29 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * doc/cpp.texi (Search Path): Fix outdated C++ path.
+
+2012-10-28 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
+ &this->field expressions.
+
+2012-10-28 Vladimir Makarov <vmakarov@redhat.com>
+
+ * rtl.h (struct rtx_def): Add a comment for member unchanging.
+ * lra-int.h (LRA_TEMP_CLOBBER_P): New macro.
+ (lra_hard_reg_substitution): Rename to lra_final_code_change.
+ * lra-constraints.c (match_reload): Mark temporary clobbers.
+ * lra-spill.c (lra_hard_reg_substitution): Rename to
+ lra_final_code_change. Remove temporary clobbers.
+ * lra.c (lra): Rename to lra_final_code_change.
+
+2012-10-28 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline.c (edge_badness): Fix overflow.
+ (inline_small_functions): Initialize SCCs correctly.
+ (do_estimate_edge_time, do_estimate_edge_hints): Skip self
+ recursive functions in SCC hints.
+
+2012-10-28 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR rtl-optimization/38711
+ * ira.c (ira): Remove DF_LIVE if the problem is in the stack.
+ (do_reload): Add it back at the end for -O2 and higher.
+
+ * function.c (thread_prologue_and_epilogue_insns): Use
+ REG_SET_TO_HARD_REG_SET instead of CLEAR_HARD_REG_SET and
+ reg_set_to_hard_reg_set.
+
+2012-10-28 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline.c (edge_badness): Reduce precision; use scc hints.
+ (inline_small_functions): Fix dumps; update all callees after inlining.
+ * ipa-inline.h (INLINE_HINT_in_scc, INLINE_HINT_same_scc): New
+ constants.
+ (inline summary): Add SCC_NO.
+ * ipa-inline-analysis.c (dump_inline_hints): Dump SCC hints.
+ (reset_inline_summary): Reset scc_no.
+ (estimate_node_size_and_time): Set in_scc hint.
+ (do_estimate_edge_time): Add same_scc hint.
+ (do_estimate_edge_hints): Likewise.
+
+2012-10-28 Andreas Schwab <schwab@linux-m68k.org>
+
+ * doc/cppopts.texi: Fix use of @item vs. @itemx inside @table.
+ * doc/extend.texi: Likewise.
+ * doc/generic.texi: Likewise.
+ * doc/invoke.texi: Likewise.
+ * doc/md.texi: Likewise.
+ * doc/sourcebuild.texi: Likewise.
+
+ * doc/tm.texi.in (Misc): Add newline before @end.
+ * doc/tm.texi: Update.
+
+2012-10-27 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * lra-assigns.c (find_hard_regno_for): Fix use of WORDS_BIG_ENDIAN.
+
+2012-10-27 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/55034
+ * config/avr/avr.c (avr_out_lpm): Remove unused regno_dest.
+
+2012-10-27 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/55042
+ * config/sh/sh.c (sh1_builtin_p): Comment out unused function.
+
+2012-10-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*lea<mode>): Remove unneeded temporary.
+
+2012-10-26 David S. Miller <davem@davemloft.net>
+
+ * config/sparc/constraints.md: Update unused letter list, move
+ "w" near other memory constraints. Remove no longer relevant
+ comment.
+ * doc/md.texi: Sync sparc constraint documentation with reality.
+
+2012-10-26 DJ Delorie <dj@redhat.com>
+
+ * config/rl78/rl78.c (rl78_as_legitimate_address): Do not allow
+ reg+addend addresses for the _far namespace.
+
+2012-10-26 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/sync.md (ATOMIC): Correct DI condition.
+
+2012-10-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/54970
+ * cfgexpand.c (expand_debug_expr): Expand &MEM_REF[&var, n]
+ as DEBUG_IMPLICIT_PTR + n if &var expands to DEBUG_IMPLICIT_PTR.
+ * tree-sra.c (create_access_replacement): Allow also MEM_REFs
+ with ADDR_EXPR first operand in DECL_DEBUG_EXPR expressions.
+ * var-tracking.c (track_expr_p): Handle MEM_REFs in DECL_DEBUG_EXPR
+ expressions.
+ * dwarf2out.c (add_var_loc_to_decl): Likewise.
+
+2012-10-26 Jeff Law <law@redhat.com>
+
+ * tree-ssa-threadedge.c (cond_arg_set_in_bb): Use last stmt.
+
+2012-10-26 Gunther Nikl <gnikl@users.sourceforge.net>
+
+ * common/config/m68k/m68k-common.c (m68k_handle_option): Set
+ gcc_options fields of opts_set for -m68020-40 and -m68020-60.
+
+2012-10-26 Teresa Johnson <tejohnson@google.com>
+
+ * ree.c (add_removable_extension): Remove unnecessary
+ mode check with other extension.
+ * testsuite/gcc.c-torture/execute/20111227-2.c: New test.
+ * testsuite/gcc.c-torture/execute/20111227-3.c: Ditto.
+
+2012-10-26 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline-transform.c (inline_call): Only account size changes
+ for !DECL_EXTERNAL.
+
+2012-10-26 Martin Jambor <mjambor@suse.cz>
+
+ PR debug/54971
+ * tree-sra.c (struct access): New flag grp_to_be_debug_replaced.
+ (dump_access): Dump the new flag.
+ (analyze_access_subtree): Set the new flag when appropriate.
+ (create_access_replacement): Handle debug replacements differently.
+ (generate_subtree_copies): Handle the grp_to_be_debug_replaced flag.
+ (init_subtree_with_zero): Likewise.
+ (sra_modify_expr): Likewise.
+ (load_assign_lhs_subreplacements): Likewise.
+ (sra_modify_assign): Likewise.
+
+2012-10-23 Yuri Rumyantsev <ysrumyan@gmail.com>
+
+ * config/i386/i386.c (insn_is_function_arg) : Add check on CALL
+ instruction.
+ (ix86_dependencies_evaluation_hook): Insert dependencies in all
+ predecessors of call block for non-trivial region avoiding creation
+ of loop-carried dependency to avoid cross-block motion of HW registers.
+
+2012-10-26 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/54824
+ * tree-optimize.c (execute_fixup_cfg): Insert __builtin_unreachable
+ at the end of blocks with no successors.
+
+2012-10-26 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc/common/config/i386/i386-common.c
+ (OPTION_MASK_ISA_FXSR_SET): New.
+ (OPTION_MASK_ISA_XSAVE_SET): Likewise.
+ (OPTION_MASK_ISA_XSAVEOPT_SET): Likewise.
+ (ix86_handle_option): Handle mfxsr, mxsave, mxsaveopt options.
+ * gcc/config.gcc (i[34567]86-*-*): Add fxsrintrin.h,
+ xsaveintrin.h, xsaveoptintrin.h.
+ (x86_64-*-*): Likewise.
+ * config/i386/fxsrintrin.h: New header.
+ * config/i386/xsaveintrin.h: Likewise.
+ * config/i386/xsaveoptintrin.h: Likewise.
+ * gcc/config/i386/driver-i386.c (host_detect_local_cpu): Detect
+ FXSR/XSAVE/XSAVEOPT support.
+ * gcc/config/i386/i386-builtin-types.def
+ (VOID_FTYPE_PVOID_INT64): New function type.
+ * gcc/config/i386/i386-c.c: Define __FXSR__, __XSAVE__
+ and __XSAVEOPT__ if needed.
+ * gcc/config/i386/i386.c (ix86_target_string): Define -mfxsr,
+ -mxsave and -mxsaveopt options.
+ (PTA_FXSR): New.
+ (PTA_XSAVE): Likewise.
+ (PTA_XSAVEOPT): Likewise.
+ (ix86_option_override_internal): Handle new option.
+ (processor_alias_table): Added PTA_FXSR, PTA_XSAVE, PTA_XSAVEOPT.
+ (ix86_valid_target_attribute_inner_p): Add OPT_mfxsr,
+ OPT_mxsave, OPT_mxsaveopt.
+ (ix86_builtins): Add IX86_BUILTIN_FXSAVE, IX86_BUILTIN_FXRSTOR,
+ IX86_BUILTIN_FXSAVE64, IX86_BUILTIN_XSAVE, IX86_BUILTIN_XSAVE64,
+ IX86_BUILTIN_XRSTOR, IX86_BUILTIN_XRSTOR64, IX86_BUILTIN_XSAVEOPT,
+ IX86_BUILTIN_XSAVEOPT64.
+ (ix86_expand_builtin): Handle these built-ins.
+ * gcc/config/i386/i386.h (TARGET_FXSR): New.
+ (TARGET_XSAVE): Likewise.
+ (TARGET_XSAVEOPT): Likewise.
+ * gcc/config/i386/i386.md (ANY_XSAVE): New int iterator.
+ (ANY_XSAVE64): Likewise.
+ (xsave): New int attribute.
+ (fxsave): New instruction.
+ (fxsave64): Likewise.
+ (fxrstor): Likewise.
+ (fxrstor64): Likewise.
+ (<xsave>): Likewise.
+ (<xsave>_rex64): Likewise.
+ (xrstor): Likewise.
+ (xrstor_rex64): Likewise.
+ (xrstor64): Likewise.
+ * gcc/config/i386/i386.opt (mfxsr): New.
+ (mxsave): Likewise.
+ (mxsaveopt): Likewise.
+ * gcc/config/i386/x86intrin.h: Include
+ xsaveintrin.h, fxsrintrin.h, xsaveoptintrin.h.
+
+2012-10-26 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * config/avr/t-rtems: Revert previous commit.
+
+2012-10-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR bootstrap/55049
+ * Makefile.in (rtlanal.o): Add dependency on addresses.h.
+ * rtl.h (address_info): New structure.
+ (strip_address_mutations, decompose_address, decompose_lea_address)
+ (decompose_mem_address, update_address, get_index_scale)
+ (get_index_code): Declare.
+ * rtlanal.c: Include addresses.h.
+ (strip_address_mutations, must_be_base_p, must_be_index_p)
+ (set_address_segment, set_address_base, set_address_index)
+ (set_address_disp, decompose_incdec_address, decompose_automod_address)
+ (extract_plus_operands, baseness, decompose_normal_address)
+ (decompose_address, decompose_lea_address, decompose_mem_address)
+ (update_address, get_index_scale, get_index_code): New functions.
+ * lra-constraints.c (strip_subreg): New function.
+ (address, extract_loc_address_regs, extract_address_regs)
+ (get_index_scale): Delete.
+ (process_addr_reg): Apply strip_subreg to the location.
+ (uses_hard_regs_p): Use decompose_mem_address.
+ (valid_address_p, base_plus_disp_to_reg, can_add_disp_p)
+ (equiv_address_substitution): Take an address_info rather
+ than an address. Remove other arguments. Avoid using Pmode.
+ (process_address): Use decompose_mem_address and decompose_lea_address.
+ Update calls to above functions.
+
+2012-10-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lra-constraints.c (process_address): Tighten arguments to
+ base_reg_class. Use simplify_gen_binary to generate PLUS rtxes.
+
+2012-10-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lra-constraints.c (get_index_scale, can_add_disp_p): New functions.
+ (equiv_address_substitution): Use them.
+
+2012-10-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lra-constraints.c (valid_address_p): New function, split out from...
+ (process_address): ...here.
+
+2012-10-26 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lra-constraints.c (process_address): Describe the kinds of address
+ that we might see.
+
+2012-10-25 Vladimir Makarov <vmakarov@redhat.com>
+
+ * lra-int.h (lra_assert): Redefine it gcc_checking_assert.
+ * lra-constraints.c (check_and_process_move): Remove #if
+ ENABLE_ASSERT_CHECKING.
+
+2012-10-26 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * config/avr/rtems.h (TARGET_OS_CPP_BUILTINS): Remove
+ __USE_INIT_FINI__.
+ * config/avr/t-rtems (LIB1ASMFUNCS): Filter out _exit.
+
+2012-10-25 David S. Miller <davem@davemloft.net>
+
+ * config/sparc/constraints.md ("U"): Delete.
+ * config/sparc/sparc.md: Use 'r' constraint instead of 'U'.
+ * config/sparc/sync.md: Likewise.
+
+2012-10-25 Lawrence Crowl <crowl@google.com>
+
+ * hash-table.h: Add usage documentation.
+ (template struct typed_free_remove): Clarify documentation.
+ Rename template parameter.
+ (struct typed_noop_remove): Likewise.
+ (descriptor concept): Change typedef T to value_type.
+ Add typedef compare_type. Use more precise template parameter name,
+ Descriptor instead of Descr. Update users to match.
+ (struct hash_table): Change 'find' parameters to use compare_type
+ instead of the value type.
+
+2012-10-25 Jan Hubicka <jh@suse.cz>
+
+ * ipa-cp.c (ipcp_discover_new_direct_edges): If something was turned
+ to direct call update the summary.
+ * ipa-inline-transform.c (inline_call): Sanity check that summaries
+ match the predicted effect; fix updating of summary after edge
+ redirection.
+ * ipa-inline-analysis.c (inline_node_duplication_hook): Do not try
+ to update the summary and recompute it instead.
+ (estimate_function_body_sizes): Fix self size estimation; double
+ check that it agrees with inline_update_overall_summary.
+ (estimate_edge_size_and_time): Handle devirtualizaiton costs.
+ (estimate_edge_devirt_benefit): Update to be called from
+ estimate_edge_size_and_time.
+ (estimate_calls_size_and_time): Update.
+ (estimate_node_size_and_time): Watch overflows.
+ (inline_merge_summary): Likewise.
+ * ipa-prob.c: Include ipa-inline.h
+ (ipa_make_edge_direct_to_target): After redirection update the summary.
+
+2012-10-25 Cary Coutant <ccoutant@google.com>
+
+ PR debug/55063
+ * dwarf2out.c (prune_unused_types_prune): Check whether DIE is
+ already a declaration.
+
+2012-10-25 Vladimir Makarov <vmakarov@redhat.com>
+
+ * lra-assigns.c (assign_by_spills): Add non-reload pseudos
+ assigned to hard register to changed_pseudo_bitmap.
+
+2012-10-25 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * config.gcc (microblaze*-*-rtems*): New target.
+ * config/microblaze/rtems.h: New.
+ * config/microblaze/t-rtems: New.
+
+2012-10-25 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimize/54980
+ * tree-ssa-loop-ivcanon.c (constant_after_peeling): Fix obvious typo.
+ (loop_edge_to_cancel): Be sure that the edge is from an conditional
+ so we can cancel it.
+
+2012-10-25 Marc Glisse <marc.glisse@inria.fr>
+
+ PR c++/54427
+ * tree.c (signed_or_unsigned_type_for): Handle vectors.
+
+2012-10-25 Jan Hubicka <jh@suse.cz>
+
+ * ipa-inline.c (recursive_inlining): Redirect to master
+ clone before testing profitability.
+
+2012-10-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/54902
+ * tree-ssa-pre.c (fini_eliminate): Return TODO.
+ (do_pre): Adjust.
+ (execute_fre): Likewise.
+ * tree-ssa-tailmerge.c (tail_merge_optimize): Delete unreachable
+ blocks before computing dominators.
+
+2012-10-25 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * expr.c (emit_block_move_via_loop): Use simplify_gen_binary
+ rather than gen_rtx_PLUS.
+
+2012-10-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR bootstrap/55068
+ PR regression/55050
+ * ira.c (setup_reg_renumber): Fix assert.
+ * ira-emit.c (emit_move_list): Update equivalences only for LRA.
+
+2012-10-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR bootstrap/55067
+ * lra.c: Rename loc to sloc and loc_t to sloc_t.
+
+2012-10-24 Sharad Singhai <singhai@google.com>
+
+ * config/rs6000/rs6000.c (rs6000_density_test): Use dump_enabled_p
+ instead of dump_kind_p.
+
+2012-10-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ PR c++/54928
+ * tree-diagnostic.c (maybe_unwind_expanded_macro_loc):
+ Use diagnostic_append_note.
+ * diagnostic.c (diagnostic_build_prefix): Make diagnostic const.
+ (default_diagnostic_finalizer): Do not destroy prefix here.
+ (diagnostic_report_diagnostic): Destroy it here.
+ (diagnostic_append_note): New.
+ * diagnostic.h (diagnostic_append_note): Declare.
+
+2012-10-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/55055
+ * lra-spills.c (alter_subregs): New function.
+ (lra_hard_reg_substitution): Use it.
+
+2012-10-24 Sharad Singhai <singhai@google.com>
+
+ * dumpfile.c (dump_enabled_p): Make it inline and move the definition
+ to dumpfile.h.
+ (dump_kind_p): Deleted. Functionality replaced by dump_enabled_p.
+ Make alt_dump_file extern.
+ * dumpfile.h (dump_enabled_p): Move inline definition here.
+ (dump_kind_p): Delete declaration.
+ Add extern declaration of alt_dump_file.
+ * toplev.c: Move dump_file and dump_file_name to dumpfile.c.
+ * tree-vect-loop-manip.c: Replace all uses of dump_kind_p with
+ dump_enabled_p.
+ * tree-vectorizer.c: Likewise.
+ * tree-vect-loop.c: Likewise.
+ * tree-vect-data-refs.c: Likewise.
+ * tree-vect-patterns.c: Likewise.
+ * tree-vect-stmts.c: Likewise.
+ * tree-vect-slp.c: Likewise.
+
+2012-10-24 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * expmed.c (lowpart_bit_field_p): Add missing == 0 check.
+
+2012-10-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR bootstrap/55049
+ * lra-constraints.c (extract_loc_address_regs): Pass top_p for
+ ZERO_EXTEND operand.
+
+2012-10-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR bootstrap/55048
+ * lra-constraints.c (update_ebb_live_info): Skip
+ non-NOTE_INSN_BASIC_BLOCK notes.
+
+2012-10-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/55010
+ * cse.c (fold_rtx) <RTX_COMPARE>: Call copy_rtx on folded_arg{0,1}
+ before passing it to simplify_relational_operation.
+
+ PR debug/54828
+ * gimple.h (is_gimple_sizepos): New inline function.
+ * gimplify.c (gimplify_one_sizepos): Use it. Remove useless
+ final assignment to expr variable.
+ * tree.c (RETURN_TRUE_IF_VAR): Return true also if
+ !TYPE_SIZES_GIMPLIFIED (type) and _t is going to be gimplified
+ into a local temporary.
+
+2012-10-23 David S. Miller <davem@davemloft.net>
+
+ * config/sparc/constraints.md ("T", "W"): Change
+ definitions to use define_memory_constraint. Do not match 'reg'.
+ * config/sparc/sparc.c (memory_ok_for_ldd): Remove all non-MEM
+ handling code, update comment.
+
+2012-10-23 Ian Lance Taylor <iant@google.com>
+
+ * doc/extend.texi (Extended Asm): The '+' constraint does not
+ require a register.
+
+2012-10-23 Jeff Law <law@redhat.com>
+
+ * tree-ssa-threadedge.c (thread_across_edge): Remove unused
+ parameter in call to cond_arg_set_in_bb.
+
+ * tree-ssa-threadedge.c (cond_arg_set_in_bb): Remove unused
+ debugging argument.
+
+ PR tree-optimization/54985
+ * tree-ssa-threadedge.c (cond_arg_set_in_bb): New function extracted
+ from thread_across_edge.
+ (thread_across_edge): Use it in all cases where we might thread
+ across a back edge.
+
+2012-10-23 Vladimir Makarov <vmakarov@redhat.com>
+
+ * lra-constraints.c (update_ebb_live_info): Process empty blocks.
+
+2012-10-23 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * expmed.c (store_split_bit_field): Update the calls to
+ extract_fixed_bit_field. In the big-endian case, always
+ use the mode of OP0 to count the number of significant bits.
+ (extract_bit_field_1): Remove unit, offset, bitpos and
+ byte_offset from the outermost scope. Express conditions in terms
+ of bitnum rather than offset, bitpos and byte_offset. Move the
+ computation of MODE1 to the block that needs it. Use MODE unless
+ the TMODE-based mode_for_size calculation succeeds. Split the
+ plain move cases into two, one for memory accesses and one for
+ register accesses. Generalize the memory case, freeing it from
+ the old register-based endian checks. Move the INT_MODE calculation
+ above the code that needs it. Use simplify_gen_subreg to handle
+ multiword OP0s. If the field still spans several words, pass it
+ directly to extract_split_bit_field. Assume after that point
+ that both targets and register sources fit within a word.
+ Replace x-prefixed variables with non-prefixed forms.
+ Compute the bitpos for ext(z)v register operands directly in the
+ chosen unit size, rather than going through an intermediate
+ BITS_PER_WORD unit size. Simplify the containment check
+ used when forcing OP0 into a register. Update the call to
+ extract_fixed_bit_field.
+ (extract_fixed_bit_field): Replace the bitpos and offset parameters
+ with a single bitnum parameter, of the same form as extract_bit_field.
+ Assume that OP0 contains the full field. Simplify the memory offset
+ calculation and containment check for volatile bitfields. Make the
+ offset explicit when volatile bitfields force a misaligned access.
+ Remove WARNED and fix long lines. Assert that the processed OP0
+ has an integral mode.
+ (store_split_bit_field): Update the call to store_fixed_bit_field.
+
+2012-10-23 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * expmed.c (lowpart_bit_field_p): New function.
+ (store_bit_field_1): Remove unit, offset, bitpos and byte_offset
+ from the outermost scope. Express conditions in terms of bitnum
+ rather than offset, bitpos and byte_offset. Split the plain move
+ cases into two, one for memory accesses and one for register accesses.
+ Allow simplify_gen_subreg to fail rather than calling validate_subreg.
+ Move the handling of multiword OP0s after the code that coerces VALUE
+ to an integer mode. Use simplify_gen_subreg for this case and assert
+ that it succeeds. If the field still spans several words, pass it
+ directly to store_split_bit_field. Assume after that point that
+ both sources and register targets fit within a word. Replace
+ x-prefixed variables with non-prefixed forms. Compute the bitpos
+ for insv register operands directly in the chosen unit size, rather
+ than going through an intermediate BITS_PER_WORD unit size.
+ Update the call to store_fixed_bit_field.
+ (store_fixed_bit_field): Replace the bitpos and offset parameters
+ with a single bitnum parameter, of the same form as store_bit_field.
+ Assume that OP0 contains the full field. Simplify the memory offset
+ calculation. Assert that the processed OP0 has an integral mode.
+ (store_split_bit_field): Update the call to store_fixed_bit_field.
+
+2012-10-23 Paul Koning <ni1d@arrl.net>
+
+ PR debug/54508
+ * dwarf2out.c (prune_unused_types_prune): If pruning a class and
+ not all its children were marked, add DW_AT_declaration flag.
+
+2012-10-23 Ian Bolton <ian.bolton@arm.com>
+ James Greenhalgh <james.greenhalgh@arm.com>
+ Jim MacArthur <jim.macarthur@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Nigel Stephens <nigel.stephens@arm.com>
+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+ Sofiane Naci <sofiane.naci@arm.com>
+ Stephen Thomas <stephen.thomas@arm.com>
+ Tejas Belagod <tejas.belagod@arm.com>
+ Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * config.gcc: Add AArch64.
+ * configure.ac: Add AArch64 TLS support detection.
+ * configure: Regenerate.
+
+2012-10-23 Ian Bolton <ian.bolton@arm.com>
+ James Greenhalgh <james.greenhalgh@arm.com>
+ Jim MacArthur <jim.macarthur@arm.com>
+ Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Nigel Stephens <nigel.stephens@arm.com>
+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+ Sofiane Naci <sofiane.naci@arm.com>
+ Stephen Thomas <stephen.thomas@arm.com>
+ Tejas Belagod <tejas.belagod@arm.com>
+ Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * doc/invoke.texi (AArch64 Options): New.
+ * doc/md.texi (Machine Constraints): Add AArch64.
+
+2012-10-23 Ian Bolton <ian.bolton@arm.com>
+ James Greenhalgh <james.greenhalgh@arm.com>
+ Jim MacArthur <jim.macarthur@arm.com>
+ Chris Schlumberger-Socha <chris.schlumberger-socha@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Nigel Stephens <nigel.stephens@arm.com>
+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+ Sofiane Naci <sofiane.naci@arm.com>
+ Stephen Thomas <stephen.thomas@arm.com>
+ Tejas Belagod <tejas.belagod@arm.com>
+ Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * common/config/aarch64/aarch64-common.c: New file.
+ * config/aarch64/aarch64-arches.def: New file.
+ * config/aarch64/aarch64-builtins.c: New file.
+ * config/aarch64/aarch64-cores.def: New file.
+ * config/aarch64/aarch64-elf-raw.h: New file.
+ * config/aarch64/aarch64-elf.h: New file.
+ * config/aarch64/aarch64-generic.md: New file.
+ * config/aarch64/aarch64-linux.h: New file.
+ * config/aarch64/aarch64-modes.def: New file.
+ * config/aarch64/aarch64-option-extensions.def: New file.
+ * config/aarch64/aarch64-opts.h: New file.
+ * config/aarch64/aarch64-protos.h: New file.
+ * config/aarch64/aarch64-simd.md: New file.
+ * config/aarch64/aarch64-tune.md: New file.
+ * config/aarch64/aarch64.c: New file.
+ * config/aarch64/aarch64.h: New file.
+ * config/aarch64/aarch64.md: New file.
+ * config/aarch64/aarch64.opt: New file.
+ * config/aarch64/arm_neon.h: New file.
+ * config/aarch64/constraints.md: New file.
+ * config/aarch64/gentune.sh: New file.
+ * config/aarch64/iterators.md: New file.
+ * config/aarch64/large.md: New file.
+ * config/aarch64/predicates.md: New file.
+ * config/aarch64/small.md: New file.
+ * config/aarch64/sync.md: New file.
+ * config/aarch64/t-aarch64-linux: New file.
+ * config/aarch64/t-aarch64: New file.
+
+2012-10-23 Michael Matz <matz@suse.de>
+
+ * tree-ssa-operands.h (struct def_optype_d, def_optype_p): Remove.
+ (ssa_operands.free_defs): Remove.
+ (DEF_OP_PTR, DEF_OP): Remove.
+ (struct ssa_operand_iterator_d): Remove 'defs', add 'flags' members,
+ rename 'phi_stmt' to 'stmt', 'phi_i' to 'i' and 'num_phi' to 'numops'.
+ * gimple.h (gimple_statement_with_ops.def_ops): Remove.
+ (gimple_def_ops, gimple_set_def_ops): Remove.
+ (gimple_vdef_op): Don't take const gimple, adjust.
+ (gimple_asm_input_op, gimple_asm_input_op_ptr,
+ gimple_asm_set_input_op, gimple_asm_output_op,
+ gimple_asm_output_op_ptr, gimple_asm_set_output_op): Adjust asserts,
+ and rewrite to move def operands to front.
+ (gimple_asm_clobber_op, gimple_asm_set_clobber_op,
+ gimple_asm_label_op, gimple_asm_set_label_op): Correct asserts.
+ * tree-ssa-operands.c (build_defs): Remove.
+ (init_ssa_operands): Don't initialize it.
+ (fini_ssa_operands): Don't free it.
+ (cleanup_build_arrays): Don't truncate it.
+ (finalize_ssa_stmt_operands): Don't assert on it.
+ (alloc_def, add_def_op, append_def): Remove.
+ (finalize_ssa_defs): Remove building of def_ops list.
+ (finalize_ssa_uses): Don't mark for SSA renaming here, ...
+ (add_stmt_operand): ... but here, don't call append_def.
+ (get_indirect_ref_operands): Remove recurse_on_base argument.
+ (get_expr_operands): Adjust call to get_indirect_ref_operands.
+ (verify_ssa_operands): Don't check def operands.
+ (free_stmt_operands): Don't free def operands.
+ * gimple.c (gimple_copy): Don't clear def operands.
+ * tree-flow-inline.h (op_iter_next_use): Adjust to explicitely
+ handle def operand.
+ (op_iter_next_tree, op_iter_next_def): Ditto.
+ (clear_and_done_ssa_iter): Clear new fields.
+ (op_iter_init): Adjust to setup new iterator structure.
+ (op_iter_init_phiuse): Adjust.
+
+2012-10-23 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ * config/arm/arm.c (offset_ok_for_ldrd_strd): Return false for Thumb1.
+
+2012-10-23 Vladimir Makarov <vmakarov@redhat.com>
+
+ * dbxout.c (dbxout_symbol_location): Pass new argument to alter_subreg.
+ * dwarf2out.c: Include ira.h and lra.h.
+ (based_loc_descr, compute_frame_pointer_to_fb_displacement): Use
+ lra_eliminate_regs for LRA instead of eliminate_regs.
+ * expr.c (emit_move_insn_1): Pass an additional argument to
+ emit_move_via_integer. Use emit_move_via_integer for LRA only if
+ the insn is recognized.
+ * emit-rtl.c (gen_rtx_REG): Add lra_in_progress.
+ (validate_subreg): Don't check offset for LRA and floating point modes.
+ * final.c (final_scan_insn, cleanup_subreg_operands): Pass new
+ argument to alter_subreg.
+ (walk_alter_subreg, output_operand): Ditto.
+ (alter_subreg): Add new argument.
+ * gcse.c (calculate_bb_reg_pressure): Add parameter to
+ ira_setup_eliminable_regset call.
+ * ira.c: Include lra.h.
+ (ira_init_once, ira_init, ira_finish_once): Call lra_start_once,
+ lra_init, lra_finish_once in anyway.
+ (ira_setup_eliminable_regset): Add parameter. Remove need_fp.
+ Call lra_init_elimination and mark HARD_FRAME_POINTER_REGNUM as
+ living forever if frame_pointer_needed.
+ (setup_reg_class_relations): Set up ira_reg_class_subset.
+ (ira_reg_equiv_invariant_p, ira_reg_equiv_const): Remove.
+ (find_reg_equiv_invariant_const): Ditto.
+ (setup_reg_renumber): Use ira_equiv_no_lvalue_p instead of
+ ira_reg_equiv_invariant_p. Skip caps for LRA.
+ (setup_reg_equiv_init, ira_update_equiv_info_by_shuffle_insn): New
+ functions.
+ (ira_reg_equiv_len, ira_reg_equiv): New externals.
+ (ira_reg_equiv): New.
+ (ira_expand_reg_equiv, init_reg_equiv, finish_reg_equiv): New
+ functions.
+ (no_equiv, update_equiv_regs): Use ira_reg_equiv instead of
+ reg_equiv_init.
+ (setup_reg_equiv): New function.
+ (ira_use_lra_p): New global.
+ (ira): Set up lra_simple_p and ira_conflicts_p. Set up and
+ restore flag_caller_saves and flag_ira_region. Move
+ initialization of ira_obstack and ira_bitmap_obstack upper. Call
+ init_reg_equiv, setup_reg_equiv, and setup_reg_equiv_init instead
+ of initialization of ira_reg_equiv_len, ira_reg_equiv_invariant_p,
+ and ira_reg_equiv_const. Call ira_setup_eliminable_regset with a
+ new argument. Don't flatten IRA IRA for LRA. Don't reassign
+ conflict allocnos for LRA. Call finish_reg_equiv.
+ (do_reload): Prepare code for LRA call. Call LRA.
+ * ira.h (ira_use_lra_p): New external.
+ (struct target_ira): Add members x_ira_class_subset_p
+ x_ira_reg_class_subset, and x_ira_reg_classes_intersect_p.
+ (ira_class_subset_p, ira_reg_class_subset): New macros.
+ (ira_reg_classes_intersect_p): New macro.
+ (struct ira_reg_equiv): New.
+ (ira_setup_eliminable_regset): Add an argument.
+ (ira_expand_reg_equiv, ira_update_equiv_info_by_shuffle_insn): New
+ prototypes.
+ * ira-color.c (color_pass, move_spill_restore, coalesce_allocnos):
+ Use ira_equiv_no_lvalue_p.
+ (coalesce_spill_slots, ira_sort_regnos_for_alter_reg): Ditto.
+ * ira-emit.c (ira_create_new_reg): Call ira_expand_reg_equiv.
+ (generate_edge_moves, change_loop) Use ira_equiv_no_lvalue_p.
+ (emit_move_list): Simplify code. Call
+ ira_update_equiv_info_by_shuffle_insn. Use ira_reg_equiv instead
+ of ira_reg_equiv_invariant_p and ira_reg_equiv_const. Change assert.
+ * ira-int.h (struct target_ira_int): Remove x_ira_class_subset_p
+ and x_ira_reg_classes_intersect_p.
+ (ira_class_subset_p, ira_reg_classes_intersect_p): Remove.
+ (ira_reg_equiv_len, ira_reg_equiv_invariant_p): Ditto.
+ (ira_reg_equiv_const): Ditto.
+ (ira_equiv_no_lvalue_p): New function.
+ * jump.c (true_regnum): Always use hard_regno for subreg_get_info
+ when lra is in progress.
+ * haifa-sched.c (sched_init): Pass new argument to
+ ira_setup_eliminable_regset.
+ * loop-invariant.c (calculate_loop_reg_pressure): Pass new
+ argument to ira_setup_eliminable_regset.
+ * lra.h: New.
+ * lra-int.h: Ditto.
+ * lra.c: Ditto.
+ * lra-assigns.c: Ditto.
+ * lra-constraints.c: Ditto.
+ * lra-coalesce.c: Ditto.
+ * lra-eliminations.c: Ditto.
+ * lra-lives.c: Ditto.
+ * lra-spills.c: Ditto.
+ * Makefile.in (LRA_INT_H): New.
+ (OBJS): Add lra.o, lra-assigns.o, lra-coalesce.o, lra-constraints.o,
+ lra-eliminations.o, lra-lives.o, and lra-spills.o.
+ (dwarf2out.o): Add dependence on ira.h and lra.h.
+ (ira.o): Add dependence on lra.h.
+ (lra.o, lra-assigns.o, lra-coalesce.o, lra-constraints.o): New entries.
+ (lra-eliminations.o, lra-lives.o, lra-spills.o): Ditto.
+ * output.h (alter_subreg): Add new argument.
+ * rtlanal.c (simplify_subreg_regno): Permit mode changes for LRA.
+ Permit ARG_POINTER_REGNUM and STACK_POINTER_REGNUM for LRA.
+ * recog.c (general_operand, register_operand): Accept paradoxical
+ FLOAT_MODE subregs for LRA.
+ (scratch_operand): Accept pseudos for LRA.
+ * rtl.h (lra_in_progress): New external.
+ (debug_bb_n_slim, debug_bb_slim, print_value_slim): New prototypes.
+ (debug_rtl_slim, debug_insn_slim): Ditto.
+ * sdbout.c (sdbout_symbol): Pass new argument to alter_subreg.
+ * sched-vis.c (print_value_slim): New.
+ * target.def (lra_p): New hook.
+ (register_priority): Ditto.
+ (different_addr_displacement_p): Ditto.
+ (spill_class): Ditto.
+ * target-globals.h (this_target_lra_int): New external.
+ (target_globals): New member lra_int.
+ (restore_target_globals): Restore this_target_lra_int.
+ * target-globals.c: Include lra-int.h.
+ (default_target_globals): Add &default_target_lra_int.
+ * targhooks.c (default_lra_p): New function.
+ (default_register_priority): Ditto.
+ (default_different_addr_displacement_p): Ditto.
+ * targhooks.h (default_lra_p): Declare.
+ (default_register_priority): Ditto.
+ (default_different_addr_displacement_p): Ditto.
+ * timevar.def (TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE): New.
+ (TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE): New.
+ * config/arm/arm.c (load_multiple_sequence): Pass new argument to
+ alter_subreg.
+ (store_multiple_sequence): Ditto.
+ * config/i386/i386.h (enum ix86_tune_indices): Add
+ X86_TUNE_GENERAL_REGS_SSE_SPILL.
+ (TARGET_GENERAL_REGS_SSE_SPILL): New macro.
+ * config/i386/i386.c (initial_ix86_tune_features): Set up
+ X86_TUNE_GENERAL_REGS_SSE_SPILL for m_COREI7 and m_CORE2I7.
+ (ix86_lra_p, ix86_register_priority): New functions.
+ (ix86_secondary_reload): Add NON_Q_REGS, SIREG, DIREG.
+ (inline_secondary_memory_needed): Change assert.
+ (ix86_spill_class): New function.
+ (TARGET_LRA_P, TARGET_REGISTER_BANK, TARGET_SPILL_CLASS): New macros.
+ * config/m68k/m68k.c (emit_move_sequence): Pass new argument to
+ alter_subreg.
+ * config/m32r/m32r.c (gen_split_move_double): Ditto.
+ * config/pa/pa.c (pa_emit_move_sequence): Ditto.
+ * config/sh/sh.md: Ditto.
+ * config/v850/v850.c (v850_reorg): Ditto.
+ * config/xtensa/xtensa.c (fixup_subreg_mem): Ditto.
+ * doc/md.texi: Add new interpretation of hint * for LRA.
+ * doc/passes.texi: Describe LRA pass.
+ * doc/tm.texi.in: Add TARGET_LRA_P, TARGET_REGISTER_PRIORITY,
+ TARGET_DIFFERENT_ADDR_DISPLACEMENT_P, and TARGET_SPILL_CLASS.
+ * doc/tm.texi: Update.
+
+2012-10-23 Jan Hubicka <jh@suse.cz>
+
+ * loop-unroll.c (decide_peel_simple): Simple peeling makes sense even
+ with simple loops; bound number of branches only when FDO is not
+ available.
+ (decide_unroll_stupid): Mention that num_loop_branches heuristics
+ is off.
+
+2012-10-23 Nick Clifton <nickc@redhat.com>
+
+ PR target/54660
+ * config/iq2000/iq2000.c (iq2000_function_arg_advance): Suppress
+ compile time warning about pointer printing.
+
+2012-10-23 Joseph Myers <joseph@codesourcery.com>
+
+ * config.gcc (*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu |
+ *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu): Use
+ glibc-c.o in c_target_objs and cxx_target_objs. Use t-glibc in
+ tmake_file. Set target_has_targetcm.
+ (tilegx-*-linux*, tilepro-*-linux*): Append to c_target_objs and
+ cxx_target_objs rather than overriding previous value.
+ * config/glibc-c.c, config/t-glibc: New.
+ * doc/tm.texi.in (TARGET_C_PREINCLUDE): New @hook.
+ * doc/tm.texi: Regenerate.
+ * hooks.c (hook_constcharptr_void_null): New.
+ * hooks.h (hook_constcharptr_void_null): Declare.
+
+2012-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/mips/linux-common.h (STACK_CHECK_STATIC_BUILTIN): Define.
+ (STACK_CHECK_PROTECT): Likewise.
+ * config/mips/mips.h (MIPS_PROLOGUE_TEMP2_REGNUM): Likewise.
+ (MIPS_PROLOGUE_TEMP2): Likewise.
+ * config/mips/mips-protos.h (mips_output_probe_stack_range): Declare.
+ * config/mips/mips.c: Include common/common-target.h.
+ (mips_emit_probe_stack_range): New function.
+ (mips_output_probe_stack_range): Likewise.
+ (mips_expand_prologue): Invoke mips_emit_probe_stack_range if static
+ builtin stack checking is enabled.
+ * config/mips/mips.md (UNSPEC_PROBE_STACK_RANGE): New constant.
+ (probe_stack_range_<P:mode>): New insn.
+
+2012-10-23 Marc Glisse <marc.glisse@inria.fr>
+
+ * tree-ssa-forwprop.c (forward_propagate_into_cond): Handle vectors.
+ * fold-const.c (fold_relational_const): Handle VECTOR_CST.
+ * doc/generic.texi (VEC_COND_EXPR): Document current policy.
+
+2012-10-23 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/54937
+ * tree-ssa-loop-niter.c (record_estimate): Do not try to lower
+ the bound of non-is_exit statements.
+ (maybe_lower_iteration_bound): Do it here.
+ (estimate_numbers_of_iterations_loop): Call it.
+
+2012-10-23 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/54967
+ * cfgloopmanip.c (fix_bb_placements): Add loop_closed_ssa_invalidated;
+ track basic blocks that moved out of their loops.
+ (unloop): Likewise.
+ (remove_path): Update.
+ (fix_loop_placements): Update.
+ * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
+ loop_closed_ssa_invalidated parameter; pass it around.
+ (canonicalize_loop_induction_variables): Update loop closed
+ SSA form if needed.
+ (tree_unroll_loops_completely): Likewise; do irred update out of
+ the outer loop; verify that SSA form is closed.
+ * cfgloop.h (unrloop): Update.
+
+2012-10-23 Terry Guo <terry.guo@arm.com>
+
+ PR target/55019
+ * config/arm/arm.c (thumb1_expand_prologue): Don't push high regs with
+ live argument regs.
+
+2012-10-23 Hans-Peter Nilsson <hp@bitrange.com>
+
+ PR middle-end/55030
+ Revert:
+ * stmt.c (expand_nl_goto_receiver): Remove almost-copy of
+ expand_builtin_setjmp_receiver.
+ (expand_label): Adjust, call expand_builtin_setjmp_receiver
+ with NULL for the label parameter.
+ * builtins.c (expand_builtin_setjmp_receiver): Don't clobber
+ the frame-pointer. Adjust comments.
+ [HAVE_builtin_setjmp_receiver]: Emit builtin_setjmp_receiver
+ only if LABEL is non-NULL.
+
+2012-10-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/55008
+ * gimple-ssa-strength-reduction.c (find_basis_for_candidate):
+ Don't allow a candidate to be a basis for itself under another
+ interpretation.
+
+2012-10-22 Sharad Singhai <singhai@google.com>
+
+ * dumpfile.c (dump_phase_enabled_p): Renamed dump_enabled_p. Update
+ all callers.
+ (dump_enabled_p): A new function to check if any of the dump files
+ is available.
+ (dump_kind_p): Remove check for current_function_decl. Add check for
+ dumpfile and alt_dump_file.
+ * dumpfile.h: Add declaration of dump_enabled_p.
+
2012-10-22 Richard Biener <rguenther@suse.de>
PR lto/55021
* config/i386/i386.c (memory_address_length): Assert that non-null
base or index RTXes are registers. Do not check for REG RTXes.
- Determine addr32 prefix from original base and index RTXes.
- Simplify code.
+ Determine addr32 prefix using SImode_address_operand or
+ from original base and index RTXes. Simplify code.
2012-10-22 Richard Biener <rguenther@suse.de>