aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-06-29ccmp_2.c: New test.Steve Ellcey2-0/+16
2017-06-29 Steve Ellcey <sellcey@cavium.com> * gcc.target/aarch64/ccmp_2.c: New test. From-SVN: r249806
2017-06-29ccmp.c (ccmp_tree_comparison_p): New function.Steve Ellcey4-74/+111
2017-06-29 Steve Ellcey <sellcey@cavium.com> * ccmp.c (ccmp_tree_comparison_p): New function. (ccmp_candidate_p): Update to use above function. (get_compare_parts): New function. (expand_ccmp_next): Update to use new functions. (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use new functions. (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1, take mode as argument. * ccmp.h (expand_ccmp_expr): Add mode as argument. * expr.c (expand_expr_real_1): Pass mode as argument. From-SVN: r249805
2017-06-29re PR c++/81247 (ICE on invalid C++ code with malformed namespace ↵Nathan Sidwell7-6/+63
declaration: in do_push_nested_namespace, at cp/name-lookup.c:6002) PR c++/81247 * parser.c (cp_parser_namespace_definition): Immediately close the namespace if there's no open-brace. * name-lookup.c (do_pushdecl): Reset OLD when pushing into new namespace. From-SVN: r249804
2017-06-29combine: Print insns with the cost dumpSegher Boessenkool2-2/+9
In the combine dump file, at the start there is a list of the RTL cost of every insn. The only thing listed about the insns is the UID though. To make it more useful, this patch prints the insn itself as well (in slim format). * combine.c (combine_instructions): Print insns to dump_file, together with their costs. From-SVN: r249802
2017-06-29asan.c (asan_emit_stack_protection): Update.Jan Hubicka84-811/+1721
* asan.c (asan_emit_stack_protection): Update. (create_cond_insert_point): Update. * auto-profile.c (afdo_propagate_circuit): Update. * basic-block.h (struct edge_def): Turn probability to profile_probability. (EDGE_FREQUENCY): Update. * bb-reorder.c (find_traces_1_round): Update. (better_edge_p): Update. (sanitize_hot_paths): Update. * cfg.c (unchecked_make_edge): Initialize probability to uninitialized. (make_single_succ_edge): Update. (check_bb_profile): Update. (dump_edge_info): Update. (update_bb_profile_for_threading): Update. * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge probabilitycount to 0. * cfgbuild.c (compute_outgoing_frequencies): Update. * cfgcleanup.c (try_forward_edges): Update. (outgoing_edges_match): Update. (try_crossjump_to_edge): Update. * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge. (expand_gimple_tailcall): Update. (construct_init_block): Use make_single_succ_edge. (construct_exit_block): Use make_single_succ_edge. * cfghooks.c (verify_flow_info): Update. (redirect_edge_succ_nodup): Update. (split_edge): Update. (account_profile_record): Update. * cfgloopanal.c (single_likely_exit): Update. * cfgloopmanip.c (scale_loop_profile): Update. (set_zero_probability): Remove. (duplicate_loop_to_header_edge): Update. * cfgloopmanip.h (loop_version): Update prototype. * cfgrtl.c (try_redirect_by_replacing_jump): Update. (force_nonfallthru_and_redirect): Update. (update_br_prob_note): Update. (rtl_verify_edges): Update. (purge_dead_edges): Update. (rtl_lv_add_condition_to_bb): Update. * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update. * cgraphunit.c (init_lowered_empty_function): Update. (cgraph_node::expand_thunk): Update. * cilk-common.c: Include profile-count.h * dojump.c (inv): Remove. (jumpifnot): Update. (jumpifnot_1): Update. (do_jump_1): Update. (do_jump): Update. (do_jump_by_parts_greater_rtx): Update. (do_compare_rtx_and_jump): Update. * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump, do_jump_1. do_compare_rtx_and_jump): Update prototype. * dwarf2cfi.c: Include profile-count.h * except.c (dw2_build_landing_pads): Use make_single_succ_edge. (sjlj_emit_dispatch_table): Likewise. * explow.c: Include profile-count.h * expmed.c (emit_store_flag_force): Update. (do_cmp_and_jump): Update. * expr.c (compare_by_pieces_d::generate): Update. (compare_by_pieces_d::finish_mode): Update. (emit_block_move_via_loop): Update. (store_expr_with_bounds): Update. (store_constructor): Update. (expand_expr_real_2): Update. (expand_expr_real_1): Update. * expr.h (try_casesi, try_tablejump): Update prototypes. * gimple-pretty-print.c (dump_probability): Update. (dump_profile): New. (dump_gimple_label): Update. (dump_gimple_bb_header): Update. * graph.c (draw_cfg_node_succ_edges): Update. * hsa-gen.c (convert_switch_statements): Update. * ifcvt.c (cheap_bb_rtx_cost_p): Update. (find_if_case_1): Update. (find_if_case_2): Update. * internal-fn.c (expand_arith_overflow_result_store): Update. (expand_addsub_overflow): Update. (expand_neg_overflow): Update. (expand_mul_overflow): Update. (expand_vector_ubsan_overflow): Update. * ipa-cp.c (good_cloning_opportunity_p): Update. * ipa-split.c (split_function): Use make_single_succ_edge. * ipa-utils.c (ipa_merge_profiles): Update. * loop-doloop.c (add_test): Update. (doloop_modify): Update. * loop-unroll.c (compare_and_jump_seq): Update. (unroll_loop_runtime_iterations): Update. * lra-constraints.c (lra_inheritance): Update. * lto-streamer-in.c (input_cfg): Update. * lto-streamer-out.c (output_cfg): Update. * mcf.c (adjust_cfg_counts): Update. * modulo-sched.c (sms_schedule): Update. * omp-expand.c (expand_omp_for_init_counts): Update. (extract_omp_for_update_vars): Update. (expand_omp_ordered_sink): Update. (expand_omp_for_ordered_loops): Update. (expand_omp_for_generic): Update. (expand_omp_for_static_nochunk): Update. (expand_omp_for_static_chunk): Update. (expand_cilk_for): Update. (expand_omp_simd): Update. (expand_omp_taskloop_for_outer): Update. (expand_omp_taskloop_for_inner): Update. * omp-simd-clone.c (simd_clone_adjust): Update. * optabs.c (expand_doubleword_shift): Update. (expand_abs): Update. (emit_cmp_and_jump_insn_1): Update. (expand_compare_and_swap_loop): Update. * optabs.h (emit_cmp_and_jump_insns): Update prototype. * predict.c (predictable_edge_p): Update. (edge_probability_reliable_p): Update. (set_even_probabilities): Update. (combine_predictions_for_insn): Update. (combine_predictions_for_bb): Update. (propagate_freq): Update. (estimate_bb_frequencies): Update. (force_edge_cold): Update. * profile-count.c (profile_count::dump): Add missing space into dump. (profile_count::debug): Add newline. (profile_count::differs_from_p): Explicitly convert to unsigned. (profile_count::stream_in): Update. (profile_probability::dump): New member function. (profile_probability::debug): New member function. (profile_probability::differs_from_p): New member function. (profile_probability::differs_lot_from_p): New member function. (profile_probability::stream_in): New member function. (profile_probability::stream_out): New member function. * profile-count.h (profile_count_quality): Rename to ... (profile_quality): ... this one. (profile_probability): New. (profile_count): Update. * profile.c (compute_branch_probabilities): Update. * recog.c (peep2_attempt): Update. * sched-ebb.c (schedule_ebbs): Update. * sched-rgn.c (find_single_block_region): Update. (compute_dom_prob_ps): Update. (schedule_region): Update. * sel-sched-ir.c (compute_succs_info): Update. * stmt.c (struct case_node): Update. (do_jump_if_equal): Update. (get_outgoing_edge_probs): Update. (conditional_probability): Update. (emit_case_dispatch_table): Update. (expand_case): Update. (expand_sjlj_dispatch_table): Update. (emit_case_nodes): Update. * targhooks.c: Update. * tracer.c (better_p): Update. (find_best_successor): Update. * trans-mem.c (expand_transaction): Update. * tree-call-cdce.c: Update. * tree-cfg.c (gimple_split_edge): Upate. (move_sese_region_to_fn): Upate. * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate. * tree-eh.c (lower_resx): Upate. (cleanup_empty_eh_move_lp): Upate. * tree-if-conv.c (version_loop_for_if_conversion): Update. * tree-inline.c (copy_edges_for_bb): Update. (copy_cfg_body): Update. * tree-parloops.c (gen_parallel_loop): Update. * tree-profile.c (gimple_gen_ic_func_profiler): Update. (gimple_gen_time_profiler): Update. * tree-ssa-dce.c (remove_dead_stmt): Update. * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update. * tree-ssa-loop-im.c (execute_sm_if_changed): Update. * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update. (unloop_loops): Update. (try_peel_loop): Update. * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update. * tree-ssa-loop-split.c (connect_loops): Update. (split_loop): Update. * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update. (hoist_guard): Update. * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update. * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update. (value_replacement): Update. * tree-ssa-reassoc.c (branch_fixup): Update. * tree-ssa-tail-merge.c (replace_block_by): Update. * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update. (create_edge_and_update_destination_phis): Update. (compute_path_counts): Update. (recompute_probabilities): Update. (update_joiner_offpath_counts): Update. (freqs_to_counts_path): Update. (duplicate_thread_path): Update. * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update. (struct switch_conv_info): Update. (gen_inbound_check): Update. * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update. (vect_do_peeling): Update. (vect_loop_versioning): Update. * tree-vect-loop.c (scale_profile_for_vect_loop): Update. (optimize_mask_stores): Update. * ubsan.c (ubsan_expand_null_ifn): Update. * value-prof.c (gimple_divmod_fixed_value): Update. (gimple_divmod_fixed_value_transform): Update. (gimple_mod_pow2): Update. (gimple_mod_pow2_value_transform): Update. (gimple_mod_subtract): Update. (gimple_mod_subtract_transform): Update. (gimple_ic): Update. (gimple_stringop_fixed_value): Update. (gimple_stringops_transform): Update. * value-prof.h: Update. From-SVN: r249800
2017-06-29rs6000-c.c: Add support for built-in functions vector signed int vec_signed ↵Carl Love10-19/+542
(vector float)... gcc/ChangeLog: 2017-06-29 Carl Love <cel@us.ibm.com> * config/rs6000/rs6000-c.c: Add support for built-in functions vector signed int vec_signed (vector float); vector signed long long vec_signed (vector double); vector signed int vec_signed2 (vector double, vector double); vector signed int vec_signede (vector double); vector signed int vec_signedo (vector double); * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add instruction generator. * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, UNSPEC_VSX_VSIGNED2): Add UNSPECS. (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df): Add define_insn. (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands. * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED, VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO, VEC_UNSIGNEDO): Add definitions. * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS, UNSPEC_VSX_VSIGNED2): Add UNSPECs. (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn. (vsigned2_v2df, vsigendo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands. * config/rs6000/altivec.h (vec_signed, vec_signed2, vec_signede and vec_signedo, vec_unsigned, vec_unsigned2, vec_unsignede, vec_unsignedo): Add builtin defines. * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern declaration. * doc/extend.texi: Update the built-in documentation file for the new built-in functions. gcc/testsuite/ChangeLog: 2017-06-29 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/builtins-3-runnable.c (test_int_result, test_unsigned_int_result, test_ll_int_result, test_ll_unsigned_int_result): Add result checking functions, add debug support. (main): Add builtin function tests. From-SVN: r249798
2017-06-29PR c++/81164 - ICE with invalid inherited constructor.Jason Merrill5-2/+37
* search.c (binfo_direct_p): New. * name-lookup.c (do_class_using_decl): Use it. From-SVN: r249797
2017-06-29misc/cgo/testcarchive: fix test to work for gccgoIan Lance Taylor1-1/+1
This test is not yet run, but it will be soon. Reviewed-on: https://go-review.googlesource.com/47038 From-SVN: r249795
2017-06-29cmd/go: fix -buildmode={c-archive,c-shared,pie} for gccgoIan Lance Taylor1-1/+1
The tests are misc/cgo tests that are not currently run but will be run soon. Reviewed-on: https://go-review.googlesource.com/47037 From-SVN: r249794
2017-06-29builtins-3-vec_reve-runnable.c (dg-options, dg-skip-if): Add -mvsx -mcpu=power7.Carl Love2-2/+7
gcc/testsuite/ChangeLog: 2017-06-29 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/builtins-3-vec_reve-runnable.c (dg-options, dg-skip-if): Add -mvsx -mcpu=power7. From-SVN: r249792
2017-06-29cp-tree.h (THIS_NAME, [...]): Delete.Nathan Sidwell3-18/+16
* cp-tree.h (THIS_NAME, IN_CHARGE_NAME, VTBL_PTR_TYPE, VTABLE_DELTA_NAME, VTABLE_PFN_NAME): Delete. * decl.c (initialize_predefined_identifiers): Name cdtor special names consistently. Use literals for above deleted defines. (cxx_init_decl_processing): Use literal for vtbl_ptr_type name, From-SVN: r249791
2017-06-29lex.c (maybe_add_lang_type_raw): Exit early, rather than use a flag.Nathan Sidwell2-13/+16
* lex.c (maybe_add_lang_type_raw): Exit early, rather than use a flag. From-SVN: r249790
2017-06-29call.c (check_dtor_name): Use constructor_name for enums too.Nathan Sidwell4-20/+23
* call.c (check_dtor_name): Use constructor_name for enums too. (build_new_method_call_1): Use constructor_name for cdtors and show ~ for dtor. * class.c (build_self_reference): Use TYPE_NAME to get name of self reference. * name-lookup (constructor_name): Use DECL_NAME directly. (constructor_name_p): Reimplement. (push_class_level_binding_1): Use TYPE_NAME directly. From-SVN: r249789
2017-06-29class.c (finish_struct): Use OVL_P.Nathan Sidwell5-35/+28
* class.c (finish_struct): Use OVL_P. (get_vfield_name): Measure constructor_name length. * cp-tree.h (SET_CLASS_TYPE_P): Add RECORD_OR_UNION_CHECK. (NON_UNION_CLASS_TYPE_P): Check RECORD_TYPE up front. * cxx-pretty-print.c (is_destructor_name): Delete. (pp_cxx_unqualified_id): Remove bogus destructor name checking. * decl.c (grokfndecl): Move cheap checks first when looking for implicit extern cness. From-SVN: r249788
2017-06-29parser.c (cp_parser_direct_declarator): Reorder if to avoid indentation.Nathan Sidwell2-26/+22
* parser.c (cp_parser_direct_declarator): Reorder if to avoid indentation. Remove unnecessary assignment of constructor name. From-SVN: r249787
2017-06-29Whitespace cleanups.Nathan Sidwell9-28/+45
* call.c (name_as_c_string): Move CONST_CAST to return. (build_new_method_call_1): Remove unneeded bracing. * class.c (include_empty_classes): Unbreak line. * constraint.cc (tsubst_check_constraint): Add space. * cp-tree.h (lang_decl_ns): Add comment. (PTRMEM_CST_MEMBER): Break line. * decl.c (grokfndecl): Add blank lines. Unbreak some others. (grokdeclarator): Remove lines, move declaration to first use. * decl2.c (decl_needed_p): Fix indentation. (c_parse_final_cleanups): Remove blank line. * method.c (implicitly_declare_fn): Move declaration to first use. * search.c (current_scope): Add blank lines. From-SVN: r249786
2017-06-29tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add reduction chains ↵Richard Biener5-17/+69
to LOOP_VINFO_REDUCTIONS. 2017-06-29 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add reduction chains to LOOP_VINFO_REDUCTIONS. * tree-vect-slp.c (vect_analyze_slp): Continue looking for SLP reductions after processing reduction chains. * gcc.dg/vect/slp-reduc-8.c: New testcase. From-SVN: r249785
2017-06-29builtins.c (fold_builtin_FUNCTION): Use lang_hooks.decl_printable_name.Nathan Sidwell4-5/+55
gcc/ * builtins.c (fold_builtin_FUNCTION): Use lang_hooks.decl_printable_name. gcc/cp/ * g++.dg/cpp1y/builtin_FUNCTION.C: New. From-SVN: r249784
2017-06-29re PR middle-end/81194 (ICE during RTL pass: expand)Peter Bergner5-2/+83
gcc/ PR middle-end/81194 * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements with only one label. * stmt.c (expand_case): Assert NCASES is greater than one. gcc/testsuite/ PR middle-end/81194 * g++.dg/pr81194.C: New test. From-SVN: r249783
2017-06-29Add a testcase for PR ipa/80565H.J. Lu2-0/+46
The testcase in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80565 is passing now. Check in the testcase and resolve it as fixed. PR ipa/80565 * gcc.dg/torture/pr80565.c: New file. From-SVN: r249782
2017-06-29tree-cfg.c (group_case_labels_stmt): Return whether we changed anything.Richard Biener4-16/+37
2017-06-29 Richard Biener <rguenther@suse.de> * tree-cfg.c (group_case_labels_stmt): Return whether we changed anything. (group_case_labels): Likewise. (find_taken_edge): Push sanity checking on val to workers... (find_taken_edge_cond_expr): ... here (find_taken_edge_switch_expr): ... and here, handle cases with just a default label. * tree-cfg.h (group_case_labels_stmt): Adjust prototype. (group_case_labels): Likewise. * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When group_case_labels does anything cleanup the CFG again. From-SVN: r249780
2017-06-29re PR tree-optimization/81196 (Number of iterations found for p!=q but not ↵Bin Cheng4-7/+53
for p<q) PR tree-optimization/81196 * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop exit condition comparing two IVs. gcc/testsuite * gcc.dg/vect/pr81196.c: New. From-SVN: r249778
2017-06-29[arm] Fix bootstrap - missing initializer in tail entry of autogenerated codeRichard Earnshaw3-10/+16
My patch yesterday accidentally missed a hunk that added the update to the tail entry of the autogenerated data structure produced by parsecpu.awk. This causes native bootstraps to fail. This patch adds back the missing hunk. 2017-06-29 Richard Earnshaw <rearnsha@arm.com> * config/arm/parsecpu.awk (gen_comm_data): Add initializer for profile to the dummy entry at the end of the list of architectures. * config/arm/arm-cpu-cdata.h: Regenerated. From-SVN: r249777
2017-06-292017-06-29 Michael Collison <michael.collison@arm.com>Michael Collison1-1/+5
Fix date on prevfious ChangeLog entry. From-SVN: r249775
2017-06-29re PR target/70119 (AArch64 should take advantage of implicit truncation of ↵Kyrylo Tkachov6-14/+213
variable shift amount without defining SHIFT_COUNT_TRUNCATED) 2017-06-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> Michael Collison <michael.collison@arm.com> PR target/70119 * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1): New pattern. (*aarch64_reg_<mode>3_neg_mask2): New pattern. (*aarch64_reg_<mode>3_minus_mask): New pattern. (*aarch64_<optab>_reg_di3_mask2): New pattern. * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost of shift when the shift amount is masked with constant equal to the size of the mode. * config/aarch64/predicates.md (subreg_lowpart_operator): New predicate. 2017-06-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> Michael Collison <michael.collison@arm.com> PR target/70119 * gcc.target/aarch64/var_shift_mask_1.c: New test. Co-Authored-By: Michael Collison <michael.collison@arm.com> From-SVN: r249774
2017-06-29Fix -mbranch-cost range.Martin Liska2-1/+5
2017-06-29 Martin Liska <mliska@suse.cz> * config/i386/i386.opt: Change range from [1,5] to [0,5]. From-SVN: r249773
2017-06-29re PR ipa/80565 (ICE at -O2 and -O3 in 32-bit mode (not 64-bit) on ↵Yury Gribov3-1/+27
x86_64-linux-gnu (in edge_badness, at ipa-inline.c:1028)) 2017-06-29 Yury Gribov <tetra2005@gmail.com> PR bootstrap/80565 * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization code. * ipa-inline.h (edge_growth_cache_entry::edge_growth_cache_entry): New function. (reset_edge_growth_cache): Update to use constructor. From-SVN: r249771
2017-06-29Daily bump.GCC Administrator1-1/+1
From-SVN: r249769
2017-06-28[AArch64] Do not increase data alignment at -Os and with -fconserve-stack.Ramana Radhakrishnan2-8/+24
We unnecessarily align data to 8 byte alignments even when -Os is specified. This brings the logic in the AArch64 backend more in line with the ARM backend and helps gain some image size in a few places. Caught by an internal report on the size of rodata sections being high with aarch64 gcc. * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New. (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT. Bootstrapped and regression tested on aarch64-none-linux-gnu with no regressions. From-SVN: r249764
2017-06-28PR c++/72764 - ICE with invalid template typename.Jason Merrill5-8/+32
* decl.c (build_typename_type): No longer static. * tree.c (strip_typedefs): Use it instead of make_typename_type. From-SVN: r249760
2017-06-28* config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)Sebastian Peryt9-12/+63
(_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics. testsuite/ChangeLog: * gcc.target/i386/avx512vl-vpermd-1.c (_mm256_permutexvar_epi32): Test new intrinsic. * gcc.target/i386/avx512vl-vpermq-imm-1.c (_mm256_permutex_epi64): Ditto. * gcc.target/i386/avx512vl-vpermq-var-1.c (_mm256_permutexvar_epi64): Ditto. * gcc.target/i386/avx512f-vpermd-2.c: Do not check for AVX512F_LEN. * gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto. * gcc.target/i386/avx512f-vpermq-var-2.c: Ditto. From-SVN: r249759
2017-06-28PR c++/69300 - ICE with self-referential noexceptJason Merrill3-0/+30
* pt.c (maybe_instantiate_noexcept): Check for recursion. From-SVN: r249757
2017-06-28PR c++/61022 - error with variadic template template parmJason Merrill3-1/+31
* pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION. From-SVN: r249756
2017-06-28PR c++/72801 - ICE with variadic partial specializationJason Merrill3-0/+28
* pt.c (unify_pack_expansion): Use PACK_EXPANSION_EXTRA_ARGS. From-SVN: r249755
2017-06-28PR c++/55639 - partial specialization with ::templateJason Merrill3-0/+33
* parser.c (cp_parser_class_head): Handle ::template. From-SVN: r249754
2017-06-28PR c++/45976 - error with ::template in declarator.Jason Merrill3-7/+37
* pt.c (resolve_typename_type): Fix TEMPLATE_ID_EXPR handling. From-SVN: r249753
2017-06-28PR c++/54769 - wrong lookup of dependent template-name.Jason Merrill3-16/+54
* parser.c (cp_parser_template_name): Handle dependent object type. (cp_parser_nested_name_specifier_opt): Make template_keyword_p a parameter. (cp_parser_id_expression): Pass it. (cp_parser_diagnose_invalid_type_name): Handle TEMPLATE_ID_EXPR. From-SVN: r249752
2017-06-28Make the TEMPLATE_ID_EXPR location a range.Jason Merrill2-20/+21
* parser.c (cp_parser_template_id): Use the range location on the TEMPLATE_ID_EXPR. From-SVN: r249751
2017-06-28PR c++/81204 - parse error with dependent template-nameJason Merrill3-5/+34
* parser.c (cp_parser_lookup_name): Disqualify function templates after lookup. From-SVN: r249750
2017-06-28multiarch support for non-glibc linux systemsSzabolcs Nagy4-0/+21
Current multiarch directory name is always *-linux-gnu* on linux, this patch configures different names for uclibc and musl targets. 2017-06-28 Szabolcs Nagy <szabolcs.nagy@arm.com> * config.gcc (*-linux-musl*): Add t-musl tmake_file. (*-linux-uclibc*): Add t-uclibc tmake_file. * config/t-musl: New. * config/t-uclibc: New. From-SVN: r249745
2017-06-28[ARM] Consistently check for neon in vect effective targetsThomas Preud'homme2-38/+58
Conditions checked for ARM targets in vector-related effective targets are inconsistent: * sometimes arm*-*-* is checked * sometimes Neon is checked * sometimes arm_neon_ok and sometimes arm_neon is used for neon check * sometimes check_effective_target_* is used, sometimes * is-effective-target This patch consolidate all of these check into using is-effective-target arm_neon and when little endian was checked, the check is kept. 2017-06-28 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/testsuite/ * lib/target-supports.exp (check_effective_target_vect_int): Replace current ARM check by ARM NEON's availability check. (check_effective_target_vect_intfloat_cvt): Likewise. (check_effective_target_vect_uintfloat_cvt): Likewise. (check_effective_target_vect_floatint_cvt): Likewise. (check_effective_target_vect_floatuint_cvt): Likewise. (check_effective_target_vect_shift): Likewise. (check_effective_target_whole_vector_shift): Likewise. (check_effective_target_vect_bswap): Likewise. (check_effective_target_vect_shift_char): Likewise. (check_effective_target_vect_long): Likewise. (check_effective_target_vect_float): Likewise. (check_effective_target_vect_perm): Likewise. (check_effective_target_vect_perm_byte): Likewise. (check_effective_target_vect_perm_short): Likewise. (check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise. (check_effective_target_vect_widen_sum_qi_to_hi): Likewise. (check_effective_target_vect_widen_mult_qi_to_hi): Likewise. (check_effective_target_vect_widen_mult_hi_to_si): Likewise. (check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise. (check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise. (check_effective_target_vect_widen_shift): Likewise. (check_effective_target_vect_extract_even_odd): Likewise. (check_effective_target_vect_interleave): Likewise. (check_effective_target_vect_multiple_sizes): Likewise. (check_effective_target_vect64): Likewise. (check_effective_target_vect_max_reduc): Likewise. From-SVN: r249744
2017-06-28[arm] Fix incorrect __ARM_ARCH_PROFILE for -march=armv7Richard Earnshaw7-7/+80
ACLE explicitly states that when targetting the common subset of ARMv7-A, ARMv7-R and ARMv7-M, the __ARM_ARCH_PROFILE macro should not be set. We currently set it to 'M' which is clearly erroneous. The logic for creating this is very convoluted and also somewhat fragile, so I've taken the opportunity to use the new CPU and architecture definition infrastructure to record the profile for each architecture explicitly rather than try to reconstruct it from other data. I think this results in a much more robust solution. 2017-06-28 Richard Earnshaw <rearnsha@arm.com> * config/arm/parsecpu.awk (profile): Parse new keyword in an arch context. (gen_comm_data): Emit architectural setting of arch_prof. * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the profile. (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise. (armv8-m.base, armv8-m.main): Likewise. * arm-protos.h (arm_build_target): Add profile field. (arch_option): Likewise. * config/arm/arm.c (arm_configure_build_target): Copy the profile to the active target. * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use arm_active_target.profile. From-SVN: r249743
2017-06-28re PR tree-optimization/81227 (ICE in get_single_symbol, at tree-vrp.c:799)Richard Biener6-3/+39
2017-06-28 Richard Biener <rguenther@suse.de> PR middle-end/81227 * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not TYPE_OVERFLOW_WRAPS. * match.pd (negate_expr_p): Likewise. * tree-ssa-reassoc.c (optimize_range_tests_diff): Use fold_build2, not fold_binary. * gcc.dg/pr81227.c: New testcase. From-SVN: r249742
2017-06-28This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c ↵Wilco Dijkstra2-0/+10
triggered... This patch fixes a failure in gcc.target/aarch64/reload-valid-spoff.c triggered by https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01367.html. In ILP32 all memory accesses must have Pmode as the base address, but aarch64_expand_mov_immediate wasn't emitting a conversion in one case. Besides fixing this add an assert that flags any MEM operands that are not Pmode. gcc/ * config/aarch64/aarch64 (aarch64_expand_mov_immediate): Convert memory address to Pmode. (aarch64_print_operand): Assert MEM operands are always Pmode. From-SVN: r249741
2017-06-28Improve Cortex-A53 shift bypassWilco Dijkstra4-40/+12
The aarch_forward_to_shift_is_not_shifted_reg bypass always returns true on AArch64 shifted instructions. This causes the bypass to activate in too many cases, resulting in slower execution on Cortex-A53 like reported in PR79665. This patch uses the arm_no_early_alu_shift_dep condition instead which improves the example in PR79665 by ~7%. Given it is no longer used, remove aarch_forward_to_shift_is_not_shifted_reg. Also remove an unnecessary REG_P check. gcc/ PR target/79665 * config/arm/aarch-common.c (arm_no_early_alu_shift_dep): Remove redundant if. (aarch_forward_to_shift_is_not_shifted_reg): Remove. * config/arm/aarch-common-protos.h (aarch_forward_to_shift_is_not_shifted_re): Remove. * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass. From-SVN: r249740
2017-06-28re PR ipa/81238 (Target clone support does not make default clone static.)Michael Meissner4-0/+46
[gcc] 2017-06-28 Michael Meissner <meissner@linux.vnet.ibm.com> PR ipa/81238 * multiple_target.c (create_dispatcher_calls): Set the default clone to be static, not public. [gcc/testsuite] 2017-06-28 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/81193 * lib/target-supports.exp (check_ppc_cpu_supports_hw_available): New test to make sure __builtin_cpu_supports works on power7 and newer. From-SVN: r249737
2017-06-28tree-vect-loop.c (vectorizable_reduction): Move special cond reduction IV ↵Richard Biener3-102/+108
var creation ... 2017-06-28 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vectorizable_reduction): Move special cond reduction IV var creation ... (vect_create_epilog_for_reduction): ... here. Remove induction_index parameter. Use STMT_VINFO_VECTYPE. * tree-vect-slp.c (vect_get_constant_vectors): Properly reset constant_p. From-SVN: r249736
2017-06-28Do not allow to inline ifunc resolvers (PR ipa/81128).Martin Liska6-4/+91
2017-06-28 Martin Liska <mliska@suse.cz> PR ipa/81128 * ipa-visibility.c (non_local_p): Handle visibility. 2017-06-28 Martin Liska <mliska@suse.cz> PR ipa/81128 * c-attribs.c (handle_alias_ifunc_attribute): Append ifunc alias to a function declaration. 2017-06-28 Martin Liska <mliska@suse.cz> PR ipa/81128 * gcc.target/i386/pr81128.c: New test. From-SVN: r249735
2017-06-28Introduce IntegerRange for options (PR driver/79659).Martin Liska12-20/+86
2017-06-28 Martin Liska <mliska@suse.cz> PR driver/79659 * common.opt: Add IntegerRange to various options. * opt-functions.awk (integer_range_info): New function. * optc-gen.awk: Add integer_range_info to cl_options struct. * opts-common.c (decode_cmdline_option): Handle CL_ERR_INT_RANGE_ARG. (cmdline_handle_error): Likewise. * opts.c (print_filtered_help): Show valid interval in when --help is provided. * opts.h (struct cl_option): Add range_min and range_max fields. * config/i386/i386.opt: Add IntegerRange for -mbranch-cost. 2017-06-28 Martin Liska <mliska@suse.cz> PR driver/79659 * c.opt: Add IntegerRange to various options. 2017-06-28 Martin Liska <mliska@suse.cz> PR driver/79659 * g++.dg/opt/pr79659.C: New test. From-SVN: r249734
2017-06-28copy-sign-1.c, mult-abs-2.c: Restrict to c99_runtime.Christophe Lyon3-2/+13
2017-06-28 Christophe Lyon <christophe.lyon@linaro.org> * gcc.dg/tree-ssa/copy-sign-1.c: Add c99_runtime effective target and options. * gcc.dg/tree-ssa/mult-abs-2.c: Likewise. From-SVN: r249733