- 24 May, 2016 28 commits
-
-
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... (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 -
/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 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 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 -
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 -
* 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, 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 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 -
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 -
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 -
* 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 -
* 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 -
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 -
* 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. * 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 -
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 -
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 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 -
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 -
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 -
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 -
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 -
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 -
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 -
* constexpr.c (cxx_eval_call_expression): Check for fun == current_function_decl again. From-SVN: r236625
Jason Merrill committed -
From-SVN: r236623
GCC Administrator committed -
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
-
- 23 May, 2016 12 commits
-
-
[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 -
* cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call maybe_undo_parenthesized_ref. From-SVN: r236616
Jason Merrill committed -
* 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 -
/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 -
* 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 -
/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 -
/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 -
* 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 -
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 ... (fsm_find_control_statement_thread_paths): Call it. From-SVN: r236599
Jeff Law committed -
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 -
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
-