1. 23 Jul, 2015 23 commits
    • compiler: Make empty interface types for vars during parse time. · 0f2be732
          
          When making the type for a variable with an empty interface type,
          the parser makes an interface type with a NULL method set and relies
          on later passes to correct this.
          
          For sink variables, which are ignored in later passes, the interface
          method table is never finalized and a compile time assertion is issued.
          Instead, the initial type generated by the parser should be the empty
          interface type.
          
          Fixes golang/go#11579.
          
          Reviewed-on: https://go-review.googlesource.com/12049
      
      From-SVN: r226123
      Ian Lance Taylor committed
    • compiler: Check for errors in the underlying types of unary expressions. · 20886e71
          
          Fixes golang/go#11592.
          
          Reviewed-on: https://go-review.googlesource.com/12044
      
      From-SVN: r226122
      Ian Lance Taylor committed
    • tree-pass.h (get_current_pass_name): Removed. · 0358f01b
      2015-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * tree-pass.h (get_current_pass_name): Removed.
      
      From-SVN: r226121
      Bernd Edlinger committed
    • re PR c++/66572 (Bogus Wlogical-op warning for operands coming from template instantiations) · 04e4dbd0
      	PR c++/66572
      	* pt.c (tsubst_copy_and_build): Add warn_logical_op sentinel.
      
      	* g++.dg/warn/Wlogical-op-2.C: New test.
      
      From-SVN: r226120
      Marek Polacek committed
    • * MAINTAINERS: Update my email address. · 45952786
      From-SVN: r226118
      Bernd Schmidt committed
    • functional_hash.h: Add specializations for __intN types. · 8161e0c3
      * include/bits/functional_hash.h: Add specializations for __intN
      types.
      
      * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp (__gnu_pbds):
      Guard against values that might exceed size_t's precision.
      
      From-SVN: r226117
      DJ Delorie committed
    • c-ubsan.c (ubsan_instrument_division): Use unshare_expr throughout. · 5a5062b8
      	* c-ubsan.c (ubsan_instrument_division): Use unshare_expr throughout.
      	(ubsan_instrument_shift): Likewise.
      
      From-SVN: r226116
      Marek Polacek committed
    • [PR64164] Drop copyrename, use coalescible partition as base when optimizing. · 7eb9f42e
      for  gcc/ChangeLog
      
      	PR rtl-optimization/64164
      	* Makefile.in (OBJS): Drop tree-ssa-copyrename.o.
      	* tree-ssa-copyrename.c: Removed.
      	* opts.c (default_options_table): Drop -ftree-copyrename.  Add
      	-ftree-coalesce-vars.
      	* passes.def: Drop all occurrences of pass_rename_ssa_copies.
      	* common.opt (ftree-copyrename): Ignore.
      	(ftree-coalesce-inlined-vars): Likewise.
      	* doc/invoke.texi: Remove the ignored options above.
      	* gimple-expr.h (gimple_can_coalesce_p): Move declaration
      	* tree-ssa-coalesce.h: ... here.
      	* tree-ssa-uncprop.c: Include tree-ssa-coalesce.h and other
      	headers required by it.
      	* gimple-expr.c (gimple_can_coalesce_p): Allow coalescing
      	across variables when flag_tree_coalesce_vars.  Check register
      	use and promoted modes to allow coalescing.  Moved to
      	tree-ssa-coalesce.c.
      	* tree-ssa-live.c (struct tree_int_map_hasher): Move along
      	with its member functions to tree-ssa-coalesce.c.
      	(var_map_base_init): Likewise.  Renamed to
      	compute_samebase_partition_bases.
      	(partition_view_normal): Drop want_bases parameter.
      	(partition_view_bitmap): Likewise.
      	* tree-ssa-live.h: Adjust declarations.
      	* tree-ssa-coalesce.c: Include explow.h.
      	(build_ssa_conflict_graph): Process PARM_ and RESULT_DECLs's
      	default defs at the entry point.
      	(dump_part_var_map): New.
      	(compute_optimized_partition_bases): New, called by...
      	(coalesce_ssa_name): ... when flag_tree_coalesce_vars, instead
      	of compute_samebase_partition_bases.  Adjust.
      	* alias.c (nonoverlapping_memrefs_p): Disregard gimple-regs.
      	* cfgexpand.c (leader_merge): New.
      	(get_rtl_for_parm_ssa_default_def): New.
      	(set_rtl): Merge exprs and attrs, even for MEMs and non-SSA
      	vars.  Update DECL_RTL for PARM_DECLs and RESULT_DECLs too.
      	(expand_one_stack_var_at): Handle anonymous SSA_NAMEs.  Drop
      	redundant MEM attr setting.
      	(expand_one_stack_var_1): Handle anonymous SSA_NAMEs.  Renamed
      	from...
      	(expand_one_stack_var): ... this.  New wrapper to check and
      	skip already expanded SSA partitions.
      	(record_alignment_for_reg_var): New, factored out of...
      	(expand_one_var): ... this.
      	(expand_one_ssa_partition): New.
      	(adjust_one_expanded_partition_var): New.
      	(expand_one_register_var): Check and skip already expanded SSA
      	partitions.
      	(expand_used_vars): Don't create DECLs for anonymous SSA
      	names.  Expand all SSA partitions, then adjust all SSA names.
      	(pass::execute): Replace the loops that set
      	SA.partition_to_pseudo from partition leaders and cleared
      	DECL_RTL for multi-location variables, and that which used to
      	rename vars and set attrs, with one that clears DECL_RTL and
      	checks that PARMs and RESULTs default_defs match DECL_RTL.
      	* cfgexpand.h (get_rtl_for_parm_ssa_default_def): Declare.
      	* emit-rtl.c (set_reg_attrs_for_parm): Handle NULL decl.
      	* explow.c (promote_ssa_mode): New.
      	* explow.h (promote_ssa_mode): Declare.
      	* expr.c (expand_expr_real_1): Handle anonymous SSA_NAMEs.
      	* function.c: Include cfgexpand.h.
      	(use_register_for_decl): Handle SSA_NAMEs, anonymous or not.
      	(use_register_for_parm_decl): Wrapper for the above to
      	special-case the result_ptr.
      	(rtl_for_parm): Ditto for get_rtl_for_parm_ssa_default_def.
      	(split_complex_args): Take assign_parm_data_all argument.
      	Pass it to rtl_for_parm.  Set up rtl and context for split
      	args.
      	(assign_parms_augmented_arg_list): Adjust.
      	(maybe_reset_rtl_for_parm): Reset DECL_RTL of parms with
      	multiple locations.  Recognize split complex args.
      	(assign_parm_adjust_stack_rtl): Add all and parm arguments,
      	for rtl_for_parm.  For SSA-assigned parms, zero stack_parm.
      	(assign_parm_setup_block): Prefer SSA-assigned location.
      	(assign_parm_setup_reg): Likewise.  Use entry_parm for equiv
      	if stack_parm is NULL.
      	(assign_parm_setup_stack): Prefer SSA-assigned location.
      	(assign_parms): Maybe reset DECL_RTL of params.  Adjust stack
      	rtl before testing for pointer bounds.  Special-case result_ptr.
      	(expand_function_start): Maybe reset DECL_RTL of result.
      	Prefer SSA-assigned location for result and static chain.
      	Factor out DECL_RESULT and SET_DECL_RTL.
      	* tree-outof-ssa.c (insert_value_copy_on_edge): Handle
      	anonymous SSA names.  Use promote_ssa_mode.
      	(get_temp_reg): Likewise.
      	(remove_ssa_form): Adjust.
      	* stor-layout.c (layout_decl): Don't set mem attributes of
      	non-MEMs.
      	* var-tracking.c (dataflow_set_clear_at_call): Take call_insn
      	and get its reg_usage for reg invalidation.
      	(compute_bb_dataflow): Pass it insn.
      	(emit_notes_in_bb): Likewise.
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.dg/guality/pr54200.c: Add -fno-tree-coalesce-vars.
      	* gcc.dg/ssp-1.c: Make counter a register.
      	* gcc.dg/ssp-2.c: Likewise.
      	* gcc.dg/torture/parm-coalesce.c: New.
      
      From-SVN: r226113
      Alexandre Oliva committed
    • re PR target/66217 (PowerPC rotate/shift/mask instructions not optimal) · a34f4f64
      	PR target/66217
      	* config/rs6000/rs6000-protos.h (rs6000_emit_2insn_and): Change
      	prototype.
      	* config/rs6000/rs6000.c (rs6000_emit_dot_insn): New function.
      	(rs6000_emit_2insn_and): Handle dot forms.
      	* config/rs6000/rs6000.md (and<mode>3): Adjust.
      	(*and<mode>3_2insn): Remove TODO.  Adjust.  Add "type" attr.
      	(*and<mode>3_2insn_dot, *and<mode>3_2insn_dot2): New.
      
      From-SVN: r226112
      Segher Boessenkool committed
    • generic-match-head.c: Include cgraph.h. · d057c866
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	* generic-match-head.c: Include cgraph.h.
      	* gimple-match-head.c: Likewise.
      	* tree-ssa-sccvn.c (free_scc_vn): Guard against newly created
      	SSA names.
      	* fold-const.c (fold_binary_loc): Move &A ==/!= &B simplification...
      	* match.pd: ...to a pattern here.  Add &A ==/!= 0 simplification
      	pattern.
      
      From-SVN: r226111
      Richard Biener committed
    • re PR sanitizer/66908 (Uninitialized variable when compiled with UBsan) · dc891fe7
      	PR sanitizer/66908
      	* c-ubsan.c: Include gimplify.h.
      	(ubsan_instrument_division): Unshare OP0 and OP1.
      	(ubsan_instrument_shift): Likewise.
      
      	* c-c++-common/ubsan/pr66908.c: New test.
      
      From-SVN: r226110
      Marek Polacek committed
    • gimple-fold.c (fold_gimple_cond): Do not require folding results to pass valid_gimple_rhs_p. · 62fb67d7
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	* gimple-fold.c (fold_gimple_cond): Do not require folding
      	results to pass valid_gimple_rhs_p.
      	* tree-cfg.h (fold_cond_expr_cond): Remove.
      	* tree-cfg.c (fold_cond_expr_cond): Likewise.
      	(make_edges): Do not call it.
      	* tree-inline.c (tree_function_versioning): Likewise.
      
      From-SVN: r226109
      Richard Biener committed
    • Check TYPE_OVERFLOW_WRAPS for parloops reductions · bcdaf370
      2015-07-23  Tom de Vries  <tom@codesourcery.com>
      
      	* tree-parloops.c (gather_scalar_reductions): Add arg to call to
      	vect_force_simple_reduction.
      	* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Same.
      	(vect_is_simple_reduction_1): Add and handle
      	need_wrapping_integral_overflow parameter.
      	(vect_is_simple_reduction, vect_force_simple_reduction): Add and pass
      	need_wrapping_integral_overflow parameter.
      	(vectorizable_reduction): Add arg to call to vect_is_simple_reduction.
      	* tree-vectorizer.h (vect_force_simple_reduction): Add parameter to decl.
      
      	* gcc.dg/autopar/outer-4.c: Add xfail.
      	* gcc.dg/autopar/outer-5.c: Same.
      	* gcc.dg/autopar/outer-6.c: Same.
      	* gcc.dg/autopar/reduc-2.c: Same.
      	* gcc.dg/autopar/reduc-2char.c: Same.
      	* gcc.dg/autopar/reduc-2short.c: Same.
      	* gcc.dg/autopar/reduc-8.c: Same.
      	* gcc.dg/autopar/uns-outer-4.c: New test.
      	* gcc.dg/autopar/uns-outer-5.c: New test.
      	* gcc.dg/autopar/uns-outer-6.c: New test.
      
      From-SVN: r226107
      Tom de Vries committed
    • re PR tree-optimization/66952 (wrong code at -O2 and -O3 on x86_64-linux-gnu) · f45dacba
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66952
      	* gcc.dg/torture/pr66952.c: Use signed char.
      
      From-SVN: r226104
      Richard Biener committed
    • PR tree-optimization/66926,66951 · b5fd0440
      gcc/
      
      	PR tree-optimization/66926,66951
      	* tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Delete
      	INNER_LOOP and fix up condition for renaming virtual operands.
      
      gcc/testsuite/
      
      	PR tree-optimization/66926,66951
      	* gcc.dg/vect/pr66951.c: New test.
      
      From-SVN: r226103
      Yuri Rumyantsev committed
    • re PR c++/52987 (bogus expected ; before for undeclared type) · 25f05e7b
      /cp
      2015-07-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/52987
      	* parser.c (cp_parser_simple_declaration): Robustify check avoiding
      	redundant error messages.
      
      /testsuite
      2015-07-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/52987
      	* g++.dg/parse/error57.C: New.
      	* g++.dg/expr/string-2.C: Update.
      
      From-SVN: r226097
      Paolo Carlini committed
    • [combine][obvious] Use std::swap in try_combine · 7bed1d3d
      	* combine.c (try_combine): Use std::swap instead of manually
      	swapping.
      
      From-SVN: r226094
      Kyrylo Tkachov committed
    • I6400 scheduling. · 7ccb4e4e
      gcc/
      	* config/mips/i6400.md: New file.
      	* config/mips/mips-cpus.def (mips32r6): Change to PROCESSOR_I6400.
      	(mips64r6): Likewise.
      	(i6400): Define.
      	* config/mips/mips-tables.opt: Regenerate.
      	* config/mips/mips.c (mips_rtx_cost_data): Add I6400 processor.
      	(mips_issue_rate): Add support for i6400.
      	(mips_multipass_dfa_lookahead): Likewise.
      	* config/mips/mips.h (TUNE_I6400): Define.
      	* config/mips/mips.md: Include i6400.md.
      	(processor): Add i6400.
      	* doc/invoke.texi (-march=@var{arch}): Add i6400.
      
      From-SVN: r226090
      Prachi Godbole committed
    • re PR middle-end/66916 (FAIL: gcc.target/arm/pr43920-2.c object-size text <= 54) · 2fde61e3
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/66916
      	* match.pd: Guard widen and sign-change comparison simplification
      	with single_use.
      
      From-SVN: r226089
      Richard Biener committed
    • re PR middle-end/66945 (ICE in generic_simplify (generic-match.c:24790)) · 28537a45
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66945
      	* tree-ssa-propagate.c (substitute_and_fold_dom_walker
      	::before_dom_children): Force the propagators idea of
      	non-executable edges to materialize, not what the folder
      	chooses.
      
      	* gcc.dg/torture/pr66945.c: New testcase.
      
      From-SVN: r226088
      Richard Biener committed
    • gimple.h (gimple_cond_make_false): Use 0 != 0. · bde7d04b
      2015-07-23  Richard Biener  <rguenther@suse.de>
      
      	* gimple.h (gimple_cond_make_false): Use 0 != 0.
      	(gimple_cond_make_true): Use 1 != 0.
      
      From-SVN: r226087
      Richard Biener committed
    • t-msp430 (MULTILIB_DIRNAMES): Remove trailing slashes. · 3f02735b
      * config/msp430/t-msp430 (MULTILIB_DIRNAMES): Remove trailing
      slashes.
      
      * config/msp430/msp430.md (ashlhi3): Optimize shifts of subregs.
      (ashrhi3): Likewise.
      (lshrhi3): Likewise.
      (movhi): Take advantage of zero-extend to load small constants.
      (movpsi): Likewise.
      (and<mode>3): Likewise.
      (zero_extendqihi2): Likewise.
      (zero_extendqisi2): New.
      * config/msp430/constraints.md (N,O): New.
      * config/msp430/msp430.h (WORD_REGISTER_OPERATIONS): Define.
      
      From-SVN: r226085
      DJ Delorie committed
    • Daily bump. · bcf122be
      From-SVN: r226084
      GCC Administrator committed
  2. 22 Jul, 2015 17 commits
    • re PR target/66954 (function multiversioning fails for target "aes") · 54d22142
      libgcc/ChangeLog:
      
      	PR target/66954
      	* config/i386/cpuinfo.c (enum processor_features): Add FEATURE_AES.
      	(get_available_features): Handle FEATURE_AES.
      
      gcc/ChangeLog:
      
      	PR target/66954
      	* config/i386/i386.c (get_builtin_code_for_version): Add P_AES
      	to enum feature_priority and feature_list.
      	(fold_builtin_cpu): Add F_AES to enum processor_features
      	and isa_names_table.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/66954
      	* g++.dg/ext/mv24.C: New test.
      
      From-SVN: r226081
      Uros Bizjak committed
    • re PR libgomp/66950 (FAIL: libgomp.fortran/examples-4/simd-7.f90 -O0 execution test) · 27c4ac7d
      2015-07-22  Maxim Blumenthal  <maxim.blumenthal@intel.com>
      
      	PR libgomp/66950
      	* testsuite/libgomp.c/examples-4/simd-7.c (N): Change to 30 from 45.
      	(fib_ref): New function.
      	(fib): Correct corner cases in the recursion.
      	(main): Replace the non-simd loop with fib_ref call.
      	* testsuite/libgomp.fortran/examples-4/simd-7.f90: (fib_ref): New
      	subroutine.
      	(fibonacci): Lower the parameter N to 30.  Correct accordingly check
      	for the last array element value.  Replace the non-simd loop with
      	fib_ref call.  Remove redundant b_ref array.  Remove the comparison
      	of the last array element with according Fibonacci sequence element.
      	(fib): Correct corner cases in the recursion.
      
      From-SVN: r226080
      Maxim Blumenthal committed
    • unpack.c: Use dg-additional-options rather than dg-options. · 19e18903
      	* gcc.dg/vmx/unpack.c: Use dg-additional-options rather than
      	dg-options.
      
      From-SVN: r226078
      Marek Polacek committed
    • re PR driver/66737 (ld: warning: -z bndplt ignored) · 65defbee
      	PR driver/66737
      	* config/i386/linux-common.h (MPX_SPEC): Use linker option
      	for 64bit target only.
      
      From-SVN: r226076
      Ilya Enkovich committed
    • * config/nvptx/nvptx.c: Expand some comments. · ecf6e535
      From-SVN: r226075
      Bernd Schmidt committed
    • Fix r225926's iso_varying_string ICE regression · 252207bd
      	PR fortran/61831
      	PR fortran/66929
      gcc/fortran/
      	* trans-array.c (gfc_get_proc_ifc_for_expr): Use esym as procedure
      	symbol if available.
      gcc/testsuite/
      	* gfortran.dg/generic_30.f90: New.
      
      From-SVN: r226074
      Mikael Morin committed
    • [Patch ARM/AArch64 obvious] Fix typo: Rename insn_reservation cortex_53_advsimd… · bf976c58
      [Patch ARM/AArch64 obvious] Fix typo: Rename insn_reservation cortex_53_advsimd to cortex_a53_advsimd
      
      gcc/
      
      	* config/arm/cortex-a53 (cortex_53_advsimd): Rename to...
      	(cortex_a53_advsimd): ...This.
      
      From-SVN: r226069
      James Greenhalgh committed
    • genmatch.c (expr::gen_transform): Clarify error message and display location. · 38b52b2f
      2015-07-22  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (expr::gen_transform): Clarify error message
      	and display location.
      
      From-SVN: r226068
      Richard Biener committed
    • genmatch.c (struct operand): Add location member. · 0889c52f
      2015-07-22  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (struct operand): Add location member.
      	(predicate, expr, c_expr, capture, if_expr, with_expr): Adjust
      	constructors.
      	(struct simplify): Remove match_location and result_location
      	members.
      	(elsehwere): Adjust.
      
      From-SVN: r226067
      Richard Biener committed
    • Add scheduling for M51xx core family. · 6dd74463
      gcc/
      	* config/mips/m5100.md: New file.
      	* config/mips/mips-cpus.def (m5100, m5101): Define.
      	* config/mips/mips-tables.opt: Regenerate.
      	* config/mips/mips.c (mips_rtx_cost_data): Add costs for m5100.
      	* config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=m5100 and
      	-march=m5101 to -mips32r5.
      	(MIPS_ARCH_FLOAT_SPEC): Map -m5101 to -msoft-float.
      	(MIPS_ISA_NAN2008_SPEC): Map -march=m51* to -mnan=2008 if
      	!-msoft-float.
      	* config/mips/mips.md: Include m5100.md.
      	(processor): Add m5100.
      	* doc/invoke.texi (-march=@var{arch}): Add m5100, m5101.
      
      From-SVN: r226066
      Prachi Godbole committed
    • Add -march=interaptiv. · 8ced5d2d
      gcc/
      	* config/mips/mips-cpus.def (interaptiv): Define.
      	* config/mips/mips-tables.opt: Regenerate.
      	* config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=interaptiv to
      	-mips32r2.
      	(BASE_DRIVER_SELF_SPECS): Likewise but map to -mdsp.
      	* doc/invoke.texi (-march=@var{arch}): Add interaptiv.
      
      From-SVN: r226065
      Robert Suchanek committed
    • [AArch64] PR target/63521 Define REG_ALLOC_ORDER · 38996bc9
      2015-07-22  Jiong Wang  <jiong.wang@arm.com>
       
      gcc/
        PR target/63521
        * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
        (HONOR_REG_ALLOC_ORDER): Define.
      
      From-SVN: r226064
      Jiong Wang committed
    • linux-atomic.c (<asm/unistd.h>): Remove #include. · 20ca17e4
      2015-07-22  Chung-Lin Tang  <cltang@codesourcery.com>
      
      	libgcc/
      	* config/nios2/linux-atomic.c (<asm/unistd.h>): Remove #include.
      	(EFAULT,EBUSY,ENOSYS): Delete unused #defines.
      
      From-SVN: r226063
      Chung-Lin Tang committed
    • re PR tree-optimization/66952 (wrong code at -O2 and -O3 on x86_64-linux-gnu) · 8bb8e838
      2015-07-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66952
      	* tree-ssa-ifcombine.c (pass_tree_ifcombine::execute): For
      	blocks we end up executing unconditionally reset all SSA
      	info such as range and alignment.
      	* tree-ssanames.h (reset_flow_sensitive_info): Declare.
      	* tree-ssanames.c (reset_flow_sensitive_info): New function.
      
      	* gcc.dg/torture/pr66952.c: New testcase.
      
      From-SVN: r226062
      Richard Biener committed
    • aarch64-simd.md (vec_store_lanesoi_lane<mode>): Fix typo in attribute. · b1db706a
      2015-07-22  Charles Baylis  <charles.baylis@linaro.org>
      
      	* config/aarch64/aarch64-simd.md (vec_store_lanesoi_lane<mode>): Fix
      	typo in attribute.
      
      From-SVN: r226061
      Charles Baylis committed
    • genmatch.c (parser::parse_result): Properly handle match with result operands and conditions. · d3b0b692
      2015-07-22  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (parser::parse_result): Properly handle
      	match with result operands and conditions.
      
      From-SVN: r226060
      Richard Biener committed
    • re PR target/63870 ([Aarch64] [ARM] Errors in use of NEON intrinsics are reported incorrectly) · 4d0a0237
      gcc/ChangeLog:
      
      2015-07-22  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
      	Add qualifier_struct_load_store_lane_index.
      	(aarch64_types_loadstruct_lane_qualifiers): Use
      	qualifier_struct_load_store_lane_index for lane index argument for
      	last argument.
      	(aarch64_types_storestruct_lane_qualifiers): Ditto.
      	(builtin_simd_arg): Add SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
      	(aarch64_simd_expand_args): Add new argument describing mode of
      	builtin. Check lane bounds for arguments with
      	SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
      	(aarch64_simd_expand_builtin): Emit error for incorrect lane indices
      	if marked with SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
      	(aarch64_simd_expand_builtin): Handle arguments with
      	qualifier_struct_load_store_lane_index. Pass machine mode of builtin to
      	aarch64_simd_expand_args.
      	* config/aarch64/aarch64-simd-builtins.def: Declare ld[234]_lane and
      	vst[234]_lane with BUILTIN_VALLDIF.
      	* config/aarch64/aarch64-simd.md:
      	(aarch64_vec_load_lanesoi_lane<mode>): Use VALLDIF iterator. Perform
      	endianness reversal on lane index.
      	(aarch64_vec_load_lanesci_lane<mode>): Ditto.
      	(aarch64_vec_load_lanesxi_lane<mode>): Ditto.
      	(vec_store_lanesoi_lane<mode>): Use VALLDIF iterator.
      	(vec_store_lanesci_lane<mode>): Ditto.
      	(vec_store_lanesxi_lane<mode>): Ditto.
      	(aarch64_ld2_lane<mode>): Use VALLDIF iterator. Remove endianness
      	reversal of lane index.
      	(aarch64_ld3_lane<mode>): Ditto.
      	(aarch64_ld4_lane<mode>): Ditto.
      	(aarch64_st2_lane<mode>): Ditto.
      	(aarch64_st3_lane<mode>): Ditto.
      	(aarch64_st4_lane<mode>): Ditto.
      	* config/aarch64/arm_neon.h (__LD2_LANE_FUNC): Rename mode parameter
      	to qmode. Add new mode parameter. Update uses.
             	(__LD3_LANE_FUNC): Ditto.
      	(__LD4_LANE_FUNC): Ditto.
      	(__ST2_LANE_FUNC): Ditto.
      	(__ST3_LANE_FUNC): Ditto.
      	(__ST4_LANE_FUNC): Ditto.
      
      gcc/testsuite/ChangeLog:
      
      2015-07-22  Charles Baylis  <charles.baylis@linaro.org>
      
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_p8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s8_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u16_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u32_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u64_indices_1.c: New
      	test.
              * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u8_indices_1.c: New
      	test.
      
      From-SVN: r226059
      Charles Baylis committed