Commit Graph

147840 Commits

Author SHA1 Message Date
Marek Polacek
191816a36b re PR c/7652 (-Wswitch-break : Warn if a switch case falls through)
PR c/7652
gcc/
	* alias.c (find_base_value): Adjust fall through comment.
	* cfgexpand.c (expand_debug_expr): Likewise.
	* combine.c (find_split_point): Likewise.
	(expand_compound_operation): Likewise.  Add FALLTHRU.
	(make_compound_operation): Adjust fall through comment.
	(canon_reg_for_combine): Add FALLTHRU.
	(force_to_mode): Adjust fall through comment.
	(simplify_shift_const_1): Likewise.
	(simplify_comparison): Likewise.
	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Add
	FALLTHRU.
	* config/aarch64/predicates.md: Likewise.
	* config/i386/i386.c (function_arg_advance_32): Likewise.
	(ix86_gimplify_va_arg): Likewise.
	(print_reg): Likewise.
	(ix86_print_operand): Likewise.
	(ix86_build_const_vector): Likewise.
	(ix86_expand_branch): Likewise.
	(ix86_sched_init_global): Adjust fall through comment.
	(ix86_expand_args_builtin): Add FALLTHRU.
	(ix86_expand_builtin): Likewise.
	(ix86_expand_vector_init_one_var): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
	(rs6000_adjust_cost): Likewise.
	(insn_must_be_first_in_group): Likewise.
	* config/rs6000/rs6000.md: Likewise.  Adjust fall through comment.
	* dbxout.c (dbxout_symbol): Adjust fall through comment.
	* df-scan.c (df_uses_record): Likewise.
	* dojump.c (do_jump): Add FALLTHRU.
	* dwarf2out.c (mem_loc_descriptor): Likewise.  Adjust fall through
	comment.
	(resolve_args_picking_1): Adjust fall through comment.
	(loc_list_from_tree_1): Likewise.
	* expmed.c (make_tree): Likewise.
	* expr.c (expand_expr_real_2): Add FALLTHRU.
	(expand_expr_real_1): Likewise.  Adjust fall through comment.
	* fold-const.c (const_binop): Adjust fall through comment.
	(fold_truth_not_expr): Likewise.
	(fold_cond_expr_with_comparison): Add FALLTHRU.
	(fold_binary_loc): Likewise.
	(contains_label_1): Adjust fall through comment.
	(multiple_of_p): Likewise.
	* gcov-tool.c (process_args): Add FALLTHRU.
	* genattrtab.c (check_attr_test): Likewise.
	(write_test_expr): Likewise.
	* genconfig.c (walk_insn_part): Likewise.
	* genpreds.c (validate_exp): Adjust fall through comment.
	(needs_variable): Likewise.
	* gensupport.c (get_alternatives_number): Add FALLTHRU.
	(subst_dup): Likewise.
	* gimple-pretty-print.c (dump_gimple_assign): Likewise.
	* gimplify.c (gimplify_addr_expr): Adjust fall through comment.
	(gimplify_scan_omp_clauses): Add FALLTHRU.
	(goa_stabilize_expr): Likewise.
	* graphite-isl-ast-to-gimple.c (substitute_ssa_name): Adjust fall
	through comment.
	* hsa-gen.c (get_address_from_value): Likewise.
	* ipa-icf.c (sem_function::hash_stmt): Likewise.
	* ira.c (ira_setup_alts): Add FALLTHRU.
	* lra-eliminations.c (lra_eliminate_regs_1): Adjust fall through
	comment.
	* lto-streamer-out.c (lto_output_tree_ref): Add FALLTHRU.
	* opts.c (common_handle_option): Likewise.
	* read-rtl.c (read_rtx_code): Likewise.
	* real.c (round_for_format): Likewise.
	* recog.c (asm_operand_ok): Likewise.
	* reginfo.c (reg_scan_mark_refs): Adjust fall through comment.
	* reload1.c (set_label_offsets): Likewise.
	(eliminate_regs_1): Likewise.
	(reload_reg_reaches_end_p): Likewise.
	* rtlanal.c (commutative_operand_precedence): Add FALLTHRU.
	(rtx_cost): Likewise.
	* sched-rgn.c (is_exception_free): Likewise.
	* simplify-rtx.c (simplify_rtx): Adjust fall through comment.
	* stor-layout.c (int_mode_for_mode): Likewise.
	* toplev.c (print_to_asm_out_file): Likewise.
	(print_to_stderr): Likewise.
	* tree-cfg.c (gimple_verify_flow_info): Likewise.
	* tree-chrec.c (chrec_fold_plus_1): Add FALLTHRU.
	(chrec_fold_multiply): Likewise.
	(evolution_function_is_invariant_rec_p): Likewise.
	(for_each_scev_op): Likewise.
	* tree-data-ref.c (siv_subscript_p): Likewise.
	(get_references_in_stmt): Likewise.
	* tree.c (find_placeholder_in_expr): Adjust fall through comment.
	(substitute_in_expr): Likewise.
	(type_cache_hasher::equal): Likewise.
	(walk_type_fields): Likewise.
	* var-tracking.c (adjust_mems): Add FALLTHRU.
	(set_dv_changed): Adjust fall through comment.
	* varasm.c (default_function_section): Add FALLTHRU.
gcc/c-family/
	* c-common.c (scalar_to_vector): Adjust fall through comment.
	* c-opts.c (c_common_handle_option): Likewise.
	* c-pragma.c (handle_pragma_pack): Add FALLTHRU.
	* c-pretty-print.c (c_pretty_printer::postfix_expression): Adjust
	fall through comment.
	* cilk.c (extract_free_variables): Add FALLTHRU.
gcc/c/
	* c-parser.c (c_parser_external_declaration): Add FALLTHRU.
	(c_parser_postfix_expression): Likewise.
	* c-typeck.c (build_unary_op): Adjust fall through comment.
	(c_mark_addressable): Likewise.
gcc/cp/
	* call.c (add_builtin_candidate): Add FALLTHRU.
	(build_integral_nontype_arg_conv): Adjust fall through comment.
	(build_new_op_1): Add FALLTHRU.
	(convert_like_real): Adjust fall through comment.
	* class.c (fixed_type_or_null): Likewise.
	* constexpr.c (cxx_eval_constant_expression): Likewise.
	(potential_constant_expression_1): Likewise.  Add FALLTHRU.
	* cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
	(cp_fold): Add FALLTHRU.
	* cvt.c (build_expr_type_conversion): Adjust fall through comment.
	* cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
	(pp_cxx_qualified_id): Likewise.
	(cxx_pretty_printer::constant): Adjust fall through comment.
	(cxx_pretty_printer::primary_expression): Add FALLTHRU.
	(pp_cxx_pm_expression): Adjust fall through comment.
	(cxx_pretty_printer::expression): Add FALLTHRU.
	(cxx_pretty_printer::declaration_specifiers): Reformat code.
	(pp_cxx_type_specifier_seq): Adjust fall through comment.
	(pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
	* error.c (dump_type): Adjust fall through comment.
	(dump_decl): Likewise.
	* mangle.c (write_type): Likewise.
	* method.c (synthesized_method_walk): Add FALLTHRU.
	* name-lookup.c (arg_assoc_type): Likewise.
	* parser.c (cp_lexer_print_token): Adjust fall through comment.
	(cp_parser_primary_expression): Add FALLTHRU.
	(cp_parser_operator): Likewise.
	* pt.c (find_parameter_packs_r): Likewise.
	(tsubst_aggr_type): Adjust fall through comment.
	* semantics.c (finish_omp_clauses): Add FALLTHRU.
	* tree.c (lvalue_kind): Likewise.
gcc/fortran/
	* decl.c (match_attr_spec): Add FALLTHRU.
	* primary.c (match_arg_list_function): Likewise.
	* resolve.c (resolve_operator): Adjust fall through comment.
	(fixup_charlen): Add FALLTHRU.
	(resolve_allocate_expr): Adjust fall through comment.
	* trans-array.c (gfc_conv_ss_startstride): Add FALLTHRU.
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Adjust fall through
	comment.
gcc/java/
	* expr.c (java_truthvalue_conversion): Adjust fall through comment.
	* jcf-io.c (verify_constant_pool): Likewise.
	* typeck.c (promote_type): Likewise.
gcc/objc/
	* objc-encoding.c (encode_type): Add FALLTHRU.
libcpp/
	* lex.c (search_line_fast): Add FALLTHRU.
	(_cpp_lex_direct): Likewise.
	(cpp_token_val_index): Adjust fall through comment.
	* macro.c (parse_params): Add FALLTHRU.
	* pch.c (count_defs): Adjust fall through comment.
	(write_defs): Likewise.
libiberty/
	* cp-demangle.c (d_print_mod): Add FALLTHRU.

From-SVN: r239410
2016-08-12 10:30:47 +00:00
Marek Polacek
0c44e080f5 re PR c/7652 (-Wswitch-break : Warn if a switch case falls through)
PR c/7652
	* tree-complex.c (expand_complex_division): Add missing break.

From-SVN: r239409
2016-08-12 10:15:57 +00:00
Jakub Jelinek
e23a7a99f4 re PR sanitizer/71042 (libtsan requires __pointer_chk_guard@GLIBC_PRIVATE (6))
PR sanitizer/71042
	* tsan/tsan_platform_linux.cc: Cherry-pick upstream r278292.
	* tsan/tsan_rtl_aarch64.S: Likewise.

From-SVN: r239407
2016-08-12 10:53:07 +02:00
Richard Biener
8df06bd0eb passes.c (execute_todo): Do not push/pop TV_TODO.
2016-08-12  Richard Biener  <rguenther@suse.de>

	* passes.c (execute_todo): Do not push/pop TV_TODO.
	(execute_one_ipa_transform_pass): Move timevar push/pop TODO execution.
	(execute_one_pass): Likewise.
	* common.opt (ftime-report-details): New switch.
	* doc/invoke.texi (ftime-report-details): Document.
	* timevar.h (timer::print_row): Adjust signature.
	(timer::all_zero): New static helper.
	(timer::child_map_t): New typedef.
	(timer::time_var_def): Add children field.
	* timevar.c (timer::named_items::print): Adjust.
	(timer::~timer): Free timevar recorded children.
	(timer::pop_internal): When -ftime-report-details record
	time spent in sub-timevars.
	(timer::print_row): Adjust.
	(timer::print): Print sub-timevar stats, use all_zero.
	* timevar.def (TV_TODO): Remove.

From-SVN: r239406
2016-08-12 07:38:24 +00:00
Richard Biener
663eecfd13 re PR target/72851 (memory hog with -O3 on s390x-linux-gnu)
2016-08-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/72851
	* tree-ssa-propagate.c: Include cfganal.h.  Rewrite block and stmt
	worklists to use bitmaps indexed in execution order.
	(executable_blocks, cfg_blocks_num, cfg_blocks_tail, cfg_blocks_head,
	bb_in_list, interesting_ssa_edges, varying_ssa_edges): Remove.
	(cfg_blocks): Make a bitmap.
	(bb_to_cfg_order, cfg_order_to_bb, ssa_edge_worklist, uid_to_stmt):
	New globals.
	(cfg_blocks_empty_p): Adjust.
	(cfg_blocks_add): Likewise.
	(cfg_blocks_get): Likewise.
	(add_ssa_edge): Likewise.
	(add_control_edge): Likewise.
	(simulate_stmt): Likewise.
	(process_ssa_edge_worklist): Likewise.
	(simulate_block): Likewise.
	(ssa_prop_init): Compute PRE order and stmt UIDs.
	(ssa_prop_fini): Adjust.
	(ssa_propagate): Adjust.

	* gcc.dg/torture/pr72851.c: New testcase.

From-SVN: r239405
2016-08-12 07:34:40 +00:00
Richard Biener
2650da8892 tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if the currently executable edges have fixed ranges.
2016-08-12  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (vrp_visit_phi_node): Allow a last iteration if
	the currently executable edges have fixed ranges.  Always
	go through update_value_range.

From-SVN: r239404
2016-08-12 07:29:10 +00:00
Alexandre Oliva
e366d7d807 [PR63240] generate debug info for defaulted member functions
This implements <http://dwarfstd.org/ShowIssue.php?issue=141215.3>, a
proposal already accepted for inclusion in DWARF-5, but using
DW_AT_GNU_defaulted instead of DW_AT_defaulted as the attribute name,
because the attribute id for DW_AT_defaulted is not yet publicly
available.

for  include/ChangeLog

	PR debug/63240
	* dwarf2.def (DW_AT_deleted, DW_AT_defaulted): New.
	* dwarf2.h (enu dwarf_defaulted_attribute): New.

for  gcc/ChangeLog

	PR debug/63240
	* langhooks-def.h
	(LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Const_tree-ify.
	(LANG_HOOKS_FUNCTION_DECL_DELETED_P): Likewise.
	(LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Set default.
	(LANG_HOOKS_DECLS): Add it.
	* langhooks.h (struct lang_hooks_for_decls): Add
	function_decl_defaulted.  Const_tree-ify
	function_decl_explicit_p and function_decl_deleted_p.
	* dwarf2out.c (gen_subprogram_die): Add DW_AT_defaulted
	attribute.  Add DW_AT_deleted instead of DW_AT_GNU_deleted,
	also at strict DWARF v5.

for  gcc/cp/ChangeLog

	PR debug/63240
	* cp-objcp-common.c (cp_function_decl_defaulted): New.
	(cp_function_decl_explicit_p): Const_tree-ify.
	(cp_function_decl_deleted_p): Likewise.
	* cp-objcp-common.h (cp_function_decl_defaulted): Declare.
	(cp_function_decl_explicit_p): Const_tree-ify.
	(cp_function_decl_deleted_p): Likewise.
	(LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.

for  gcc/testsuite/ChangeLog

	PR debug/63240
	* g++.dg/debug/dwarf2/defaulted-member-function-1.C: New.
	* g++.dg/debug/dwarf2/defaulted-member-function-2.C: New.
	* g++.dg/debug/dwarf2/defaulted-member-function-3.C: New.
	* g++.dg/debug/dwarf2/deleted-member-function.C: Expect
	DW_AT_deleted.

From-SVN: r239403
2016-08-12 07:11:50 +00:00
Alexandre Oliva
71e1a6a4c7 [PR55641] drop spurious const_type from reference_type variables
Although C++ reference types, denoted by DW_TAG_reference_type in
DWARFv2+ debug info, are unchangeable, we output names of reference type
with DW_TAG_const_type, because internally we mark such variables as
TREE_READONLY.  That's an internal implementation detail that shouldn't
leak to debug information.  This patch fixes this.

for  gcc/ChangeLog

	PR debug/55641
	* dwarf2out.c (decl_quals): Don't map TREE_READONLY to
	TYPE_QUAL_CONST in reference-typed decls.

for  gcc/testsuite/ChangeLog

	PR debug/55641
	* g++.dg/debug/dwarf2/ref-1.C: New.

From-SVN: r239402
2016-08-12 07:11:36 +00:00
Alexandre Oliva
8aaf799b00 [PR49366] emit loc exprs for C++ non-virtual pmf template value parms
We used to emit, in debug information, the values bound to pointer to
member function template parameters only when they were NULL or
virtual member functions, because those can be represented with
DW_AT_const_value.

In order to represent the symbolic pointer to member function
constants for non-virtual member functions, we'd need to be able to
emit relocations for part of DW_AT_const_value, which we don't.  The
more viable alternative is to use DW_AT_location to represent such
values, as slated for inclusion in DWARFv5, according to
<URL:http://www.dwarfstd.org/ShowIssue.php?issue=130412.1>.

With this patch, when we can't emit a DW_AT_const_value, we emit each
"member" of the pointer to member function "record" as a
DW_OP_stack_value DW_OP_piece, as long as the referenced member
function is output in the same translation unit, otherwise we'd get
relocations to external symbols, something to avoid in debug sections.


for  gcc/ChangeLog

	PR debug/49366
	* dwarf2out.c (loc_list_from_tree_1): Expand some CONSTRUCTORs
	in DW_OP_pieces, just enough to handle pointers to member
	functions.
	(gen_remaining_tmpl_value_param_die_attribute): Use a location
	expression on DWARFv5 if a constant value doesn't work.

for  gcc/testsuite/ChangeLog

	PR debug/49366
	* g++.dg/debug/dwarf2/template-params-12.H: New.
	* g++.dg/debug/dwarf2/template-params-12f.C: New.
	* g++.dg/debug/dwarf2/template-params-12g.C: New.
	* g++.dg/debug/dwarf2/template-params-12n.C: New.
	* g++.dg/debug/dwarf2/template-params-12s.C: New.
	* g++.dg/debug/dwarf2/template-params-12u.C: New.
	* g++.dg/debug/dwarf2/template-params-12v.C: New.
	* g++.dg/debug/dwarf2/template-params-12w.C: New.

From-SVN: r239401
2016-08-12 07:11:23 +00:00
GCC Administrator
df5b19dcc1 Daily bump.
From-SVN: r239400
2016-08-12 00:16:15 +00:00
David Malcolm
5714dbda99 Add selftests to selftest.c
gcc/ChangeLog:
	* selftest-run-tests.c (selftest::run_tests): Call selftest_c_tests.
	* selftest.c (selftest::test_assertions): New function.
	(selftest::selftest_c_tests): New function.
	* selftest.h (selftest::selftest_c_tests): New declaration.

From-SVN: r239397
2016-08-11 23:36:46 +00:00
Richard Biener
2c90c549f9 re PR rtl-optimization/72855 (Long compile time due to integrity checking during dataflow analysis per loop)
2016-08-11  Richard Biener  <rguenther@suse.de>
	    Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR rtl-optimization/72855
	* df-core.c (df_verify): Turn off DF_VERIFY_SCHEDULED at end.


Co-Authored-By: Bill Schmidt <wschmidt@linux.vnet.ibm.com>

From-SVN: r239395
2016-08-11 22:20:41 +00:00
Bill Schmidt
06f9caede2 re PR target/72863 (Powerpc64le: redundant swaps when using vec_vsx_ld/st)
[gcc]

2016-08-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR target/72863
	* vsx.md (vsx_load_<mode>): For P8LE, emit swaps at expand time.
	(vsx_store_<mode>): Likewise.

[gcc/testsuite]

2016-08-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR target/72863
	* gcc.target/powerpc/pr72863.c: New test.

From-SVN: r239394
2016-08-11 21:39:49 +00:00
Ian Lance Taylor
3d0fa95d5c os: fix build tags for dir_regfile.go
We want to build dir_regfile.go if not GNU/linux, and not solaris/386,
    and not solaris/sparc.  The latter two conditions were incorrect.  To
    write ! solaris/386 we have to write !solaris !386.  I forgot De
    Morgan's Law.
    
    Reviewed-on: https://go-review.googlesource.com/26870

From-SVN: r239393
2016-08-11 21:36:13 +00:00
Uros Bizjak
a8b956c1bc constexpr-lambda6.C: Remove dg-do run.
* g++.dg/cpp1z/constexpr-lambda6.C: Remove dg-do run.

From-SVN: r239392
2016-08-11 23:30:35 +02:00
Uros Bizjak
df83974966 * testsuite/ChangeLog: Remove merge marker.
From-SVN: r239385
2016-08-11 21:07:43 +02:00
H.J. Lu
c73dd9864b Support TImode CONST_WIDE_INT store in 64-bit STV
Support TImode CONST_WIDE_INT store generated from piecewise store.
Need to verify performance impact before enabling TImode CONST_INT
store for __int128.

gcc/

	* config/i386/i386.c (timode_scalar_to_vector_candidate_p): Allow
	TImode CONST_WIDE_INT store.
	(timode_scalar_chain::convert_insn): Handle CONST_WIDE_INT store.

gcc/testsuite/

	* gcc.target/i386/pieces-strcpy-1.c: New test.
	* gcc.target/i386/pieces-strcpy-2.c: Likewise.

From-SVN: r239383
2016-08-11 10:36:52 -07:00
Jakub Jelinek
385ed708b2 re PR c++/72868 (Constexpr expressions mistreat case ranges)
PR c++/72868
	* constexpr.c (label_matches): Handle case range expressions.

	* g++.dg/cpp1y/constexpr-switch4.C: New test.

From-SVN: r239379
2016-08-11 17:59:53 +02:00
H.J. Lu
df7ec09f12 Use TImode for piecewise move in 64-bit mode
Use TImode for piecewise move in 64-bit mode.  We should use TImode in
32-bit mode and use OImode or XImode if they are available.  But since
by_pieces_ninsns determines the widest mode with MAX_FIXED_MODE_SIZE,
we can only use TImode in 64-bit mode.

gcc/

	* config/i386/i386.h (MOVE_MAX_PIECES): Use TImode in 64-bit
	mode if unaligned SSE load and store are optimal.

gcc/testsuite/

	* gcc.target/i386/pieces-memcpy-1.c: New test.
	* gcc.target/i386/pieces-memcpy-2.c: Likewise.
	* gcc.target/i386/pieces-memcpy-3.c: Likewise.
	* gcc.target/i386/pieces-memcpy-4.c: Likewise.
	* gcc.target/i386/pieces-memcpy-5.c: Likewise.
	* gcc.target/i386/pieces-memcpy-6.c: Likewise.

From-SVN: r239378
2016-08-11 08:51:01 -07:00
Jason Merrill
4200a7231e PR c++/73456 - ICE with constrained parameter pack.
* logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.

From-SVN: r239376
2016-08-11 11:43:12 -04:00
Rainer Orth
e8283787cb Include <stdlib.h> in intrinsics/random.c
* intrinsics/random.c: Include <stdlib.h>.

From-SVN: r239375
2016-08-11 15:26:07 +00:00
Jakub Jelinek
7ddbcf6bb8 Fix up ChangeLog entry.
From-SVN: r239373
2016-08-11 17:09:16 +02:00
Ville Voutilainen
ca1ab6be3b Implement C++17 make_from_tuple.
* include/std/tuple (__make_from_tuple_impl, make_from_tuple): New.
	* testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.

From-SVN: r239372
2016-08-11 17:51:47 +03:00
Jakub Jelinek
b95a64bb00 re PR c/72816 (ICE on x86_64-linux-gnu (tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1282))
PR c/72816
	* c-decl.c (grokdeclarator): When adding TYPE_DOMAIN for flexible
	array member through typedef, for orig_qual_indirect == 0 clear
	orig_qual_type.

	* gcc.dg/pr72816.c: New test.

From-SVN: r239371
2016-08-11 16:50:09 +02:00
Ville Voutilainen
68a51b68bd Implement LWG 2758.
* include/bits/basic_string.h
	(append(__sv_type, size_type, size_type)): Turn into a template,
	change parameter type, constrain, add a conversion to __sv_type
	from the dependent parameter type.
	(assign(__sv_type, size_type, size_type)): Likewise.
	(insert(size_type, __sv_type, size_type, size_type)): Likewise.
	(replace(size_type, size_type, __sv_type, size_type, size_type)):
	Likewise.
	(compare(size_type, size_type,__sv_type, size_type, size_type)):
	Likewise.
	* testsuite/21_strings/basic_string/lwg2758.cc: New.

From-SVN: r239370
2016-08-11 17:45:23 +03:00
Martin Liska
3f1b33737d mark_spam.py: mark attachments as obsolete and rename them
* mark_spam.py: Mark attachments as obsolete and rename them.

From-SVN: r239368
2016-08-11 13:40:37 +00:00
Bernd Edlinger
5953774463 re PR tree-optimization/71083 (Unaligned bit-field address when predictive commoning)
2016-08-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/71083
        * tree-predcom.c (ref_at_iteration): Correctly align the
        reference type.

testsuite:
2016-08-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR tree-optimization/71083
        * gcc.c-torture/execute/pr71083.c: New test.
        * gnat.dg/loop_optimization23.adb: New test.
        * gnat.dg/loop_optimization23_pkg.ads: New test.
        * gnat.dg/loop_optimization23_pkg.adb: New test.

From-SVN: r239362
2016-08-11 13:07:29 +00:00
Andreas Krebbel
2d71f11883 S/390: Provide low-level builtins with __int128 ops.
gcc/ChangeLog:

2016-08-11  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-builtin-types.def: Add INT128 types.
	* config/s390/s390-builtins.def: Add INT128 variants for the add
	sub low-level builtins dealing with TImode.
	* config/s390/s390.c (s390_expand_builtin): Allow mode conversions
	via subreg when expanding a builtin.
	* config/s390/s390.md: Remove UNSPEC_VEC_ADDC_U128,
	UNSPEC_VEC_SUB_U128, and UNSPEC_VEC_SUBC_U128 constants.
	Fix comment.
	* config/s390/vecintrin.h: Adjust builtin names accordingly.
	* config/s390/vx-builtins.md ("vec_add_u128"): Remove expander.
	("vec_addc<mode>", "vec_addc_u128"): Merge to
	"vacc<bhfgq>_<mode>".
	("vec_adde_u128"): Rename to "vacq". Change mode to TImode.
	("vec_addec_u128"): Rename to "vacccq". Change mode to TImode.
	("vec_subc<mode>", "vec_subc_u128"): Merge to
	"vscbi<bhfgq>_<mode>".
	("vec_sube_u128"): Rename to "vsbiq". Change mode to TImode.
	("vec_subec_u128"): Rename to "vsbcbiq". Change mode to TImode.

From-SVN: r239361
2016-08-11 11:15:50 +00:00
Andreas Krebbel
a9040a94b4 S/390: Fix vlvg vlgv low-level builtins.
gcc/ChangeLog:

2016-08-11  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-builtins.def: Mark last operand of s390_vlvg*
	and s390_vlgv* builtins as element selector.

From-SVN: r239360
2016-08-11 11:14:12 +00:00
Bin Cheng
9ac2d1dee7 aarch64-simd.md (vcond<mode><mode>): Delete unused declaration.
* config/aarch64/aarch64-simd.md (vcond<mode><mode>): Delete
	unused declaration.
	(vcond<v_cmp_mixed><mode>): Ditto.
	(vcondu<mode><mode>, vcondu<mode><v_cmp_mixed>): Ditto.

From-SVN: r239359
2016-08-11 10:29:51 +00:00
Bin Cheng
bb2767763e aarch64-simd.md (vec_cmp<mode><v_cmp_result>): Init variable explicitly, also assert on it before use.
* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_cmp_result>: Init
	variable explicitly, also assert on it before use.

From-SVN: r239358
2016-08-11 10:01:03 +00:00
Richard Biener
183ac6d0d2 re PR tree-optimization/72772 (Missed SCEV after pass reordering@236440)
2016-08-11  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/72772
	* cfgloopmanip.c (create_preheader): Use split_edge if there
	is a single loop entry, avoiding degenerate PHIs.

	* gcc.dg/graphite/pr35356-1.c: Adjust.
	* gcc.dg/tree-ssa/pr59597.c: Likewise.

From-SVN: r239357
2016-08-11 09:02:04 +00:00
Janne Blomqvist
b152f5a2b3 Replace KISS PRNG with xorshift1024* using per-thread state.
frontend:

2016-08-11  Janne Blomqvist  <jb@gcc.gnu.org>

	* check.c (gfc_check_random_seed): Use new seed size in check.
	* intrinsic.texi (RANDOM_NUMBER): Updated documentation.
	(RANDOM_SEED): Likewise.


testsuite:

2016-08-11  Janne Blomqvist  <jb@gcc.gnu.org>

	* gfortran.dg/random_7.f90: Take into account that the last seed
	value is the special p value.
	* gfortran.dg/random_seed_1.f90: Seed size is now constant.


libgfortran:
2016-08-11  Janne Blomqvist  <jb@gcc.gnu.org>

	* intrinsics/random.c: Replace KISS with xorshift1024* using
	per-thread state.
	* runtime/main.c (init): Don't call random_seed_i4.

From-SVN: r239356
2016-08-11 11:58:55 +03:00
Richard Biener
bb7ebad1c0 tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove unconditional TODO_cleanup_cfg.
2016-08-11  Richard Biener  <rguenther@suse.de>

	* tree-ssa-threadbackward.c (pass_data_thread_jumps): Remove
	unconditional TODO_cleanup_cfg.
	(pass_thread_jumps::execute): Initialize loops, perform a CFG
	cleanup only if we threaded a jump.

	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust.

From-SVN: r239355
2016-08-11 08:49:56 +00:00
GCC Administrator
7d188edd73 Daily bump.
From-SVN: r239351
2016-08-11 00:16:14 +00:00
Alan Modra
763a282e01 missed from last commit
From-SVN: r239343
2016-08-11 08:42:56 +09:30
Alan Modra
2e186411b3 [LRA] Reload of slow mems
pr71680.c -m64 -O1 -mlra, ira output showing two problem insns.
(insn 7 5 26 3 (set (reg:SI 159 [ a ])
        (mem/c:SI (reg/f:DI 158) [1 a+0 S4 A8])) pr71680.c:13 464 {*movsi_internal1}
     (expr_list:REG_EQUIV (mem/c:SI (reg/f:DI 158) [1 a+0 S4 A8])
        (nil)))
(insn 26 7 27 3 (set (reg:DI 162)
        (unspec:DI [
                (fix:SI (subreg:SF (reg:SI 159 [ a ]) 0))
            ] UNSPEC_FCTIWZ)) pr71680.c:13 372 {fctiwz_sf}
     (expr_list:REG_DEAD (reg:SI 159 [ a ])
        (nil)))
Insn 26 requires that reg 159 be of class FLOAT_REGS.

first lra action:
deleting insn with uid = 7.
Changing pseudo 159 in operand 1 of insn 26 on equiv [r158:DI]
      Creating newreg=164, assigning class ALL_REGS to subreg reg r164
   26: r162:DI=unspec[fix(r164:SI#0)] 7
      REG_DEAD r159:SI
    Inserting subreg reload before:
   30: r164:SI=[r158:DI]
[snip]
      Change to class FLOAT_REGS for r164

Well, that didn't do much.  lra tried the equiv mem, found that didn't
work, and had to reload.  Effectively getting back to the two original
insns but r159 replaced with r164.  simplify_operand_subreg did not do
anything in this case because SLOW_UNALIGNED_ACCESS was true (wrongly
for power8, but that's beside the point).  So now we have, using
abbreviated rtl notation:
r164:SI=[r158:DI]
r162:DI=unspec[fix(r164:SI)]
The problem here is that the first insn isn't valid, due to the rs6000
backend not supporting SImode in fprs, and r164 must be an fpr to make
the second insn valid.

next lra action:
      Creating newreg=165 from oldreg=164, assigning class GENERAL_REGS to r165
   30: r165:SI=[r158:DI]
    Inserting insn reload after:
   31: r164:SI=r165:SI
so now we have
r165:SI=[r158:DI]
r164:SI=r165:SI
r162:DI=unspec[fix(r164:SI)]

This ought to be good on power8, except for one little thing.
r165 is GENERAL_REGS so the first insn is good, a gpr load from mem.
r164 is FLOAT_REGS, making the last insn good, a fctiwz.
The second insn ought to be a sldi, mtvsrd, xscvspdpn combination, but
that is only supported for SFmode.  So lra continue on reloading the
second insn, but in vain because it never tries anything other than
SImode and as noted above, SImode is not valid in fprs.

What this patch does is arrange to emit the two reloads needed for the
SLOW_UNALIGNED_ACCESS case at once, moving the subreg to the second
insn in order to switch modes, producing:

r164:SI=[r158:DI]
r165:SF=r164:SI#0
r162:DI=unspec[fix(r165:SF)]

I've also tidied a couple of other things:
1) "old" is unnecessary as it duplicated "operand".
2) Rejecting mem subregs due to SLOW_UNALIGNED_ACCESS only makes sense
if the original mode was not slow.

	PR target/71680
	* lra-constraints.c (simplify_operand_subreg): Allow subreg
	mode for mem when SLOW_UNALIGNED_ACCESS if inner mode is also
	slow.  Emit two reloads for slow mem case, first loading in
	fast innermode, then converting to required mode.
testsuite/
	* gcc.target/powerpc/pr71680.c: New.

From-SVN: r239342
2016-08-11 08:42:11 +09:30
Jason Merrill
452df4a4e6 * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_if_constexpr.
From-SVN: r239340
2016-08-10 18:38:34 -04:00
Jason Merrill
99f9d4b1b6 Implement C++17 constexpr if.
* cp-tree.h (IF_STMT_CONSTEXPR_P): New.
	* name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
	* parser.h (struct cp_parser): Add in_discarded_stmt field.
	* parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
	(cp_parser_jump_statement): Avoid deducing from a discarded return.
	* pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
	* semantics.c (begin_if_stmt): Set the binding level this_entity.
	(finish_if_stmt_cond): Require the condition of a
	constexpr if to be constant.
	* decl.c (level_for_constexpr_if): New.
	(named_label_entry): Add in_constexpr_if field.
	(poplevel_named_label_1): Set it.
	(check_goto): Check it.
	(check_previous_goto_1): Check level_for_constexpr_if.

From-SVN: r239338
2016-08-10 17:58:23 -04:00
Kelvin Nilsen
e9e6d4f6cc altivec.h (vec_extract_exp): New macro.
gcc/ChangeLog:

2016-08-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* config/rs6000/altivec.h (vec_extract_exp): New macro.
	(vec_extract_sig): New macro.
	(vec_insert_exp): New macro.
	(vec_test_data_class): New macro.
	(scalar_extract_exp): New macro.
	(scalar_extract_sig): New macro.
	(scalar_insert_exp): New macro.
	(scalar_test_data_class): New macro.
	(scalar_test_neg): New macro.
	(scalar_cmp_exp_gt): New macro.
	(scalar_cmp_exp_lt): New macro.
	(scalar_cmp_exp_eq): New macro.
	(scalar_cmp_exp_unordered): New macro.
	* config/rs6000/predicates.md (u7bit_cint_operand): New predicate
	to enforce constraint that operand is a 7-bit unsigned literal.
	* config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_1): New macro
	for power9 built-ins.
	(BU_P9V_VSX_2): Likewise.
	(BU_P9V_64BIT_VSX_2): Likewise.
	(VSEEDP): Add scalar extract exponent support.
	(VSEESP): Add scalar extract signature support.
	(VSTDCNDP): Add scalar test negative support.
	(VSTDCNSP): Likewise.
	(VSIEDP): Add scalar insert exponent support.
	(VSCEDPGT): Add scalar compare exponent greater than support.
	(VSCEDPLT): Add scalar compare exponent less than support.
	(VSCEDPEQ): Add scalar compare exponent test-for-equality support.
	(VSCEDPUO): Add scalar compare exponent test-for-unordered support.
	(VSTDCDP): Add scalar test data class support.
	(VSTDCSP): Likewise.
	(VSEEDP): Add overload support for scalar extract exponent
	operation.
	(VSESDP): Add overload support for scalar extract signature
	operation.
	(VSTDCN): Add overload support for scalar test negative
	operation.
	(VSTDCNDP): Add overload support for scalar test negative
	operation.
	(VSTDCNSP): Add overload support for scalar test negative
	operation.
	(VSIEDP): Add overload support for scalar insert exponent
	operation.
	(VSTDC): Add overload support for scalar test data class
	operation.
	(VSTDCDP): Add overload support for scalar test data class
	operation.
	(VSTDCSP): Add overload support for scalar test data class
	opreation.
	(VSCEDPGT): Add overload support for scalar compare exponent
	greater than operation.
	(VSCEDPLT): Add overload support for scalar compare exponent
	less than operation.
	(VSCEDPEQ): Add overload support for scalar compare exponent
	test-for-equality operation.
	(VSCEDPUO): Add overload support for scalar compare exponent
	test-for-unordered operation.
	(VEEDP): Add vector extract exponent support.
	(VEESP): Likewise.
	(VESDP): Add vector extract significand support.
	(VESSP): Likewise.
	(VIEDP): Add vector insert exponent support.
	(VIESP): Likewise.
	(VTDCDP): Add vector test data class support.
	(VTDCSP): Likewise.
	(VES): Add overload support for vector extract significand operation.
	(VESDP): Likewise.
	(VESSP): Likewise
	(VEE): Add overload support for vector extract exponent operation.
	(VEEDP): Likewise.
	(VEESP): Likewise.
	(VTDC): Add overload support for vector test data class operation.
	(VTDCDP): Likewise.
	(VTDCSP): Likewise.
	(VIE): Add overload support for vector insert exponent operation.
	(VIEDP): Likewise.
	(VIESP): Likewise.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	overloaded binary floating point functions.
	(altivec_resolve_overloaded_builtin): Improve error messages to
	distinguish between functions not supported in the current
	compiler configuration and functions that were invoked with an
	invalid parameter combination, and include the built-in function
	name in both error messages.
	* config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_name):
	New prototype.
	* config/rs6000/rs6000.c (rs6000_overloaded_builtin_name): New
	function.
	(rs6000_expand_binop_builtin): Add check to enforce that argument
	2 of the test data class operations is a 7-bit unsigned literal.
	(rs6000_invalid_builtin): Add code to issue an error message if a
	built-in function that requires the power9_vector and -m32
	command-line options is compiled without these options.
	* config/rs6000/vsx.md (UNSPEC_VSX_SXEXPDP): New value.
	(UNSPEC_VSX_SXSIGDP): New value.
	(UNSPEC_VSX_SXSIGPDP): New value.
	(UNSPEC_VSX_SIEXPDP): New value.
	(UNSPEC_VSX_SCMPEXPDP): New value.
	(UNSPEC_VSX_STSTDC): New value.
	(UNSPEC_VSX_VXEXP): New value.
	(UNSPEC_VSX_VXSIG): New value.
	(UNSPEC_VSX_VIEXP): New value.
	(UNSPEC_VSX_VTSTDC): New value.
	(xsxexpdp): New insn for scalar extract exponent.
	(xsxsigdp): New insn for scalar extract significand.
	(xsiexpdp): New insn for scalar insert exponent.
	(xscmpexpdp_<code>): New expansion for scalar compare exponents.
	(*xscmpexpdp): New insn for scalar compare exponents.
	(xststdc<Fvsx): New expansion for both single- and
	double-precision scalar test data class operations.
	(xststdcneg<Fvsx>): New expansion for both single- and
	double-precision scalar test for negative value operations.
	(*xststdc<Fvsx>): New insn for scalar test data class
	operation.
	(xvxexp<VSs>): New insn for single- and double-precision
	vector extract exponent operation.
	(xvxsig<VSs>): New insn for single- and double-precision
	vector extract significand operation.
	(xviexp<VSs>): New insn for single- and double-precision
	vector insert exponent operation.
	(xvtstdc<VSs>): New insn for single- and double-precision
	vector test data class operation.
	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
	built-in functions to represent the Power9 binary floating-point
	support instructions.

gcc/testsuite/ChangeLog:

2016-08-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* gcc.target/powerpc/bfp/bfp.exp: New file.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-unordered-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-exp-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-exp-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-exp-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-sig-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-sig-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-extract-sig-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-insert-exp-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-insert-exp-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-insert-exp-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-3.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-4.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-5.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-6.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-7.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-neg-0.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-neg-1.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-neg-2.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-neg-3.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-exp-0.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-exp-1.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-exp-2.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-exp-3.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-sig-0.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-sig-1.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-sig-2.c: New test.
	* gcc.target/powerpc/bfp/vec-extract-sig-3.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-0.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-1.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-2.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-3.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-0.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-1.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-2.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-3.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-4.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-5.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-6.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-7.c: New test.

From-SVN: r239334
2016-08-10 19:04:13 +00:00
Ian Lance Taylor
4cc1fc4f9e compiler: annotate or fix fall through cases in switch statements
A new GCC warning, -Wimplicit-fallthrough, detected these three cases
    where a switch case falls through to another.  One of them looks like
    a bug, so I fixed it; the two other look like intended fall throughs
    so I just added a "fall through" comment to suppress the GCC warning.
    
    Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.
    
    Reviewed-on: https://go-review.googlesource.com/26695

From-SVN: r239332
2016-08-10 18:56:35 +00:00
Bin Cheng
5a02adf63e * doc/sourcebuild.texi (@item vect_cond_mixed): New item.
From-SVN: r239330
2016-08-10 15:47:58 +00:00
Bin Cheng
9c8eabea69 target-supports.exp (check_effective_target_vect_cond_mixed): Add aarch64*-*-*.
gcc/testsuite
	* lib/target-supports.exp (check_effective_target_vect_cond_mixed):
	Add aarch64*-*-*.

From-SVN: r239329
2016-08-10 15:45:25 +00:00
Bin Cheng
6c553b7606 iterators.md (V_cmp_mixed, [...]): New.
* config/aarch64/iterators.md (V_cmp_mixed, v_cmp_mixed): New.
	* config/aarch64/aarch64-simd.md (<su><maxmin>v2di3): Call
	gen_vcondv2div2di instead of gen_aarch64_vcond_internalv2div2di.
	(aarch64_vcond_internal<mode><mode>): Delete pattern.
	(aarch64_vcond_internal<VDQF_COND:mode><VDQF:mode>): Ditto.
	(vcond<v_cmp_result><mode>): Ditto.
	(vcond<mode><mode>): Re-implement using vec_cmp and vcond_mask.
	(vcondu<mode><mode>): Ditto.
	(vcond<v_cmp_mixed><mode>): New pattern.
	(vcondu<mode><v_cmp_mixed>): New pattern.
	(aarch64_cmtst<mode>): Revise comment using aarch64_vcond instead
	of aarch64_vcond_internal.

	gcc/testsuite
	* gcc.target/aarch64/simd/vcond-ne.c: New test.

From-SVN: r239328
2016-08-10 15:34:23 +00:00
Alan Lawrence
45d569f37f aarch64-simd.md (vec_cmp<mode><mode>): New pattern.
* config/aarch64/aarch64-simd.md (vec_cmp<mode><mode>): New pattern.
	(vec_cmp<mode><v_cmp_result>): New pattern.
	(vec_cmpu<mode><mode>): New pattern.
	(vcond_mask_<mode><v_cmp_result>): New pattern.

Co-Authored-By: Bin Cheng <bin.cheng@arm.com>
Co-Authored-By: Renlin Li <renlin.li@arm.com>

From-SVN: r239327
2016-08-10 15:26:14 +00:00
Yuri Rumyantsev
ff4fa9934e re PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90 -O3 -g execution test)
Fix PR tree-optimization/71734

2016-08-10  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR tree-optimization/71734
	* tree-ssa-loop-im.c (ref_indep_loop_p): Add new argument
	REF_LOOP, invoke ref_indep_loop_p_1.
	(outermost_indep_loop): Pass LOOP argumnet where REF was defined
	to ref_indep_loop_p.
	(ref_indep_loop_p_1): Fix commentary, add argument REF_LOOP,
	combine it with ref_indep_lopp_p_2, update SAFELEN if only REF
	is inside LOOP, do not cache dpendence value for loops with
	non-zero SAFELEN.
	(ref_indep_loop_p_2): Delete function.
	(can_sm_ref_p): Pass LOOP as additional argument to
	ref_indep_loop_p.

From-SVN: r239326
2016-08-10 08:03:02 -07:00
Michael Meissner
a0883b0800 re PR target/72853 (gcc/testsuite/gcc.c-torture/execute/20021120-1.c generates incorrect stxssp op with -mcpu=power9)
[gcc]
2016-08-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/72853
	* config/rs6000/rs6000.c (mem_operand_ds_form): Add check for op
	being an offsettable address.

[gcc/testsuite]
2016-08-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/72853
	* gcc.target/powerpc/pr72853.c: New test.

From-SVN: r239325
2016-08-10 13:49:12 +00:00
Martin Liska
a266236e85 Add new *_atomic counter update function
PR gcov-profile/58306
	* Makefile.in: New functions (modules) are added.
	* libgcov-profiler.c (__gcov_interval_profiler_atomic): New
	function.
	(__gcov_pow2_profiler_atomic): New function.
	(__gcov_one_value_profiler_body): New argument is instroduced.
	(__gcov_one_value_profiler): Call with the new argument.
	(__gcov_one_value_profiler_atomic): Likewise.
	(__gcov_indirect_call_profiler_v2): Likewise.
	(__gcov_time_profiler_atomic): New function.
	(__gcov_average_profiler_atomic): Likewise.
	(__gcov_ior_profiler_atomic): Likewise.
	* libgcov.h: Declare the aforementioned functions.
	PR gcov-profile/58306
	* gcc.dg/tree-prof/val-profiler-threads-1.c: New test.
	PR gcov-profile/58306
	* tree-profile.c (gimple_init_edge_profiler): Create conditionally
	atomic variants of profile update functions.

From-SVN: r239324
2016-08-10 13:14:56 +00:00
Martin Liska
22063dbc90 Cherry-pick fprofile-generate-atomic from google/gcc-4_9
Cherry picked (and modified) from google-4_7 branch
	2012-12-26  Rong Xu  <xur@google.com>
	* common.opt (fprofile-update): Add new flag.
	* coretypes.h: Define enum profile_update.
	* doc/invoke.texi: Document -fprofile-update.
	* gcov-io.h: Declare GCOV_TYPE_ATOMIC_FETCH_ADD and
	GCOV_TYPE_ATOMIC_FETCH_ADD_FN.
	* tree-profile.c (gimple_init_edge_profiler): Generate
	also atomic profiler update.
	(gimple_gen_edge_profiler): Likewise.
	* g++.dg/gcov/gcov-threads-1.C: New test.

From-SVN: r239323
2016-08-10 13:11:42 +00:00
David Malcolm
5a39e998c8 toplev.c: set FILE * globals to NULL after fclose
gcc/ChangeLog:
	* toplev.c (finalize): Set aux_info_file, asm_out_file, and
	stack_usage_file to NULL after fclose calls.

From-SVN: r239322
2016-08-10 13:08:13 +00:00