- 24 May, 2016 36 commits
-
-
* 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 -
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 -
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 -
* 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 -
* 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 -
* 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 -
* 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 -
* 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 -
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 4 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
-