158227 Commits

Author SHA1 Message Date
Julia Koval
b7b0a4fa60 Enable VAES support [1/5]
gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
	OPTION_MASK_ISA_VAES_UNSET): New.
	(ix86_handle_option): Handle -mvaes.
	* config/i386/cpuid.h: Define bit_VAES.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
	* config/i386/i386-c.c (__VAES__): New.
	* config/i386/i386.c (ix86_target_string): Add -mvaes.
	(ix86_valid_target_attribute_inner_p): Ditto.
	* config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
	* config/i386/i386.opt: Add -mvaes.
	* doc/invoke.texi: Ditto.

From-SVN: r255571
2017-12-12 05:17:03 +00:00
Alexandre Oliva
102d484d48 [IEPM] Introduce debug hook for inline entry point markers
The inline_entry hook will be given a definition in a later patch.

for  gcc/ChangeLog

	* debug.h (gcc_debug_hooks): Add inline_entry.
	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
	* debug.c (do_nothing_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
	(dwarf2_lineno_debug_hooks): Likewise.

From-SVN: r255570
2017-12-12 02:16:47 +00:00
Alexandre Oliva
8697bf9f46 [SFN] Introduce -gstatement-frontiers option, enable debug markers
Introduce a command line option to enable statement frontiers, enabled
by default in optimized builds with DWARF2+ debug information.

This patch depends on an earlier patch that completed the
infrastructure for debug markers, and on another patch that turns -g
into a negatable option prefix.

for  gcc/ChangeLog

	* common.opt (gstatement-frontiers): New, setting
	debug_nonbind_markers_p.
	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
	* toplev.c (process_options): Autodetect value for debug statement
	frontiers option.
	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.

From-SVN: r255569
2017-12-12 02:16:31 +00:00
Alexandre Oliva
96a95ac18c [SFN] introduce statement frontier notes, still disabled
This patch completes the infrastructure for the introduction of
statement frontiers in C-family languages.

It brings in all the code remaining code needed to introduce and
transform begin stmt trees, gimple stmts, insns and notes, and
ultimately use them to generate the is_stmt column in DWARF2+ line
number tables/programs, however none of it is activated: the option
that would do so will be introduced in a subsequent patch.

This patch depends on an earlier patch with not-quite-boilerplate
changes towards SFN.

for  gcc/c-family/ChangeLog

	* c-semantics.c (pop_stmt_list): Move begin stmt marker into
	subsequent statement list.

for  gcc/c/ChangeLog

	* c-objc-common.h (LANG_HOOKS_EMITS_BEGIN_STMT): Redefine as true.
	* c-parser.c (add_debug_begin_stmt): New.
	(c_parser_declaration_or_fndef): Call it.
	(c_parser_compound_statement_nostart): Likewise.
	(c_parser_statement_after_labels): Likewise.
	* c-typeck (c_finish_stmt_expr): Skip begin stmts markers.

for  gcc/cp/ChangeLog

	* constexpr.c (check_constexpr_ctor_body_1): Skip begin stmt
	markers.
	(constexpr_fn_retval): Likewise.
	(potential_constant_expression_1): Likewise.
	(cxx_eval_statement_list): Check that a begin stmt marker is
	not used as the value of a statement list.
	(cxx_eval_constant_expression): Return begin stmt markers
	unchanged.
	* cp-array-notation.c (stmt_location): New.
	(cp_expand_cond_array_notations): Use it.
	* cp-objcp-common.h (LANG_HOOKS_EMITS_BEGIN_STMT): Redefine as true.
	* parser.c (add_debug_begin_stmt): New.
	(cp_parser_statement): Call it.
	* pt.c (tsubst_copy): Handle begin stmt markers.

for  gcc/ChangeLog

	* cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
	markers.  Integrate source bind into debug stmt expand loop.
	(pass_expand::execute): Check debug marker limit.  Avoid deep
	TER and expand debug locations for debug bind insns only.
	* cse.c (insn_live_p): Keep nonbind markers and debug bindings
	followed by them.
	* df-scan.c (df_insn_delete): Accept out-of-block debug insn.
	* final.c (reemit_insn_block_notes): Take current block from
	nonbind markers.  Declare note where it's first set.
	(final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
	begin stmt markers if enabled.
	(notice_source_line): Handle nonbind markers.  Fail if their
	location is unknown or that of builtins.
	(rest_of_handle_final): Convert begin stmt markers to notes if
	var-tracking didn't run.
	(rest_of_clean_state): Skip begin stmt markers.
	* gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
	markers.
	* function.c (allocate_struct_function): Set begin_stmt_markers.
	* function.h (struct function): Add debug_marker_count counter
	and debug_nonbind_markers flag.
	* gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
	* gimple-low.c (lower_function_body): Adjust
	debug_nonbind_markers.
	(lower_stmt): Drop or skip gimple debug stmts.
	(lower_try_catch): Skip debug stmts.
	* gimple.c (gimple_build_debug_begin_stmt): New.
	(gimple_copy): Increment debug_marker_count if copying one.
	* gimple.h (gimple_build_debug_begin_stmt): Declare.
	* gimplify.c (rexpr_location): New.
	(rexpr_has_location): New.
	(warn_switch_unreachable_r): Handle gimple debug stmts.
	(shortcut_cond_r): Call expr_location.
	(find_goto): New.
	(find_goto_label): New.
	(shortcut_cond_expr): Call expr_has_location, expr_location, and
	find_goto_label.
	(gimplify_cond_expr): Call find_goto_label, expr_has_location, and
	expr_location.
	(gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
	* langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
	(LANG_HOOKS_INITIALIZER): ... this.
	* langhooks.h (struct lang_hooks): Add emits_begin_stmt.
	* lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
	debug insns.
	(update_ebb_live_info): Skip debug insn markers.
	* lra.c (debug_insn_static_data): Rename to...
	(debug_bind_static_data): ... this.
	(debug_marker_static_data): New.
	(lra_set_insn_recog_data): Select one of the above depending
	on debug insn kind.
	(lra_update_isn_regno_info): Don't assume debug insns have
	freqs.
	(push_insns): Skip debug insns.
	* lto-streamer-in.c (input_function): Drop debug stmts
	depending on active options.  Adjust debug_nonbind_markers.
	* params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
	begin stmt marker notes.
	(print_insn): Likewise.
	* recog.c (extract_insn): Recognize rtl for debug markers.
	* rtl.def (DEBUG_MARKER): New.
	* tree-inline.c: Include params.h.
	(remap_gimple_stmt): Handle nonbind markers.
	(maybe_move_debug_stmts_to_successors): Likewise.
	(copy_debug_stmt): Likewise.
	* tree-iterator.c (append_to_statement_list_1): Append begin stmt
	markers regardless of no side effects.
	(tsi_link_before): Don't update container's side effects when adding
	a begin stmt marker.
	(tsi_link_after): Likewise.
	(expr_first): Skip begin stmt markers.
	(expr_last): Likewise.
	* tree-pretty-print (dump_generic_node): Handle begin stmt markers.
	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
	Disregard nonbind markers.
	* tree.c (make_node_stat): Don't set side effects for begin stmt
	markers.
	(build1_stat): Likewise.
	* tree.def (DEBUG_BEGIN_STMT): New.
	* tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
	* var-tracking.c (delete_debug_insns): Renamed to...
	(delete_vta_debug_insns): ... this.
	(reemit_marker_as_note): New.
	(vt_initialize): Reemit markers.
	(delete_vta_debug_insns): Likewise.
	(vt_debug_insns_local): Reemit or delete markers.
	(variable_tracking_main_1): Likewise.
	* doc/generic.texi (DEBUG_BEGIN_STMT): Document.
	* doc/gimple.texi (gimple_debug_begin_stmt_p): New.
	(gimple_debug_nonbind_marker_p): New.
	(gimple_build_debug_bind): Adjust.
	(gimple_build_debug_begin_stmt): New.
	* doc/invoke.texi (max-debug-marker-count): New param.
	* doc/rtl.texi (debug_implicit_ptr, entry_value): New.
	(debug_parameter_ref, debug_marker): New.
	(NOTE_INSN_BEGIN_STMT): New.
	(DEBUG_INSN): Describe begin stmt markers.

From-SVN: r255568
2017-12-12 02:16:07 +00:00
Alexandre Oliva
eb8b347423 [SFN] stabilize find_bb_boundaries
If find_bb_boundaries is given a block with zero or one nondebug insn
beside debug insns, it shouldn't purge dead edges, because without
debug insns we wouldn't purge them at that point.  Doing so may change
the order in which edges are processed, and ultimately lead to
different transformations to the CFG and then to different
optimizations.

We shouldn't, however, retain debug insns after control flow insns, so
if we find debug insns after a single insn that happens to be a
control flow insn, do the debug insn cleanups, but still refrain from
purging dead edges at that point.


for  gcc/ChangeLog

	* cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
	without debug insns, we wouldn't, but clean up debug insns
	after a control flow insn nevertheless.

From-SVN: r255567
2017-12-12 02:15:44 +00:00
Alexandre Oliva
65f4b8759b [SFN] not-quite-boilerplate changes in preparation to introduce nonbind markers
This patch adjusts numerous parts of the compiler that would
malfunction should they find debug markers at points where they may be
introduced.  The changes purport to allow the compiler to pass
bootstrap-debug-lean (-fcompare-debug in stage3) at various
optimization levels, as well as bootstrap-debug-lib (-fcompare-debug
for target libraries), even after the compiler is changed so that
debug markers are introduced in code streams at spots where earlier
debug stmts, insns and notes wouldn't normally appear.

This patch depends on an earlier SFN boilerplate patch, and on another
SFN patch that introduces new RTL insn-walking functions.

for  gcc/ChangeLog

	* cfgcleanup.c (delete_unreachable_blocks): Use alternate
	block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
	* cfgexpand.c (label_rtx_for_bb): Skip debug insns.
	* cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
	(rtl_tidy_fallthru_edge): Likewise.
	(rtl_verify_fallthru): Likewise.
	(rtl_verify_bb_layout): Likewise.
	(skip_insns_after_block): Likewise.
	(duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
	* dwarf2out.c: Include print-rtl.h.
	(dwarf2out_next_real_insn): New.
	(dwarf2out_var_location): Call it.  Disregard begin stmt markers.
	Dump debug binds in asm comments.
	* gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
	* gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
	callers to use gsi_start_nondebug_bb instead.
	(gsi_after_labels): Skip gimple debug stmts.
	(gsi_start_nondebug): New.
	* gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
	(proper_loop_form_for_interchange): Adjust.
	* gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
	* gimple.h (gimple_seq_last_nondebug_stmt): New.
	* gimplify.c (last_stmt_in_scope): Skip debug stmts.
	(collect_fallthrough_labels): Likewise.
	(should_warn_for_implicit_fallthrough): Likewise.
	(warn_implicit_fallthrough_r): Likewise.
	(expand_FALLTHROUGH_r): Likewise.
	* graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
	(graphite_copy_stmts_from_block): Skip nonbind markers.
	* haifa-sched.c (sched_extend_bb): Skip debug insns.
	* ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
	* jump.c (clean_barriers): Skip debug insns.
	* omp-expand.c (expand_parallel_call): Skip debug insns.
	(expand_task_call): Likewise.
	(remove_exit_barrier): Likewise.
	(expand_omp_taskreg): Likewise.
	(expand_omp_for_init_counts): Likewise.
	(expand_omp_for_generic): Likewise.
	(expand_omp_for_static_nochunk): Likewise.
	(expand_omp_for_static_chunk): Likewise.
	(expand_omp_simd): Likewise.
	(expand_omp_taskloop_for_outer): Likewise.
	(expand_omp_taskloop_for_inner): Likewise.
	(expand_oacc_for): Likewise.
	(expand_omp_sections): Likewise.
	(expand_omp_single): Likewise.
	(expand_omp_synch): Likewise.
	(expand_omp_atomic_load): Likewise.
	(expand_omp_atomic_store): Likewise.
	(expand_omp_atomic_fetch_op): Likewise.
	(expand_omp_atomic_pipeline): Likewise.
	(expand_omp_atomic_mutex): Likewise.
	(expand_omp_target): Likewise.
	(grid_expand_omp_for_loop): Likewise.
	(grid_expand_target_grid_body): Likewise.
	(build_omp_regions_1): Likewise.
	* omp-low.c (check_combined_parallel): Skip debug stmts.
	* postreload.c (fixup_debug_insns): Skip nonbind debug insns.
	* regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
	* sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
	test.
	* tree-cfg.c (make_blobs_1): Skip debug stmts.
	(make_edges): Likewise.
	(cleanup_dead_labels): Likewise.
	(gimple_can_merge_blocks_p): Likewise.
	(stmt_starts_bb_p): Likewise.
	(gimple_block_label): Likewise.
	(gimple_redirect_edge_and_branch): Likewise.
	* tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
	of debug stmts.
	(execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
	TDF_SLIM.
	* tree-pretty-print (print_declaration): Omit initializer in slim
	dumps.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
	markers.
	(eliminate_unnecessary_stmts): Stabilize block removal order.
	* tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
	* var-tracking.c (get_first_insn): New.
	(vt_emit_notes): Call it.
	(vt_initialize): Walk any insns before the first BB.
	(delete_debug_insns): Likewise.

From-SVN: r255566
2017-12-12 02:15:30 +00:00
Alexandre Oliva
36f52e8f08 [SFN] boilerplate changes in preparation to introduce nonbind markers
This patch introduces a number of new macros and functions that will
be used to distinguish between different kinds of debug stmts, insns
and notes, namely, preexisting debug bind ones and to-be-introduced
nonbind markers.

In a seemingly mechanical way, it adjusts several uses of the macros
and functions, so that they refer to narrower categories when
appropriate.

These changes, by themselves, should not have any visible effect in
the compiler behavior, since the upcoming debug markers are never
created with this patch alone.

for  gcc/ChangeLog

	* gimple.h (enum gimple_debug_subcode): Add
	GIMPLE_DEBUG_BEGIN_STMT.
	(gimple_debug_begin_stmt_p): New.
	(gimple_debug_nonbind_marker_p): New.
	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
	(MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
	(MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
	* insn-notes.def (BEGIN_STMT): New.
	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
	(MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
	(MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
	(NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
	(DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
	(INSN_DEBUG_MARKER_KIND): New.
	(GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
	(INSN_VAR_LOCATION): Check for VAR_LOCATION.
	(INSN_VAR_LOCATION_PTR): New.
	* cfgexpand.c (expand_debug_locations): Handle debug bind insns
	only.
	(expand_gimple_basic_block): Likewise.  Emit debug temps for TER
	deps only if debug bind insns are enabled.
	(pass_expand::execute): Avoid deep TER and expand
	debug locations for debug bind insns only.
	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
	debug stmts special handling down to debug bind stmts.
	* combine.c (try_combine): Narrow debug insns special handling
	down to debug bind insns.
	* cse.c (delete_trivially_dead_insns): Handle debug bindings.
	Narrow debug insns preexisting special handling down to debug
	bind insns.
	* dce.c (rest_of_handle_ud_dce): Narrow debug insns special
	handling down to debug bind insns.
	* function.c (instantiate_virtual_regs): Skip debug markers,
	adjust handling of debug binds.
	* gimple-ssa-backprop.c (backprop::prepare_change): Try debug
	temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
	* haifa-sched.c (schedule_insn): Narrow special handling of debug
	insns to debug bind insns.
	* ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
	special handling of debug stmts to debug bind stmts.
	* ipa-split.c (split_function): Likewise.
	* ira.c (combine_and_move_insns): Adjust debug bind insns only.
	* loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
	debug insns.
	* reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
	* regrename.c (build_def_use): Likewise.
	* regcprop.c (copyprop_hardreg_forward_1): Likewise.
	(pass_cprop_hardreg): Narrow special casing of debug insns to
	debug bind insns.
	* regstat.c (regstat_init_n_sets_and_refs): Likewise.
	* reload1.c (reload): Likewise.
	* sese.c (sese_insert_phis_for_liveouts): Narrow special
	casing of debug stmts to debug bind stmts.
	* shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
	* ssa-iterators.h (num_imm_uses): Likewise.
	* tree-cfg.c (gimple_merge_blocks): Narrow special casing of
	debug stmts to debug bind stmts.
	* tree-inline.c	(tree_function_versioning): Narrow special casing
	of debug stmts to debug bind stmts.
	* tree-loop-distribution.c (generate_loops_for_partition):
	Narrow special casing of debug stmts to debug bind stmts.
	* tree-sra.c (analyze_access_subtree): Narrow special casing
	of debug stmts to debug bind stmts.
	* tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
	stmts to debug bind stmts.
	* tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
	casing of debug stmts to debug bind stmts.
	* tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
	* tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
	casing of debug stmts to debug bind stmts.
	* tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
	Likewise.
	* tree-ssa.c (flush_pending_stmts): Narrow special casing of
	debug stmts to debug bind stmts.
	(gimple_replace_ssa_lhs): Likewise.
	(insert_debug_temp_for_var_def): Likewise.
	(insert_debug_temps_for_defs): Likewise.
	(reset_debug_uses): Likewise.
	* tree-ssanames.c (release_ssa_name_fn): Likewise.
	* tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
	(adjust_debug_stmts): Likewise.
	(adjust_phi_and_debug_stmts): Likewise.
	(vect_do_peeling): Likewise.
	* tree-vect-loop.c (vect_transform_loop): Likewise.
	* valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
	* var-tracking.c (adjust_mems): Narrow special casing of debug
	insns to debug bind insns.
	(dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
	(compute_bb_dataflow, vt_find_locations): Likewise.
	(vt_expand_loc, emit_notes_for_changes): Likewise.
	(vt_init_cfa_base): Likewise.
	(vt_emit_notes): Likewise.
	(vt_initialize): Likewise.
	(vt_finalize): Likewise.

From-SVN: r255565
2017-12-12 02:15:00 +00:00
Alexandre Oliva
f40dd64636 [SFN] adjust RTL insn-walking API
This patch removes unused RTL functions, introduces alternate ones for
use in a later SFN patch, and regroups other related functions so that
they appear in a more consistent order.

for  gcc/ChangeLog

	* emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
	(next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
	(next_nonnote_nondebug_insn_bb): New.
	(prev_nonnote_nondebug_insn_bb): New.
	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
	* rtl.h	(prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
	(prev_nonnote_nondebug_insn_bb): Declare.
	(next_nonnote_nondebug_insn_bb): Declare.
	* cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
	* cfgrtl.c (get_last_bb_insn): Likewise.
	* lra.c (push_insns): Likewise.

From-SVN: r255564
2017-12-12 02:14:39 +00:00
David Malcolm
421b29d615 Expensive selftests: torture testing for fix-it boundary conditions (PR c/82050)
This patch adds selftest coverage for the fix for PR c/82050.

The selftest iterates over various "interesting" column and line-width
values to try to shake out bugs in the fix-it printing routines, a kind
of "torture" selftest.

Unfortunately this selftest is noticably slower than the other selftests;
adding it to diagnostic-show-locus.c led to:
  -fself-test: 40218 pass(es) in 0.172000 seconds
slowing down to:
  -fself-test: 97315 pass(es) in 6.109000 seconds
for an unoptimized build (e.g. when hacking with --disable-bootstrap).

Given that this affects the compile-edit-test cycle of the "gcc"
subdirectory, this felt like an unacceptable amount of overhead to add.

I attempted to optimize the test by reducing the amount of coverage, but
the test seems useful, and there seems to be a valid role for "torture"
selftests.

Hence this patch adds a:
  gcc.dg/plugin/expensive_selftests_plugin.c
with the responsibility for running "expensive" selftests, and adds the
expensive test there.  The patch moves a small amount of code from
selftest::run_tests into a helper class so that the plugin can print
a useful summary line (to reassure us that the tests are actually being
run).

With that, the compile-edit-test cycle of the "gcc" subdir is unaffected;
the plugin takes:
  expensive_selftests_plugin: 26641 pass(es) in 3.127000 seconds
which seems reasonable within the much longer time taken by "make check"
(I optimized some of the overhead away, hence the reduction from 6 seconds
above down to 3 seconds).

gcc/ChangeLog:
	PR c/82050
	* selftest-run-tests.c (selftest::run_tests): Move start/finish code
	to...
	* selftest.c (selftest::test_runner::test_runner): New ctor.
	(selftest::test_runner::~test_runner): New dtor.
	* selftest.h (class selftest::test_runner): New class.

gcc/testsuite/ChangeLog:
	PR c/82050
	* gcc.dg/plugin/expensive-selftests-1.c: New file.
	* gcc.dg/plugin/expensive_selftests_plugin.c: New file.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.

From-SVN: r255563
2017-12-12 01:31:30 +00:00
GCC Administrator
cd147a267f Daily bump.
From-SVN: r255562
2017-12-12 00:16:17 +00:00
Segher Boessenkool
0473f72571 Fix the new pr83361.c testcase
gcc/testsuite/
	* gcc.dg/pr83361.c: Add -Wno-div-by-zero to dg-options.

From-SVN: r255559
2017-12-12 00:35:39 +01:00
Martin Sebor
b50829fedc Remove a stray line.
From-SVN: r255558
2017-12-11 16:22:39 -07:00
Martin Sebor
eedff70182 PR c/81544 - attribute noreturn and warn_unused_result on the same function
PR c/81544 - attribute noreturn and warn_unused_result on the same function
accepted 

Add tests missed in r255469.

From-SVN: r255557
2017-12-11 16:21:55 -07:00
Carl Love
0242c7f0aa altivec-12.c (main): Add tests for vec_avg.
gcc/testsuite/ChangeLog:

2017-12-07  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/altivec-12.c (main):  Add tests for vec_avg.
	* gcc.target/powerpc/builtins-1.c: Renamed builtins-1.h.
	* gcc.target/powerpc/builtins-1.h: Add tests for vec_and,
	vec_andc, vec_cpsgn, vec_mergeh,vec_mergel, vec_nor, vec_or,
	vec_sel, vec_xor, vec_all_eq, vec_all_ge, vec_all_gt, vec_all_le,
	vec_all_lt, vec_all_ne,	vec_any_eq,vec_any_ge, vec_any_gt,vec_any_le,
	vec_any_lt, vec_any_ne, vec_cntlz, vec_round, vec_rsqrt, vec_rsqrte,
	vec_splat, vec_div, vec_mul,vec_ctf, vec_cts, vec_ctu.
	* gcc.target/powerpc/builtins-1-be.c: New file, big endian
	test file for tests in builtins-1.h.
	* gcc.target/powerpc/builtins-1-le.c: New file, little endian
	test file for tests in builtins-1.h.
	* gcc.target/powerpc/builtins-2.c (main): Add tests for vec_ctf,
	vec_cts, vec_ctu.
	* gcc.target/powerpc/builtins-3-runnable.c (test_result_sp): Fix printf
	conversion character.
 	* gcc.target/powerpc/fold-vec-minmax-char.c (test1_min, test2_min,
	test4_min, test1_max, test2_max): Add tests for vec_max and vec_min.
 	* gcc.target/powerpc/fold-vec-minmax-int.c (test4_min, test5_min,
	test7_min, test8_min): Add tests for vec_min.
 	* gcc.target/powerpc/fold-vec-minmax-longlong.c (test7_max, test8_max,
	test9_max, test10_max): Add tests for and vec_max.
 	* gcc.target/powerpc/fold-vec-minmax-short.c (test4_min, test5_min,
	tes7_min, test8_min): Add tests for and vec_min.
 	* gcc.target/powerpc/p8vector-builtin-8.c (foo): Add test for vec_adds,
	vec_subs, vec_sum2s, vec_sum4s.
 	* gcc.target/powerpc/vsx-splats-p8.c: New file to test vec_splats.
	* gcc.target/vsx-vector-5.c (arg1_tests_d, arg1_tests_d): Add
	tests for vec_ceil, vec_floor, vec_nearbyint, vec_sqrt.
	* gcc.target/vsx-vector-7.c (foo): Add tests for vec_sel.
	* gcc.target/vsx-vector-abss.c: New file to test vec_abss.

From-SVN: r255556
2017-12-11 22:57:08 +00:00
Carl Love
4ded4b230d altivec.h (vec_extract_fp32_from_shorth, [...]): Add #defines.
gcc/ChangeLog:

2017-12-11  Carl Love  <cel@us.ibm.com>

	* config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
	vec_extract_fp32_from_shortl]): Add #defines.
	* config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
	* config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
	ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
	ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
	ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
	ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
	* doc/extend.texi: Add documentation for the added builtins.

gcc/testsuite/ChangeLog:

2017-12-11  Carl Love  <cel@us.ibm.com>
	* gcc.target/powerpc/altivec-7.c: Renamed altivec-7.h.
	* gcc.target/powerpc/altivec-7.h (main): Add testcases for vec_unpackl.
	Add dg-final tests for the instructions generated.
	* gcc.target/powerpc/altivec-7-be.c: New file to test on big endian.
	* gcc.target/powerpc/altivec-7-le.c: New file to test on little endian.
	* gcc.target/powerpc/altivec-13.c (foo): Add vec_sld, vec_srl,
	 vec_sro testcases. Add dg-final tests for the instructions generated.
	* gcc.target/powerpc/builtins-3-p8.c (test_vsi_packs_vui,
	test_vsi_packs_vsi, test_vsi_packs_vssi, test_vsi_packs_vusi,
	test_vsi_packsu-vssi, test_vsi_packsu-vusi, test_vsi_packsu-vsll,
	test_vsi_packsu-vull, test_vsi_packsu-vsi, test_vsi_packsu-vui): Add
	testcases. Add dg-final tests for new instructions.
	* gcc.target/powerpc/p8vector-builtin-2.c (vbschar_eq, vbchar_eq,
	vuchar_eq, vbint_eq, vsint_eq, viint_eq, vuint_eq, vbool_eq, vbint_ne,
	vsint_ne, vuint_ne, vbool_ne, vsign_ne, vuns_ne, vbshort_ne): Add
	tests.
	Add dg-final instruction tests.
	* gcc.target/powerpc/vsx-vector-6.c: Renamed vsx-vector-6.h.
	* gcc.target/powerpc/vsx-vector-6.h (vec_andc,vec_nmsub, vec_nmadd,
	vec_or, vec_nor, vec_andc, vec_or, vec_andc, vec_msums): Add tests.
	Add dg-final tests for the generated instructions.
	* gcc.target/powerpc/builtins-3.c (test_sll_vsc_vsc_vsuc,
	test_sll_vuc_vuc, test_sll_vsi_vsi_vuc, test_sll_vui_vui_vuc,
	test_sll_vbll_vull, test_sll_vbll_vbll_vus, test_sll_vp_vp_vuc,
	test_sll_vssi_vssi_vuc, test_sll_vusi_vusi_vuc, test_slo_vsc_vsc_vsc,
	test_slo_vuc_vuc_vsc, test_slo_vsi_vsi_vsc, test_slo_vsi_vsi_vuc,
	test_slo_vui_vui_vsc, test_slo_vui_vui_vuc, test_slo_vsll_slo_vsll_vsc,
	test_slo_vsll_slo_vsll_vuc, test_slo_vull_slo_vull_vsc,
	test_slo_vull_slo_vull_vuc, test_slo_vp_vp_vsc, test_slo_vp_vp_vuc,
	test_slo_vssi_vssi_vsc, test_slo_vssi_vssi_vuc, test_slo_vusi_vusi_vsc,
	test_slo_vusi_vusi_vuc, test_slo_vusi_vusi_vuc, test_slo_vf_vf_vsc,
	test_slo_vf_vf_vuc, test_cmpb_float): Add tests.

From-SVN: r255555
2017-12-11 22:47:34 +00:00
Alexandre Oliva
b92977ee9f [PR80693] drop value of parallel SETs dropped by combine
When combine drops a REG_UNUSED SET in a parallel, we have to clear
cached values, so that, even if the REGs remain used (e.g. because
they were referenced in the used SET_SRC), we will not use properties
of the dropped modified value as if they applied to the preserved
original one.

We fail to adjust REG_N_SETS.

for  gcc/ChangeLog

	PR rtl-optimization/80693
	PR rtl-optimization/81019
	PR rtl-optimization/81020
	* combine.c (distribute_notes): Reset any REG_UNUSED REGs that
	are not mentioned in i3.  Place the REG_UNUSED note on i2,
	possibly modified to REG_DEAD, if it did not originate in i3.

for  gcc/testsuite/ChangeLog

	PR rtl-optimization/80693
	PR rtl-optimization/81019
	PR rtl-optimization/81020
	* gcc.dg/pr80693.c: New.
	* gcc.dg/pr81019.c: New.

From-SVN: r255554
2017-12-11 22:36:07 +00:00
Jakub Jelinek
0a2c514982 recog.c (store_data_bypass_p_1): New function.
* recog.c (store_data_bypass_p_1): New function.
	(store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
	store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.

From-SVN: r255553
2017-12-11 23:20:27 +01:00
Segher Boessenkool
9221f990e7 ifcvt: Call fixup_partitions (PR83361)
After converting a conditional branch to an unconditional trap to a
conditional trap, if the original trap is still reachable from another
path, it may be that it is in a hot basic block  and only reachable from
cold blocks.  Fix that up.


	PR rtl-optimization/83361
	* ifcvt.c (if_convert): Call fixup_partitions.

gcc/testsuite/
	PR rtl-optimization/83361
	* gcc.dg/pr83361.c: New testcase.

From-SVN: r255550
2017-12-11 22:23:08 +01:00
Will Schmidt
a5648717a8 rs6000.c (rs6000_gimple_fold_builtin): Add support for early folding of splat_u{8,16,32}.
[gcc]

2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
	early folding of splat_u{8,16,32}.

[testsuite]

2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-splat-misc-invalid.c: New.

From-SVN: r255549
2017-12-11 21:15:48 +00:00
Thomas Koenig
243501b772 intrinsic.texi (MAXLOC): Update documentation for character arrays and KIND argument.
2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* intrinsic.texi (MAXLOC): Update documentation for
	character arrays and KIND argument.
	(MINLOC): Likewise.

From-SVN: r255546
2017-12-11 20:24:27 +00:00
Jakub Jelinek
ee61f88010 aarch64.c (aarch64_print_operand): Don't start output_operand_lossage first argument with capital letter.
* config/aarch64/aarch64.c (aarch64_print_operand): Don't start
	output_operand_lossage first argument with capital letter.
	(aarch64_override_options): Don't start error and sorry first argument
	with capital letter.

From-SVN: r255544
2017-12-11 18:59:01 +01:00
Thomas Koenig
5e20aef8df re PR fortran/83379 (Intermittent failure of min/maxval_char*.f90 test cases)
2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83379
	* gfortran.dg/minval_char_1.f90: Correct logic for mask
	calculation.
	* gfortran.dg/minval_char_2.f90: Likewise.
	* gfortran.dg/maxval_char_1.f90: Likewise.
	* gfortran.dg/maxval_char_2.f90: Likewise.

From-SVN: r255543
2017-12-11 17:57:38 +00:00
Thomas Koenig
317fa06478 re PR fortran/45689 ([F03] Missing transformational intrinsic in the trans_func_f2003 list)
2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/45689
	* simplify.c (min_max_choose): Add prototype.
	(gfc_count): Format correctly.
	(simplify_transformation): Pass array argument to init_result_expr.
	(gfc_simplify_minval_maxval): Remove.
	(gfc_min): New function.
	(gfc_simplify_minval): Call simplify_transformation.
	(gfc_max): New function.
	(gfc_simplify_maxval): Call simplify_transformation.

2017-12-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/45689
	* gfortran.dg/minval_parameter_1.f90: New test.
	* gfortran.dg/maxval_parameter_1.f90: New test.

From-SVN: r255542
2017-12-11 17:39:07 +00:00
Andi Kleen
ad3f54ab8e Fix stack overflow with autofdo (PR83355)
g++.dg/bprob* is failing currently with autofdo.

Running in gdb shows that there is a very deep recursion in get_index_by_decl until it
overflows the stack.

gcc/:
2017-12-11  Andi Kleen  <ak@linux.intel.com>

	PR gcov-profile/83355
	* auto-profile.c (string_table::get_index_by_decl): Don't
	recurse when abstract origin points to itself.

From-SVN: r255540
2017-12-11 16:13:53 +00:00
Bin Cheng
46bb9d29d3 re PR tree-optimization/83320 (Mismatched free() / delete / delete [] in gimple-loop-interchange.cc:948)
PR tree-optimization/83320
	* gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
	(prune_datarefs_not_in_loop): Ditto.

From-SVN: r255539
2017-12-11 10:47:53 +00:00
GCC Administrator
138d2a8151 Daily bump.
From-SVN: r255537
2017-12-11 00:16:17 +00:00
Uros Bizjak
de069cb133 * ChangeLog: Fix whitespace some more.
From-SVN: r255534
2017-12-10 22:55:19 +01:00
Uros Bizjak
0c169c01de ChangeLog: Fix whitespace.
* ChangeLog: Fix whitespace.
	* testsuite/ChangeLog: Ditto.

From-SVN: r255533
2017-12-10 22:54:38 +01:00
Dominique d'Humieres
9845246060 re PR fortran/53478 (gfortran segfaults when module name clashes with C binding name of procedure)
2017-12-10  Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR fortran/53478
	* gfortran.h (gfc_find_case_gsymbol): New prototype.
	* symbol.c (gfc_find_case_gsymbol): New procedure, case
	insensistive version of gfc_find_gsymbol.
	* resolve.c (resolve_common_blocks): Use it.
	Replace %s with %qs where needed.

	* gfortran.dg/binding_label_tests_4.f03: Update dg-error.
	* gfortran.dg/binding_label_tests_6.f03: Likewise.
	* gfortran.dg/binding_label_tests_7.f03: Likewise.
	* gfortran.dg/binding_label_tests_8.f03: Likewise.
	* gfortran.dg/binding_label_tests_10_main.f03: Likewise.
	* gfortran.dg/binding_label_tests_11_main.f03: Likewise.
	* gfortran.dg/binding_label_tests_13_main.f03: Likewise.
	* gfortran.dg/test_common_binding_labels_3_main.f03: Likewise.
	* gfortran.dg/binding_label_tests_29.f90: New test.

From-SVN: r255530
2017-12-10 20:11:18 +01:00
Gerald Pfeifer
b769d06ee3 * doc/install.texi (Specific): Tweak link to mkssoftware.com.
From-SVN: r255529
2017-12-10 11:03:55 +00:00
Jakub Jelinek
df0f6bbb3a re PR tree-optimization/83337 (ICE at -O3 x86_64-linux-gnu: in interpret_rhs_expr, at tree-scalar-evolution.c:1775)
PR tree-optimization/83337
	* gimple-loop-interchange.cc (compute_access_stride): Handle bitfield DRs
	properly.

	* gcc.dg/tree-ssa/loop-interchange-14.c: New test.
	* gcc.dg/tree-ssa/loop-interchange-15.c: New test.

From-SVN: r255528
2017-12-10 11:39:56 +01:00
GCC Administrator
629cc78bee Daily bump.
From-SVN: r255527
2017-12-10 00:16:13 +00:00
Steven G. Kargl
d36eb6bf6d re PR fortran/82934 (Segfault on assumed character length in allocate)
2017-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82934
	PR fortran/83318
	* match.c (gfc_match_allocate): Enforce F2008:C631.

2017-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82934
	PR fortran/83318
	* gfortran.dg/allocate_assumed_charlen_2.f90: new test.

From-SVN: r255524
2017-12-09 19:53:55 +00:00
Jakub Jelinek
0eb952ea5e re PR lto/83338 (SPEC CPU2017 510.parest_r ICE)
PR tree-optimization/83338
	* tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
	vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
	vector of unsigned integers to vector of signed integers.

	* gcc.dg/vect/pr83338.c: New test.

From-SVN: r255523
2017-12-09 12:43:31 +01:00
Thomas Koenig
b01fff4882 re PR fortran/83316 (ICE: minval/maxval and characters)
2017-12-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83316
	* arith.c (gfc_character2character): New function.
	* arith.h: Add prototype.
	* simplify.c (gfc_convert_constant): Handle character type.

2017-12-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83316
	* gfortran.dg/minval_char_5.f90: New test.

From-SVN: r255522
2017-12-09 08:37:17 +00:00
Jim Wilson
3a4c600f38 Add .type and .size directives to riscv libgcc functions.
libgcc/
	* config/riscv/div.S: Use FUNC_* macros.
	* config/riscv/muldi3.S, config/riscv/multi3.S: Likewise
	* config/riscv/save-restore.S: Likewise.
	* config/riscv/riscv-asm.h: New.

From-SVN: r255521
2017-12-08 19:00:57 -08:00
GCC Administrator
6ba9908a0c Daily bump.
From-SVN: r255520
2017-12-09 00:16:12 +00:00
Vladimir Makarov
4692a78365 [multiple changes]
2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/83317
	* lra-constraints.c (process_address_1): Add insn code check.

2017-12-08  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/83317
	* gcc.target/i386/pr83317.c: New test.

From-SVN: r255517
2017-12-08 23:47:44 +00:00
Jakub Jelinek
d5910e08a3 re PR rtl-optimization/81595 (ICE: verify_flow_info failed (error: multiple hot/cold transitions found))
PR rtl-optimization/81595
	* gcc.c-torture/compile/pr81595.c: New test.

From-SVN: r255516
2017-12-08 20:05:56 +01:00
Michael Matz
dc236397e4 re PR tree-optimization/83323 (186.crafty miscompares)
Fix PR83323

	* gimple-loop-jam (unroll_jam_possible_p): Correct test for
	head-controlled loops and loop BBs.
	* common.opt (funroll-and-jam): Remove, instead ...
	(floop-unroll-and-jam): ... reuse this option.
	* opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
	* doc/invoke.texi (-funroll-and-jam): Move docu to ...
	(-floop-unroll-and-jam): ... this option.

testsuite/
	* gcc.dg/pr83323.c: New test.
	* gcc.dg/unroll-and-jam.c: Use -floop-unroll-and-jam.

From-SVN: r255514
2017-12-08 17:41:58 +00:00
Jakub Jelinek
450aa0ee3d ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
* ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
	a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
	* ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.

From-SVN: r255513
2017-12-08 17:47:06 +01:00
Richard Biener
68e6d5a6bd re PR middle-end/81782 (Yet another -Wmaybe-uninitialized false positive with empty array)
2017-12-08  Richard Biener  <rguenther@suse.de>

	PR middle-end/81782
	* tree-ssa-uninit.c (warn_uninitialized_vars): Properly
	handle accesses outside of zero-sized vars.

	* gcc.dg/uninit-pr81782.c: New testcase.

From-SVN: r255512
2017-12-08 14:45:30 +00:00
Rainer Orth
4f29e04064 Disable hwcap on Solaris in g++.dg/opt/pr83252.C
* g++.dg/opt/pr83252.C: Add -mclear-hwcap on *-*-solaris*.

From-SVN: r255511
2017-12-08 13:03:54 +00:00
Martin Jambor
d90ffcfb7d Prevent SRA from removing type changing assignment
2017-12-08  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/83141
	* tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
	test for MEM_REFs implicitely changing types with padding.  Remove
	inline keyword.
	(build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.

testsuite/
	* gcc.dg/tree-ssa/pr83141.c: New test.
	* gcc.dg/guality/pr54970.c: XFAIL tests querying a[0].

From-SVN: r255510
2017-12-08 13:11:02 +01:00
Jakub Jelinek
0123db8e39 arc.c (arc_attribute_table): Add exclusions to the comment.
* config/arc/arc.c (arc_attribute_table): Add exclusions to
	the comment.
	* config/avr/avr.c (avr_attribute_table): Likewise.
	* config/msp430/msp430.c (msp430_attribute_table): Likewise.
	* config/rl78/rl78.c (rl78_attribute_table): Likewise.
	* config/nds32/nds32.c (nds32_attribute_table): Likewise.
	* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
	of struct attribute_spec.
	* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
ada/
	* gcc-interface/utils.c (gnat_internal_attribute_table): Add
	exclusions to the comment.
brig/
	* brig-lang.c (brig_attribute_table): Fix up comment.

From-SVN: r255509
2017-12-08 12:55:23 +01:00
Ulrich Weigand
deb8237f28 re PR target/82960 (spu_machine_dependent_reorg does not handle jump_table_data insn)
gcc/
	PR target/82960
	* config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.

From-SVN: r255508
2017-12-08 11:33:09 +00:00
Jan Hubicka
f6422f23bb re PR tree-optimization/83609 (ICE in read_complex_part at gcc/expr.c:3202)
* profile-count.c (profile_count::from_gcov_type): Move from
	profile-count.h; handle overflow.
	* profile-count. (profile_count::from_gcov_type): Move offline.

	PR middle-end/83609
	* gcc.c-torture/compile/pr83069.c: New testcase.

From-SVN: r255507
2017-12-08 11:27:28 +00:00
Segher Boessenkool
b1cf82933e combine: Fix PR83304
In PR83304 two insns are combined, where the I2 uses a register that
has a REG_DEAD note on an insn after I2 but before I3.  In such a case
move_deaths should move that death note.  But move_deaths only looks
at the reg_stat[regno].last_death insn, and that field can be zeroed
out (previously, use_crosses_set_p would prevent the combination in
this case).

If the last_death field is zero it means "unknown", not "no death", so
we have to find if there is a REG_DEAD note.


	PR rtl-optimization/83304
	* combine.c (move_deaths): If we do not know where a register died,
	search for it.

From-SVN: r255506
2017-12-08 12:26:35 +01:00
Richard Biener
da472c1b3b gimple-loop-interchange.cc (tree_loop_interchange::interchange): Provide -fopt-info-loop feedback when we interchange in a nest.
2017-12-08  Richard Biener  <rguenther@suse.de>

	* gimple-loop-interchange.cc (tree_loop_interchange::interchange):
	Provide -fopt-info-loop feedback when we interchange in a nest.

From-SVN: r255505
2017-12-08 11:24:36 +00:00
Richard Earnshaw
801840e175 [arm] PR target/83206: Make native driver select fp-capable armv6 cores
A quirk in the historical naming of some ARMv6 products means that the
main CPU name implies the presence or otherwise of the floating point unit.
This causes problems when using -mfpu=auto with -mcpu=native: the driver is
picking a CPU that does not support a floating-point unit, even though
one may well exist.

This patch addresses this by selecting the FP-capable names so that FP
instructions will be generated if the other options suggest this is
permitted.

Note that a more complete fix is really needed here to look up the
FP/simd capabilities and append the appropriate capability extensions.
This will be the subject of some follow-up patches.

	* config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
	for armv6 ARM CPU IDs.

From-SVN: r255504
2017-12-08 11:19:20 +00:00