PR target/63542
	* config/i386/i386.c (ix86_pic_register_p): Also return
	true if x is a hard register with ORIGINAL_REGNO equal to
	pic_offset_table_rtx pseudo REGNO.
	(ix86_delegitimize_address): For ix86_use_pseudo_pic_reg ()
	after reload, subtract GOT_SYMBOL_NAME symbol if possible.

	* gcc.target/i386/pr63542-1.c: New test.
	* gcc.target/i386/pr63542-2.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216540 138bc75d-0d04-0410-961f-82ee72b054a4
	PR target/63594
	* config/i386/i386.c (ix86_expand_vector_init_duplicate): For
	V{8HI,16QI,16HI,32QI}mode call ix86_vector_duplicate_value
	even for just TARGET_AVX2, not only for
	TARGET_AVX512VL && TARGET_AVX512BW.  For V{32HI,64QI}mode,
	call ix86_vector_duplicate_value only if TARGET_AVX512BW,
	otherwise build it using concatenation of 256-bit
	broadcast.
	* config/i386/sse.md (AVX_VEC_DUP_MODE): Moved after
	avx512 broadcast patterns.
	(vec_dup<mode>): Likewise.  For avx2 use
	v<sseintprefix>broadcast<bcstscalarsuff> instead of
	vbroadcast<ssescalarmodesuffix>.
	(AVX2_VEC_DUP_MODE): New mode iterator.
	(*vec_dup<mode>): New TARGET_AVX2 define_insn with
	AVX2_VEC_DUP_MODE iterator, add a splitter for that.

	* gcc.dg/pr63594-1.c: New test.
	* gcc.dg/pr63594-2.c: New test.
	* gcc.target/i386/sse2-pr63594-1.c: New test.
	* gcc.target/i386/sse2-pr63594-2.c: New test.
	* gcc.target/i386/avx-pr63594-1.c: New test.
	* gcc.target/i386/avx-pr63594-2.c: New test.
	* gcc.target/i386/avx2-pr63594-1.c: New test.
	* gcc.target/i386/avx2-pr63594-2.c: New test.
	* gcc.target/i386/avx512f-pr63594-1.c: New test.
	* gcc.target/i386/avx512f-pr63594-2.c: New test.
	* gcc.target/i386/avx512f-vec-init.c: Adjust expected
	insn counts.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216541 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-22  Richard Biener  <rguenther@suse.de>
	Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

	* Makefile.in (OBJS): Add gimple-match.o and generic-match.o.
	(MOSTLYCLEANFILES): Add gimple-match.c and generic-match.c.
	(gimple-match.c): Generate by triggering s-match.
	(generic-match.c): Likewise.
	(s-match): Rule to build gimple-match.c and generic-match.c
	by running the genmatch generator program.
	(build/hash-table.o): Dependencies to build hash-table.c for the host.
	(build/genmatch.o): Dependencies to build genmatch.
	(genprog): Add match.
	(build/genmatch): Likewise.
	(TEXI_GCCINT_FILES): Add match-and-simplify.texi.
	* generic-match-head.c: New file.
	* gimple-match-head.c: Likewise.
	* gimple-match.h: Likewise.
	* genmatch.c: Likewise.
	* match.pd: Likewise.
	* builtins.h (fold_builtin_n): Export.
	* builtins.c (fold_builtin_n): Likewise.
	* gimple-fold.h (gimple_build): Declare various overloads.
	(gimple_simplify): Likewise.
	(gimple_convert): Re-implement in terms of gimple_build.
	* gimple-fold.c (gimple_convert): Remove.
	(gimple_build): New functions.

	* doc/match-and-simplify.texi: New file.
	* doc/gccint.texi: Add menu item Match and Simplify and include
	match-and-simplify.texi.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216542 138bc75d-0d04-0410-961f-82ee72b054a4
[Dejagnu] fix gcc-dg-prune glitch when filtering "relocation truncation" error

  gcc/testsuite/
    * lib/compat.exp (compat-run): Remove "unresolved".
    * lib/gcc-defs.exp (${tools}_check_compile): Update code logic for
    unsupported testcase.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216543 138bc75d-0d04-0410-961f-82ee72b054a4
[AArch64] Update target testcases for gnu11

  gcc/testsuite/
    * gcc.target/aarch64/pic-constantpool1.c: Add explicit declaration.
    * gcc.target/aarch64/pic-symrefplus.c: Likewise.
    * gcc.target/aarch64/reload-valid-spoff.c: Likewise.
    * gcc.target/aarch64/vect.x: Likewise.
    * gcc.target/aarch64/vect-ld1r.x: Add return type.
    * gcc.target/aarch64/vect-fmax-fmin.c: Likewise.
    * gcc.target/aarch64/vect-fp.c: Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216544 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-22  Richard Biener  <rguenther@suse.de>

	* Makefile.in (s-match): Adjust dependencies to only catch
	match.pd.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216545 138bc75d-0d04-0410-961f-82ee72b054a4
[ARM] Add ACLE 2.0 predefined marco __ARM_FEATURE_IDIV

2014-10-22  Renlin Li <renlin.li@arm.com>

  gcc/
    * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define
    __ARM_FEATURE_IDIV__.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216547 138bc75d-0d04-0410-961f-82ee72b054a4
[ARM] Add missing '\' in macro define.

  gcc/
    * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add missing '\'.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216548 138bc75d-0d04-0410-961f-82ee72b054a4
	* config/avr/lib1funcs.S (__do_global_dtors): Fix wrong code
	introduced with 2014-10-21 trunk r216525.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216550 138bc75d-0d04-0410-961f-82ee72b054a4
New syntax for -fsanitize-recover.

2014-10-22  Jakub Jelinek  <jakub@redhat.com>
	    Yury Gribov  <y.gribov@samsung.com>

gcc/
	* common.opt (flag_sanitize_recover): New variable.
	(fsanitize-recover): Remove Var/Init, deprecate.
	(fsanitize-recover=): New option.
	* doc/invoke.texi (fsanitize-recover): Update docs.
	* opts.c (finish_options): Use opts->x_flag_sanitize
	instead of flag_sanitize.  Prohibit -fsanitize-recover
	for anything besides UBSan.  Formatting.
	(common_handle_option): Handle OPT_fsanitize_recover_
	and OPT_fsanitize_recover.  Use opts->x_flag_sanitize
	instead of flag_sanitize.
	* asan.c (pass_sanopt::execute): Fix up formatting.
	* ubsan.c (ubsan_expand_bounds_ifn, ubsan_expand_null_ifn,
	ubsan_expand_objsize_ifn, ubsan_build_overflow_builtin,
	instrument_bool_enum_load, ubsan_instrument_float_cast,
	instrument_nonnull_arg, instrument_nonnull_return): Check
	bits in flag_sanitize_recover bitmask instead of
	flag_sanitize_recover as bool flag.

gcc/c-family/
	* c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift,
	ubsan_instrument_vla): Check bits in flag_sanitize_recover bitmask
	instead of flag_sanitize_recover as bool flag.

gcc/testsuite/
	* c-c++-common/ubsan/align-1.c: Update cmdline options.
	* c-c++-common/ubsan/align-3.c: Likewise.
	* c-c++-common/ubsan/bounds-1.c: Likewise.
	* c-c++-common/ubsan/div-by-zero-7.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-7.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
	* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
	* c-c++-common/ubsan/nonnull-2.c: Likewise.
	* c-c++-common/ubsan/nonnull-3.c: Likewise.
	* c-c++-common/ubsan/object-size-3.c: Likewise.
	* c-c++-common/ubsan/overflow-1.c: Likewise.
	* c-c++-common/ubsan/overflow-add-1.c: Likewise.
	* c-c++-common/ubsan/overflow-add-3.c: Likewise.
	* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
	* c-c++-common/ubsan/overflow-mul-3.c: Likewise.
	* c-c++-common/ubsan/overflow-negate-2.c: Likewise.
	* c-c++-common/ubsan/overflow-sub-1.c: Likewise.
	* c-c++-common/ubsan/pr59503.c: Likewise.
	* c-c++-common/ubsan/pr60613-1.c: Likewise.
	* c-c++-common/ubsan/save-expr-1.c: Likewise.
	* c-c++-common/ubsan/shift-3.c: Likewise.
	* c-c++-common/ubsan/shift-6.c: Likewise.
	* c-c++-common/ubsan/undefined-1.c: Likewise.
	* c-c++-common/ubsan/vla-2.c: Likewise.
	* c-c++-common/ubsan/vla-3.c: Likewise.
	* c-c++-common/ubsan/vla-4.c: Likewise.
	* g++.dg/ubsan/cxx11-shift-1.C: Likewise.
	* g++.dg/ubsan/return-2.C: Likewise.
	* c-c++-common/ubsan/recovery-1.c: New test.
	* c-c++-common/ubsan/recovery-2.c: New test.
	* c-c++-common/ubsan/recovery-3.c: New test.
	* c-c++-common/ubsan/recovery-common.inc: New file.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216552 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* recog.h (extract_constrain_insn): Declare.
	* recog.c (extract_constrain_insn): New function.
	* lra.c (check_rtl): Use it.
	* postreload.c (reload_cse_simplify_operands): Likewise.
	* reg-stack.c (check_asm_stack_operands): Likewise.
	(subst_asm_stack_regs): Likewise.
	* regcprop.c (copyprop_hardreg_forward_1): Likewise.
	* regrename.c (build_def_use): Likewise.
	* sel-sched.c (get_reg_class): Likewise.
	* config/arm/arm.c (note_invalid_constants): Likewise.
	* config/s390/predicates.md (execute_operation): Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216553 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* doc/md.texi: Document "preferred_for_size" and "preferred_for_speed"
	attributes.
	* genattr.c (main): Handle "preferred_for_size" and
	"preferred_for_speed" in the same way as "enabled".
	* recog.h (bool_attr): New enum.
	(target_recog): Replace x_enabled_alternatives with x_bool_attr_masks.
	(get_preferred_alternatives, check_bool_attrs): Declare.
	* recog.c (have_bool_attr, get_bool_attr, get_bool_attr_mask_uncached)
	(get_bool_attr_mask, get_preferred_alternatives, check_bool_attrs):
	New functions.
	(get_enabled_alternatives): Use get_bool_attr_mask.
	* ira-costs.c (record_reg_classes): Use get_preferred_alternatives
	instead of recog_data.enabled_alternatives.
	* ira.c (ira_setup_alts): Likewise.
	* postreload.c (reload_cse_simplify_operands): Likewise.
	* config/i386/i386.c (ix86_legitimate_combined_insn): Likewise.
	* ira-lives.c (preferred_alternatives): New variable.
	(process_bb_node_lives): Set it.
	(check_and_make_def_conflict, make_early_clobber_and_input_conflicts)
	(single_reg_class, ira_implicitly_set_insn_hard_regs): Use it instead
	of recog_data.enabled_alternatives.
	* lra-int.h (lra_insn_recog_data): Replace enabled_alternatives
	to preferred_alternatives.
	* lra-constraints.c (process_alt_operands): Update accordingly.
	* lra.c (lra_set_insn_recog_data): Likewise.
	(lra_update_insn_recog_data): Assert check_bool_attrs.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216554 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* recog.h (constrain_operands): Add an alternative_mask parameter.
	(constrain_operands_cached): Likewise.
	(get_preferred_alternatives): Declare new form.
	* recog.c (get_preferred_alternatives): New bb-taking instance.
	(constrain_operands): Take the set of available alternatives as
	a parameter.
	(check_asm_operands, insn_invalid_p, extract_constrain_insn)
	(extract_constrain_insn_cached): Update calls to constrain_operands.
	* caller-save.c (reg_save_code): Likewise.
	* ira.c (setup_prohibited_mode_move_regs): Likewise.
	* postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
	* ree.c (combine_reaching_defs): Likewise.
	* reload.c (can_reload_into): Likewise.
	* reload1.c (reload, reload_as_needed, inc_for_reload): Likewise.
	(gen_reload_chain_without_interm_reg_p, emit_input_reload_insns)
	(emit_insn_if_valid_for_reload): Likewise.
	* reorg.c (fill_slots_from_thread): Likewise.
	* config/i386/i386.c (ix86_attr_length_address_default): Likewise.
	* config/pa/pa.c (pa_can_combine_p): Likewise.
	* config/rl78/rl78.c (insn_ok_now): Likewise.
	* config/sh/sh.md (define_peephole2): Likewise.
	* final.c (final_scan_insn): Update call to constrain_operands_cached.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216555 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* recog.h (recog_data_d): Remove enabled_alternatives.
	* recog.c (extract_insn): Don't set it.
	* reload.c (find_reloads): Call get_enabled_alternatives.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216556 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	* lra.c (lra): Remove call to recog_init.
	* config/i386/i386.md (preferred_for_speed): New attribute
	(*float<SWI48:mode><MODEF:mode>2_sse): Override it instead of
	"enabled".  Remove check for sched1.

gcc/testsuite/
	* gcc.target/i386/conversion-2.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216557 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-22  Andrew MacLeod  <amacleod@redhat.com>

	* cfgbuild.h: New.  Add prototypes for cfgbuild.c.
	* cfgcleanup.h: New.  Add prototypes for cfgcleanup.c.
	* cfgloopmanip.h: New.  Add prototypes for cfgloopmanip.c.
	* dominance.h: New.  Add prototypes for dominance.c.
	* cfgloop.h: Move some prototypes/enum to cfgloopmanip.h and include it.
	* cfghooks.h: (struct profile_record) Relocate here.
	Relocate 2 prototypes from basic-block.h.
	* basic-block.h: Move prototypes and struct to new header files.
	Include cfgbuild.h, cfgcleanup.h, and dominance.h.
	* rtl.h: Move a few prototypes to new header files.
	* cfgcleanup.c (merge_memattrs): Make static.
	* genopinit.c (main): Add predict.h to list of includes.
	* predict.h: Update prototype list to match predict.c.
	* predict.c (maybe_hot_count_p): Export.
	(cgraph_edge::maybe_hot_p): Move to cgraph.c.
	(cgraph_node::optimize_for_size_p): Move to cgraph.h.
	* cgraph.h (cgraph_node::optimize_for_size_p): Relocate here.
	* cgraph.c (cgraph_edge::maybe_hot_p): Relocate here.
	* profile.h: Adjust prototypes.
	* ifcvt.h: New.  Relocate struct ce_if_block here.
	* ifcvt.c: Include ifcvt.h.

	* config/frv/frv.c: Include ifcvt.h.
	* config/frv/frv-protos.h: Add 'struct' to ce_if_block * parameters.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216559 138bc75d-0d04-0410-961f-82ee72b054a4
Reset global state ipa-icf.c:optimizer

gcc/
	* ipa-icf.c (ipa_icf_driver): Set optimizer to NULL when done.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216561 138bc75d-0d04-0410-961f-82ee72b054a4
	PR tree-optimization/63530
	tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Set
	pointer alignment according to DR_MISALIGNMENT.
	gcc.dg/vect/pr63530.c: New testcase.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216562 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog:

2014-10-22  Dehao Chen  <dehao@google.com>

        * auto-profile.c: Change order of header files.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216563 138bc75d-0d04-0410-961f-82ee72b054a4
Do not build soft-fp code at all for powerpc64-linux-gnu.

When I added support for using soft-fp in libgcc
<https://gcc.gnu.org/ml/gcc-patches/2006-03/msg00689.html>, libgcc
configuration was still done in the gcc/ directory, meaning that the
variables set in makefile fragments could not depend on the multilib
being built.  Thus, building the soft-fp code for powerpc64-linux-gnu
was disabled in the same way as had been done with fp-bit: the code
was built, but with #ifndef __powerpc64__ wrappers around it so that
the resulting objects were empty.

Now that libgcc configuration is done in the toplevel libgcc
directory, such uses of softfp_wrap_start / softfp_wrap_end are better
replaced by configure-time conditionals that determine whether to use
soft-fp for a given multilib.  This patch does so for
powerpc*-*-linux*.  The same would appear to apply to
powerpc*-*-freebsd* (using rs6000/t-freebsd64), but I have not made
any changes there.  t-ppc64-fp is also used by AIX targets, but they
don't use soft-fp anyway so the changes are of no consequence to them.

The same principle of replacing softfp_wrap_start / softfp_wrap_end
with configure-time conditionals also applies to
softfp_exclude_libgcc2, which was intended for cases where soft-fp is
being used on hard-float multilibs and so it is desirable on those
multilibs for a few functions to come from libgcc2.c rather than
soft-fp (but the soft-fp versions would be more efficient on
soft-float multilibs).  Now we have hardfp.c and t-hardfp, those are
better to use in that case, to minimize the size of the bulk of the
functions that are only present for ABI compatibility and should never
be called by newly compiled code.

I intend followup patches to switch 32-bit hard-float multilibs to use
t-hardfp as far as possible (for all non-libgcc2.c operations for
classic hard float; for all except __unord* for e500v2; for all SFmode
operations except __unordsf2 for e500v1).  After that will come making
the soft-fp operations, in the remaining cases for which they are
built because they are actually needed for code compiled by current
GCC, into compat symbols when building for glibc 2.19 or later, so
that the glibc versions (with exception and rounding mode support) get
used instead (2.19 or later is needed for all the functions to be
exported from glibc as non-compat symbols).  In turn, that is required
before implementing TARGET_ATOMIC_ASSIGN_EXPAND_FENV for soft-float
and e500, as that can only be properly effective when GCC-compiled
code is actually interoperating correctly with the exception and
rounding mode state used by <fenv.h> functions.

Tested with no regressions with cross to powerpc64-linux-gnu (in
addition, verified that stripped libgcc_s.so.1 is identical before and
after the patch).

	* config.host (powerpc*-*-linux*): Only use soft-fp for 32-bit
	configurations.
	* config/rs6000/t-ppc64-fp (softfp_wrap_start, softfp_wrap_end):
	Remove variables.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216564 138bc75d-0d04-0410-961f-82ee72b054a4