1. 24 May, 2016 36 commits
    • PR c++/70584 - don't force indirection to an rvalue · 66f90a17
      	* cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
      	returns a decl.
      	(cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
      
      From-SVN: r236670
      Jason Merrill committed
    • c++config (_GLIBCXX14_USE_CONSTEXPR): New. · 732eb076
      2016-05-24  François Dumont  <fdumont@gcc.gnu.org>
      
      	* include/bits/c++config (_GLIBCXX14_USE_CONSTEXPR): New.
      	* include/bits/hashtable_policy.h
      	(_Prime_rehash_policy::__has_load_factor): New. Mark rehash policy
      	having load factor management.
      	(_Mask_range_hashing): New.
      	(__clp2): New.
      	(_Power2_rehash_policy): New.
      	(_Inserts<>): Remove last template parameter, _Unique_keys, so that
      	partial specializations only depend on whether iterators are constant
      	or not.
      	* testsuite/23_containers/unordered_set/hash_policy/26132.cc: Adapt to
      	test new hash policy.
      	* testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
      	Likewise.
      	* testsuite/23_containers/unordered_set/hash_policy/rehash.cc:
      	Likewise.
      	* testsuite/23_containers/unordered_set/insert/hash_policy.cc:
      	Likewise.
      	* testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
      	Likewise.
      	* testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
      	New.
      	* testsuite/performance/23_containers/insert/54075.cc: Add benchmark
      	using the new hash policy.
      	* testsuite/performance/23_containers/insert_erase/41975.cc: Likewise.
      
      From-SVN: r236669
      François Dumont committed
    • PR c++/71147 - [6 Regression] Flexible array member wrongly rejected in template · f65e97fd
      gcc/ChangeLog:
      2016-05-24  Martin Sebor  <msebor@redhat.com>
      
      	PR c++/71147
      	* gcc/tree.h (complete_or_array_type_p): New inline function.
      
      gcc/testsuite/ChangeLog:
      2016-05-24  Martin Sebor  <msebor@redhat.com>
      
      	PR c++/71147
      	* g++.dg/ext/flexary16.C: New test.
      
      gcc/cp/ChangeLog:
      2016-05-24  Martin Sebor  <msebor@redhat.com>
      
      	PR c++/71147
      	* decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
      	* pt.c (instantiate_class_template_1): Try to complete the element
      	type of a flexible array member.
      	(can_complete_type_without_circularity): Handle arrays of unknown bound.
      	* typeck.c (complete_type): Also complete the type of the elements of
      	arrays with an unspecified bound.
      
      From-SVN: r236664
      Martin Sebor committed
    • i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define. · 8e0dc054
      	* config/i386/i386.h (TARGET_AVOID_4BYTE_PREFIXES): Define.
      	* config/i386/constraints.md (Yr): Test TARGET_AVOID_4BYTE_PREFIXES
      	rather than X86_TUNE_AVOID_4BYTE_PREFIXES.
      
      From-SVN: r236662
      Jakub Jelinek committed
    • sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Limit 1st alternative to noavx isa... · a0caac98
      	* config/i386/sse.md (<sse4_1>_round<ssemodesuffix><avxsizesuffix>):
      	Limit 1st alternative to noavx isa, split 2nd alternative into one
      	noavx and one avx alternative, use *x and Bm in the former and
      	x and m in the latter.
      
      From-SVN: r236661
      Jakub Jelinek committed
    • sse.md (vec_set<mode>_0): Use sse4_noavx isa instead of sse4 for the first alternative... · 7733939d
      	* config/i386/sse.md (vec_set<mode>_0): Use sse4_noavx isa instead
      	of sse4 for the first alternative, drop %v from the template
      	and d operand modifier.  Split second alternative into one sse4_noavx
      	and one avx alternative, use *x instead of *v in the former and v
      	instead of *v in the latter.
      	(*sse4_1_extractps): Use noavx isa instead of * for the first
      	alternative, drop %v from the template.  Split second alternative into
      	one noavx and one avx alternative, use *x instead of *v in the
      	former and v instead of *v in the latter.
      	(<vi8_sse4_1_avx2_avx512>_movntdqa): Guard the first 2 alternatives
      	with noavx and the last one with avx.
      	(sse4_1_phminposuw): Guard first alternative with noavx isa,
      	split the second one into one noavx and one avx alternative,
      	use *x and Bm in the former and x and m in the latter one.
      	(<sse4_1>_ptest<mode>): Use noavx instead of * for the first two
      	alternatives.
      
      From-SVN: r236660
      Jakub Jelinek committed
    • sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit first two alternatives to noavx... · 520c86db
      	* config/i386/sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Limit
      	first two alternatives to noavx, use *x instead of *v in the second
      	one, add avx alternative without *.
      	(sse4_1_<code>v4qiv4si2<mask_name>, sse4_1_<code>v4hiv4si2<mask_name>,
      	sse4_1_<code>v2qiv2di2<mask_name>, sse4_1_<code>v2hiv2di2<mask_name>,
      	sse4_1_<code>v2siv2di2<mask_name>): Likewise.
      
      From-SVN: r236659
      Jakub Jelinek committed
    • avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before math.h is included. · a6f5ac7f
      	* gcc.target/i386/avx-ceil-sfix-2-vec.c: Define __NO_MATH_INLINES before
      	math.h is included.
      	* gcc.target/i386/avx-floor-sfix-2-vec.c: Likewise.
      	* gcc.target/i386/avx-rint-sfix-2-vec.c: Likewise.
      	* gcc.target/i386/avx-round-sfix-2-vec.c: Likewise.
      	* gcc.target/i386/avx512f-ceil-sfix-vec-1.c: Likewise.
      	* gcc.target/i386/avx512f-floor-sfix-vec-1.c: Likewise.
      	* gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-ceil-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-ceilf-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-floor-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-rint-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-rintf-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-round-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-roundf-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-trunc-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-truncf-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.
      	* gcc.target/i386/sse4_1-floorf-vec.c: Likewise.
      
      From-SVN: r236656
      Ilya Verbin committed
    • p9-vpermr.c: New test for ISA 3.0 vpermr support. · 27bad558
      gcc/testsuite/ChangeLog:
      
      2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
      	    Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* gcc.target/powerpc/p9-vpermr.c: New test for ISA 3.0 vpermr
      	support.
      
      
      
      Co-Authored-By: Kelvin Nilsen <kelvin@gcc.gnu.org>
      
      From-SVN: r236655
      Michael Meissner committed
    • tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path): New function, extracted from... · 081fdda6
      	* tree-ssa-threadbackwards.c (convert_and_register_jump_thread_path):
      	New function, extracted from...
      	(fsm_find_control_statement_thread_paths): Here.  Use the new function.
      	Allow simple copies and constant initializations in the SSA chain.
      
      From-SVN: r236653
      Jeff Law committed
    • re PR c++/69872 (-Wnarrowing note without warning/errror) · 72f382fb
      /cp
      2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/69872
      	* typeck2.c (check_narrowing): Check pedwarn return value.
      
      /testsuite
      2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/69872
      	* g++.dg/warn/Wno-narrowing1.C: New.
      
      From-SVN: r236651
      Paolo Carlini committed
    • re PR middle-end/71249 (-Wswitch-unreachable false positive for a compound… · ef2ec9d9
      re PR middle-end/71249 (-Wswitch-unreachable false positive for a compound statement containing a used label)
      
      	PR c/71249
      	* gimplify.c (gimplify_switch_expr): Look into the innermost lexical
      	scope.
      
      	* c-c++-common/Wswitch-unreachable-2.c: New test.
      
      From-SVN: r236649
      Marek Polacek committed
    • re PR c++/71257 (OpenMP declare simd linear with ref modifier doesn't accept… · 7adb26f2
      re PR c++/71257 (OpenMP declare simd linear with ref modifier doesn't accept references to non-integer/non-pointer)
      
      	PR c++/71257
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Handle
      	SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP like
      	SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP.  Add
      	SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP and
      	SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP cases explicitly.
      
      	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
      	For OMP_CLAUSE_LINEAR_REF don't require type to be
      	integral or pointer.
      
      	* g++.dg/vect/simd-clone-6.cc: New test.
      	* g++.dg/gomp/declare-simd-6.C: New test.
      
      From-SVN: r236648
      Jakub Jelinek committed
    • re PR middle-end/70434 (adding an extraneous cast to vector type results in inferior code) · e90434e3
      	PR middle-end/70434
      	PR c/69504
      	* c-c++-common/vector-subscript-5.c (foo): Move ; out of the ifdef.
      
      From-SVN: r236647
      Jakub Jelinek committed
    • Add priority_queue::value_compare (LWG 2684) · 8be062c6
      	* include/bits/stl_queue.h (priority_queue::value_compare): Define.
      
      From-SVN: r236646
      Jonathan Wakely committed
    • i386.c (ix86_preferred_reload_class): Use IS_STACK_MODE, INTEGER_CLASS_P,… · 4b63ff58
      i386.c (ix86_preferred_reload_class): Use IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros.
      
      	* config/i386/i386.c (ix86_preferred_reload_class): Use
      	IS_STACK_MODE, INTEGER_CLASS_P, FLOAT_CLASS_P and Q_CLASS_P macros.
      
      From-SVN: r236645
      Uros Bizjak committed
    • re PR tree-optimization/71240 (ICE on valid code at -O2 and above on… · b556ea3b
      re PR tree-optimization/71240 (ICE on valid code at -O2 and above on x86_64-linux-gnu: verify_gimple failed)
      
      2016-05-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71240
      	* tree-ssa-math-opts.c (init_symbolic_number): Verify the source
      	has integral type.
      
      	* gcc.dg/optimize-bswapsi-5.c: New testcase.
      
      From-SVN: r236644
      Richard Biener committed
    • re PR tree-optimization/71230 (ICE : in zero_one_operation, at tree-ssa-reassoc.c:1230) · e5328f5d
      2016-05-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71230
      	* tree-ssa-reassoc.c (zero_one_operation): Handle negate special ops.
      
      	* gcc.dg/torture/pr71230.c: New testcase.
      	* g++.dg/torture/pr71230.C: Likewise.
      
      From-SVN: r236643
      Richard Biener committed
    • Clean up PURE_SLP_STMT handling · fce57248
      The vectorizable_* routines had many instances of:
      
              slp_node || PURE_SLP_STMT (stmt_info)
      
      which gives the misleading impression that we can have
      !slp_node && PURE_SLP_STMT (stmt_info).  In this context
      it's really enough to test slp_node on its own.
      
      There are three cases:
      
            loop vectorisation only:
              vectorizable_foo called only with !slp_node
      
            pure SLP:
              vectorizable_foo called only with slp_node
      
            hybrid SLP:
              (e.g. a vector that's used in SLP statements and also in a reduction)
              - vectorizable_foo called once with slp_node for the SLP uses.
              - vectorizable_foo called once with !slp_node for the non-SLP uses.
      
      Hybrid SLP isn't possible for stores, so I added an explicit assert
      for that.
      
      I also made vectorizable_comparison static, to make it obvious that
      no other callers outside tree-vect-stmts.c could use it with the
      !slp && PURE_SLP_STMT combination.
      
      Tested on aarch64-linux-gnu and x86_64-linux-gnu.
      
      gcc/
      	* tree-vectorizer.h (vectorizable_comparison): Delete.
      	* tree-vect-loop.c (vectorizable_reduction): Remove redundant
      	PURE_SLP_STMT check.
      	* tree-vect-stmts.c (vectorizable_call): Likewise.
      	(vectorizable_simd_clone_call): Likewise.
      	(vectorizable_conversion): Likewise.
      	(vectorizable_assignment): Likewise.
      	(vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      	(vectorizable_load): Likewise.
      	(vectorizable_condition): Likewise.
      	(vectorizable_store): Likewise.  Assert that we don't have
      	hybrid SLP.
      	(vectorizable_comparison): Make static.  Remove redundant
      	PURE_SLP_STMT check.
      	(vect_transform_stmt): Assert that we always have an slp_node
      	if PURE_SLP_STMT.
      
      From-SVN: r236642
      Richard Sandiford committed
    • [ARM][4/4] Simplify checks for CONST_INT_P and comparison against 1/0 · d1fb6940
      	* config/arm/neon.md (ashldi3_neon):  Replace comparison of INTVAL of
      	operands[2] against 1 with comparison against CONST1_RTX.
      	(<shift>di3_neon): Likewise.
      	* config/arm/predicates.md (const0_operand): Replace with comparison
      	against CONST0_RTX.
      
      From-SVN: r236641
      Kyrylo Tkachov committed
    • [ARM][3/4] Cleanup casts from INTVAL to [unsigned] HOST_WIDE_INT · dec21bbc
      	* config/arm/arm.md (ashldi3): Replace comparison of INTVAL of
      	operands[2] against 1 with comparison against CONST1_RTX.
      	(ashrdi3): Likewise.
      	(lshrdi3): Likewise.
      	(ashlsi3): Replace cast of INTVAL to unsigned HOST_WIDE_INT with
      	UINTVAL.
      	(ashrsi3): Likewise.
      	(lshrsi3): Likewise.
      	(rotrsi3): Likewise.
      	(define_split above *compareqi_eq0): Likewise.
      	(define_split above "prologue"): Likewise.
      	* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
      	* config/arm/predicates.md (shift_operator): Likewise.
      	(shift_nomul_operator): Likewise.
      	(sat_shift_operator): Likewise.
      	(thumb1_cmp_operand): Likewise.
      	(const_neon_scalar_shift_amount_operand): Replace manual range
      	check with IN_RANGE.
      	* config/arm/thumb1.md (define_peephole2 above *thumb_subdi3):
      	Replace cast of INTVAL to unsigned HOST_WIDE_INT with UINTVAL.
      
      From-SVN: r236640
      Kyrylo Tkachov committed
    • Tighten syntax checking for OpenACC routine construct in C · a04e69c0
      	gcc/c/
      	* c-parser.c (c_parser_oacc_routine): Tighten syntax checks.
      	gcc/testsuite/
      	* c-c++-common/goacc/routine-5.c: Add tests.
      	* g++.dg/goacc/routine-2.C: Remove duplicate tests.
      	* gfortran.dg/goacc/routine-6.f90: Add tests.
      
      From-SVN: r236639
      Thomas Schwinge committed
    • [ARM][2/4] Replace casts of 1 to HOST_WIDE_INT by HOST_WIDE_INT_1 and HOST_WIDE_INT_1U · d4b5c77d
      	* config/arm/arm.md (andsi3): Replace cast of 1 to HOST_WIDE_INT
      	with HOST_WIDE_INT_1.
      	(insv): Likewise.
      	* config/arm/arm.c (optimal_immediate_sequence): Replace cast of
      	1 to unsigned HOST_WIDE_INT with HOST_WIDE_INT_1U.
      	(arm_canonicalize_comparison): Likewise.
      	(thumb1_rtx_costs): Replace cast of 1 to HOST_WIDE_INT with
      	HOST_WIDE_INT_1.
      	(thumb1_size_rtx_costs): Likewise.
      	(vfp_const_double_index): Replace cast of 1 to unsigned
      	HOST_WIDE_INT with HOST_WIDE_INT_1U.
      	(get_jump_table_size): Replace cast of 1 to HOST_WIDE_INT with
      	HOST_WIDE_INT_1.
      	(arm_asan_shadow_offset): Replace cast of 1 to unsigned
      	HOST_WIDE_INT with HOST_WIDE_INT_1U.
      	* config/arm/neon.md (vec_set<mode>): Replace cast of 1 to
      	HOST_WIDE_INT with HOST_WIDE_INT_1.
      
      From-SVN: r236638
      Kyrylo Tkachov committed
    • tree-cfg.h (should_remove_lhs_p): New predicate. · abd3a68c
      	* tree-cfg.h (should_remove_lhs_p): New predicate.
      	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Use it.
      	* gimplify.c (gimplify_modify_expr): Likewise.
      	* tree-cfg.c (verify_gimple_call): Likewise.
      	* tree-cfgcleanup.c (fixup_noreturn_call): Likewise.
      	* gimple-fold.c: Include "tree-cfg.h".
      	(gimple_fold_call): Use should_remove_lhs_p.
      
      From-SVN: r236637
      Marek Polacek committed
    • re PR tree-optimization/71253 (ICE during loop distribution w/ -O2 -ftree-loop-distribution) · 30fd2977
      2016-05-24  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/71253
      	* cfganal.h (control_dependences): Make robust against edge
      	and BB removal.
      	(control_dependences::control_dependences): Remove edge_list argument.
      	(control_dependences::get_edge): Remove.
      	(control_dependences::get_edge_src): Add.
      	(control_dependences::get_edge_dest): Likewise.
      	(control_dependences::m_el): Make a vector of edge src/dest index.
      	* cfganal.c (control_dependences::find_control_dependence): Adjust.
      	(control_dependences::control_dependences): Likewise.
      	(control_dependences::~control_dependence): Likewise.
      	(control_dependences::get_edge): Remove.
      	(control_dependences::get_edge_src): Add.
      	(control_dependences::get_edge_dest): Likewise.
      	* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Use
      	get_edge_src.
      	(perform_tree_ssa_dce): Adjust.
      	* tree-loop-distribution.c (create_edge_for_control_dependence): Use
      	get_edge_src.
      	(pass_loop_distribution::execute): Adjust.  Do loop destroying
      	conditional on changed.
      
      	* gcc.dg/torture/pr71253.c: New testcase.
      
      From-SVN: r236636
      Richard Biener committed
    • [ARM] PR target/69857 Remove bogus early return false; in gen_operands_ldrd_strd · 37923729
      	PR target/69857
      	* config/arm/arm.c (gen_operands_ldrd_strd): Remove bogus early
      	return.  Reindent transformation comment and mention the ARM state
      	behavior.
      
      From-SVN: r236635
      Kyrylo Tkachov committed
    • 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 4 commits
    • re PR target/71201 (PowerPC XXPERM instruction fails on ISA 3.0 system.) · fe3f3340
      [gcc]
      2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR target/71201
      	* config/rs6000/altivec.md (altivec_vperm_<mode>_internal): Drop
      	ISA 3.0 xxperm fusion alternative.
      	(altivec_vperm_v8hiv16qi): Likewise.
      	(altivec_vperm_<mode>_uns_internal): Likewise.
      	(vperm_v8hiv4si): Likewise.
      	(vperm_v16qiv8hi): Likewise.
      
      [gcc/testsuite]
      2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
      	    Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* gcc.target/powerpc/p9-permute.c: Run test on big endian as well
      	as little endian.
      
      
      [gcc]
      2016-05-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
      	    Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* config/rs6000/rs6000.c (rs6000_expand_vector_set): Generate
      	vpermr/xxpermr on ISA 3.0.
      	(altivec_expand_vec_perm_le): Likewise.
      	* config/rs6000/altivec.md (UNSPEC_VPERMR): New unspec.
      	(altivec_vpermr_<mode>_internal): Add VPERMR/XXPERMR support for
      	ISA 3.0.
      
      
      Co-Authored-By: Kelvin Nilsen <kelvin@gcc.gnu.org>
      
      From-SVN: r236617
      Michael Meissner committed
    • PR c++/70584 - error with parenthesized builtin arg · 290279c4
      	* cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
      	maybe_undo_parenthesized_ref.
      
      From-SVN: r236616
      Jason Merrill committed
    • PR c++/70735 - generic lambda and local static variable · 9c62c1f3
      	* pt.c (tsubst_copy): Just return a local variable from
      	non-template context.  Don't call rest_of_decl_compilation for
      	duplicated static locals.
      	(tsubst_decl): Set DECL_CONTEXT of local static from another
      	function.
      
      From-SVN: r236615
      Jason Merrill committed
    • re PR c++/70972 (Inheriting constructors taking parameters by value should move them, not copy) · 26d6ae55
      /cp
      2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/70972
      	* method.c (forward_parm): Use cp_build_reference_type.
      
      /testsuite
      2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/70972
      	* g++.dg/cpp0x/inh-ctor20.C: New.
      	* g++.dg/cpp0x/inh-ctor21.C: Likewise.
      
      From-SVN: r236614
      Paolo Carlini committed