1. 24 May, 2016 10 commits
    • re PR tree-optimization/71252 (ICE: verify_ssa failed : definition in block 7… · ca6f60bc
      re PR tree-optimization/71252 (ICE: verify_ssa failed : definition in block 7 does not dominate use in block 6)
      
      gcc/testsuite/ChangeLog:
      
      2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71252
      	* gfortran.dg/pr71252.f90: New test.
      
      gcc/ChangeLog:
      
      2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71252
      	* tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Add stmt_to_insert after
      	build_and_add_sum creates new use stmt.
      
      From-SVN: r236634
      Kugan Vivekanandarajah committed
    • Avoid unnecessary peeling for gaps with LD3 · d3465d72
      vectorizable_load forces peeling for gaps if the vectorisation factor
      is not a multiple of the group size, since in that case we'd normally load
      beyond the original scalar accesses but drop the excess elements as part
      of a following permute:
      
                if (loop_vinfo
                    && ! STMT_VINFO_STRIDED_P (stmt_info)
                    && (GROUP_GAP (vinfo_for_stmt (first_stmt)) != 0
                        || (!slp && vf % GROUP_SIZE (vinfo_for_stmt (first_stmt)) != 0)))
      
      This isn't necessary for LOAD_LANES though, since it loads only the
      data needed and does the permute itself.
      
      Tested on aarch64-linux-gnu and x86_64-linux-gnu.
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_load): Reorder checks so that
      	load_lanes/grouped_load classification comes first.  Don't check
      	whether the vectorization factor is a multiple of the group size
      	for load_lanes.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-load-lanes-peeling-1.c: New test.
      
      From-SVN: r236632
      Richard Sandiford committed
    • Fix GROUP_GAP for single-element interleaving · 836dbb1a
      vectorizable_load had a curious "force_peeling" variable, with no
      comment explaining why we need it for single-element interleaving
      but not for other cases.  I think it's simply because we weren't
      initialising the GROUP_GAP correctly for single loads.
      
      Tested on aarch64-linux-gnu and x86_64-linux-gnu.
      
      gcc/
      	* tree-vect-data-refs.c (vect_analyze_group_access_1): Set
      	GROUP_GAP for single-element interleaving.
      	* tree-vect-stmts.c (vectorizable_load): Remove force_peeling
      	variable.
      
      From-SVN: r236631
      Richard Sandiford committed
    • re PR middle-end/70434 (adding an extraneous cast to vector type results in inferior code) · f17a223d
      2016-05-24  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/70434
      	PR c/69504
      	c-family/
      	* c-common.h (convert_vector_to_pointer_for_subscript): Rename to ...
      	(convert_vector_to_array_for_subscript): ... this.
      	* c-common.c (convert_vector_to_pointer_for_subscript): Use a
      	VIEW_CONVERT_EXPR to an array type.  Rename to ...
      	(convert_vector_to_array_for_subscript): ... this.
      
      	cp/
      	* expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
      	* constexpr.c (cxx_eval_array_reference): Handle indexed
      	vectors.
      	* typeck.c (cp_build_array_ref): Adjust.
      
      	c/
      	* c-typeck.c (build_array_ref): Do not complain about indexing
      	non-lvalue vectors.  Adjust for function name change.
      
      	* tree-ssa.c (non_rewritable_mem_ref_base): Make sure to mark
      	bases which are accessed with non-invariant indices.
      	* gimple-fold.c (maybe_canonicalize_mem_ref_addr): Re-write
      	constant index ARRAY_REFs of vectors into BIT_FIELD_REFs.
      
      	* c-c++-common/vector-subscript-4.c: New testcase.
      	* c-c++-common/vector-subscript-5.c: Likewise.
      
      From-SVN: r236630
      Richard Biener committed
    • re PR libfortran/71123 (Namelist read failure on Windows) · 64fc0cd9
      2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/71123
      	* io/list_read (eat_spaces): Eat '\r' as part of spaces.
              fix change log
      
      From-SVN: r236629
      Jerry DeLisle committed
    • re PR libfortran/70684 (incorrect reading of values from file on Windows) · e3f36534
      2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/70684
      	* io/list_read (eat_spaces): Eat '\r' as part of spaces.
      
      	* gfortran.dg/namelist_90.f: New test
      
      From-SVN: r236628
      Jerry DeLisle committed
    • re PR fortran/66461 (ICE on missing end program in fixed source) · 85d5c27d
      2016-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/66461
      	* scanner.c (gfc_next_char_literal): Clear end_flag when adjusting
      	current locus back to old_locus.
      
      	* gfortran.dg/unexpected_eof.f: New test
      
      From-SVN: r236627
      Jerry DeLisle committed
    • PR c++/70344 - ICE with recursive constexpr · 4ddcdbf9
      	* constexpr.c (cxx_eval_call_expression): Check for
      	fun == current_function_decl again.
      
      From-SVN: r236625
      Jason Merrill committed
    • Daily bump. · 40e61ad8
      From-SVN: r236623
      GCC Administrator committed
    • re PR tree-optimization/71170 (ICE in rewrite_expr_tree, at tree-ssa-reassoc.c:3898) · d2db36dd
      gcc/ChangeLog:
      
      2016-05-24  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/71170
      	* tree-ssa-reassoc.c (struct operand_entry): Add field stmt_to_insert.
      	(add_to_ops_vec): Add stmt_to_insert.
      	(add_repeat_to_ops_vec): Init stmt_to_insert.
      	(insert_stmt_before_use): New.
      	(transform_add_to_multiply): Remove mult_stmt insertion and add it to ops vector.
      	(get_ops): Init stmt_to_insert.
      	(maybe_optimize_range_tests): Likewise.
      	(rewrite_expr_tree): Insert stmt_to_insert before use stmt.
      	(rewrite_expr_tree_parallel): Likewise.
      	(reassociate_bb): Likewise.
      
      From-SVN: r236619
      Kugan Vivekanandarajah committed
  2. 23 May, 2016 24 commits
  3. 22 May, 2016 6 commits
    • avx512bw-kunpckdq-1.c (avx512bw_test): Use "m" constraint instead of "r". · 57748705
      	* gcc.target/i386/avx512bw-kunpckdq-1.c (avx512bw_test): Use "m"
      	constraint instead of "r".
      	* gcc.target/i386/avx512f-additional-reg-names.c (foo): Use vpxord
      	insn instead of vxorpd.
      	* gcc.target/i386/strinline.c: Add dg-require-effective-target ia32.
      
      From-SVN: r236571
      Jakub Jelinek committed
    • revert: re PR target/70738 (Add -mgeneral-regs-only option) · 41a6c071
      Revert:
      
      gcc/
      
      	PR target/70738
      	* common/config/i386/i386-common.c
      	(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): New.
      	(ix86_handle_option): Disable MPX, MMX, SSE and x87 instructions
      	for -mgeneral-regs-only.
      	* config/i386/i386.c (ix86_option_override_internal): Don't
      	enable x87 instructions if only the general registers are
      	allowed.
      	* config/i386/i386.opt: Add -mgeneral-regs-only.
      	* doc/invoke.texi: Document -mgeneral-regs-only.
      
      gcc/testsuite/
      
      	PR target/70738
      	* gcc.target/i386/pr70738-1.c: Likewise.
      	* gcc.target/i386/pr70738-2.c: Likewise.
      	* gcc.target/i386/pr70738-3.c: Likewise.
      	* gcc.target/i386/pr70738-4.c: Likewise.
      	* gcc.target/i386/pr70738-5.c: Likewise.
      	* gcc.target/i386/pr70738-6.c: Likewise.
      	* gcc.target/i386/pr70738-7.c: Likewise.
      	* gcc.target/i386/pr70738-8.c: Likewise.
      	* gcc.target/i386/pr70738-9.c: Likewise.
      
      From-SVN: r236570
      Uros Bizjak committed
    • sse.md (vec_set_lo_<mode><mask_name>, [...]): Add && <mask_avx512dq_condition> condition. · af120161
      	* config/i386/sse.md (vec_set_lo_<mode><mask_name>,
      	vec_set_hi_<mode><mask_name>): Add && <mask_avx512dq_condition>
      	condition.  For !TARGET_AVX512DQ, emit 32x4 instruction instead
      	of 64x2.
      
      	* gcc.target/i386/avx512dq-vinsert-1.c: New test.
      	* gcc.target/i386/avx512vl-vinsert-1.c: New test.
      
      From-SVN: r236569
      Jakub Jelinek committed
    • sse.md (vec_set_lo_v16hi, [...]): Add alternative with v constraint instead of x… · 355023ce
      sse.md (vec_set_lo_v16hi, [...]): Add alternative with v constraint instead of x and vinserti32x4 insn.
      
      	* config/i386/sse.md (vec_set_lo_v16hi, vec_set_hi_v16hi,
      	vec_set_lo_v32qi, vec_set_hi_v32qi): Add alternative with
      	v constraint instead of x and vinserti32x4 insn.
      
      	* gcc.target/i386/avx512vl-vinserti32x4-3.c: New test.
      
      From-SVN: r236568
      Jakub Jelinek committed
    • sse.md (i128vldq): New mode iterator. · 3b48574c
      	* config/i386/sse.md (i128vldq): New mode iterator.
      	(avx2_vbroadcasti128_<mode>, avx_vbroadcastf128_<mode>): Add
      	avx512dq and avx512vl alternatives.
      
      	* gcc.target/i386/avx512dq-vbroadcast-2.c: New test.
      	* gcc.target/i386/avx512vl-vbroadcast-2.c: New test.
      
      From-SVN: r236567
      Jakub Jelinek committed
    • sse.md (avx2_vec_dupv4df): Use v instead of x constraint, use maybe_evex prefix instead of vex. · 94ad56c7
      	* config/i386/sse.md (avx2_vec_dupv4df): Use v instead of x
      	constraint, use maybe_evex prefix instead of vex.
      	(vec_dupv4sf): Use v constraint instead of x for output
      	operand except for noavx alternative, use Yv constraint
      	instead of x for input.  Use maybe_evex prefix instead of vex.
      	(*vec_dupv4si): Likewise.
      	(*vec_dupv2di): Likewise.
      
      	* gcc.target/i386/avx512vl-vbroadcast-1.c: New test.
      
      From-SVN: r236566
      Jakub Jelinek committed