1. 24 May, 2016 28 commits
    • 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 12 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
    • 2016-05-23 François Dumont <fdumont@gcc.gnu.org> · 447caf82
      	* include/debug/safe_iterator.h
      	(_Safe_iterator<>::operator->()): Implement using underlying iterator
      	operator ->.
      	* include/debug/safe_local_iterator.h
      	(_Safe_local_iterator<>::operator->()): Likewise.
      
      From-SVN: r236611
      François Dumont committed
    • re PR c++/69095 (internal compiler error: in dependent_type_p, at cp/pt.c:19399) · d6c9a06f
      /cp
      2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/69095
      	* parser.c (cp_parser_default_argument): Call
      	check_for_bare_parameter_packs.
      	(cp_parser_late_parsing_default_args): Likewise.
      
      /testsuite
      2016-05-22  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/69095
      	* g++.dg/cpp0x/variadic168.C: New.
      
      From-SVN: r236610
      Paolo Carlini committed
    • pt.c (check_for_bare_parameter_packs): Improve error message location for expressions. · 396a1d10
      /cp
      2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* pt.c (check_for_bare_parameter_packs): Improve error message
      	location for expressions.
      
      /testsuite
      2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/pr31445.C: Test column number too.
      	* g++.dg/cpp0x/pr32253.C: Likewise.
      	* g++.dg/cpp0x/variadic-ex13.C: Likewise.
      	* g++.dg/cpp0x/variadic36.C: Likewise.
      
      From-SVN: r236609
      Paolo Carlini committed
    • i386.h (IS_STACK_MODE): Enable for TARGET_MIX_SSE_I387. · f48b4284
      	* config/i386/i386.h (IS_STACK_MODE): Enable for
      	TARGET_MIX_SSE_I387.  Rewrite using X87_FLOAT_MODE_P and
      	SSE_FLOAT_MODE_P macros.
      	* config/i386/i386.c (ix86_preferred_reload_class): Use
      	IS_STACK_MODE, INTEGER_CLASS_P and FLOAT_CLASS_P macros.  Cleanup
      	regclass processing for CONST_DOUBLE_P.
      	(ix86_preferred_output_reload_class): Use IS_STACK_MODE macro.
      	(ix86_rtx_costs): Remove redundant TARGET_80387 check
      	with IS_STACK_MODE macro.
      	* config/i386/i386.md: Replace SSE_FLOAT_MODE_P (DFmode)
      	with TARGET_SSE2.
      	(*movdf_internal): Use IS_STACK_MODE macro.
      	(*movsf_internal): Ditto.
      
      From-SVN: r236607
      Uros Bizjak committed
    • match.pd: Relax some tree_nop_conversion_p · ece46666
      2016-05-23  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* match.pd (a * (1 << b), ~x & ~y, ~X ^ ~Y, (X ^ Y) ^ Y, ~ (-A),
      	~ (A - 1), ~(~X >> Y), ~(~X >>r Y)): Relax constraints.
      
      gcc/testsuite/
      	* gcc.dg/fold-notshift-2.c: Adjust.
      
      From-SVN: r236601
      Marc Glisse committed
    • tree-ssa-threadbackward.c (profitable_jump_thread_path): New function extracted from ... · bb5e62d6
      	* tree-ssa-threadbackward.c (profitable_jump_thread_path): New function
      	extracted from ...
      	(fsm_find_control_statement_thread_paths): Call it.
      
      From-SVN: r236599
      Jeff Law committed
    • [PR 71234] Avoid valgrind warning in ipa-cp · 44a71f36
      2016-05-23  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/71234
      	* ipa-cp.c (ipa_get_indirect_edge_target_1): Only check value of
      	from_global_constant if t is not NULL.
      
      From-SVN: r236598
      Martin Jambor committed
    • re PR c/49859 (gcc could warn about statements between "switch" and first "case") · a7dc5980
      	PR c/49859
      	* common.opt (Wswitch-unreachable): New option.
      	* doc/invoke.texi: Document -Wswitch-unreachable.
      	* gimplify.c (gimplify_switch_expr): Implement the -Wswitch-unreachable
      	warning.
      
      	* c-c++-common/Wswitch-unreachable-1.c: New test.
      	* gcc.dg/Wswitch-unreachable-1.c: New test.
      	* c-c++-common/goacc/sb-2.c (void foo): Add dg-warning.
      	* g++.dg/cpp0x/lambda/lambda-switch.C (main): Likewise.
      	* g++.dg/gomp/block-10.C: Likewise.
      	* gcc.dg/gomp/block-10.c: Likewise.
      	* g++.dg/gomp/block-9.C: Likewise.
      	* gcc.dg/gomp/block-9.c: Likewise.
      	* g++.dg/gomp/target-1.C: Likewise.
      	* g++.dg/gomp/target-2.C: Likewise.
      	* gcc.dg/gomp/target-1.c: Likewise.
      	* gcc.dg/gomp/target-2.c: Likewise. 
      	* g++.dg/gomp/taskgroup-1.C: Likewise.
      	* gcc.dg/gomp/taskgroup-1.c: Likewise.
      	* gcc.dg/gomp/teams-1.c: Likewise.
      	* g++.dg/gomp/teams-1.C: Likewise.
      	* g++.dg/overload/error3.C: Likewise.
      	* g++.dg/tm/jump1.C: Likewise.
      	* g++.dg/torture/pr40335.C: Likewise.
      	* gcc.dg/c99-vla-jump-5.c: Likewise.
      	* gcc.dg/switch-warn-1.c: Likewise.
      	* gcc.dg/Wjump-misses-init-1.c: Use -Wno-switch-unreachable.
      	* gcc.dg/nested-func-1.c: Likewise.
      	* gcc.dg/pr67784-4.c: Likewise.
      
      From-SVN: r236597
      Marek Polacek committed