Martin Jambor [Wed, 14 Dec 2016 22:36:45 +0000 (23:36 +0100)]
Coding style fixes
2016-12-14 Martin Jambor <mjambor@suse.cz>
* omp-offload.c: Fix coding style.
* omp-expand.c: Likewise.
* omp-general.c: Likewise.
* omp-grid.c: Likewise.
* omp-low.c: Fix coding style of parts touched by the
previous splitting patch.
From-SVN: r243674
Martin Jambor [Wed, 14 Dec 2016 22:30:41 +0000 (23:30 +0100)]
Split omp-low into multiple files
2016-12-14 Martin Jambor <mjambor@suse.cz>
* omp-general.h: New file.
* omp-general.c: New file.
* omp-expand.h: Likewise.
* omp-expand.c: Likewise.
* omp-offload.h: Likewise.
* omp-offload.c: Likewise.
* omp-grid.c: Likewise.
* omp-grid.c: Likewise.
* omp-low.h: Include omp-general.h and omp-grid.h. Removed includes
of params.h, symbol-summary.h, lto-section-names.h, cilk.h, tree-eh.h,
ipa-prop.h, tree-cfgcleanup.h, cfgloop.h, except.h, expr.h, stmt.h,
varasm.h, calls.h, explow.h, dojump.h, flags.h, tree-into-ssa.h,
tree-cfg.h, cfganal.h, alias.h, emit-rtl.h, optabs.h, expmed.h,
alloc-pool.h, cfghooks.h, rtl.h and memmodel.h.
(omp_find_combined_for): Declare.
(find_omp_clause): Renamed to omp_find_clause and moved to
omp-general.h.
(free_omp_regions): Renamed to omp_free_regions and moved to
omp-expand.h.
(replace_oacc_fn_attrib): Renamed to oacc_replace_fn_attrib and moved
to omp-general.h.
(set_oacc_fn_attrib): Renamed to oacc_set_fn_attrib and moved to
omp-general.h.
(build_oacc_routine_dims): Renamed to oacc_build_routine_dims and
moved to omp-general.h.
(get_oacc_fn_attrib): Renamed to oacc_get_fn_attrib and moved to
omp-general.h.
(oacc_fn_attrib_kernels_p): Moved to omp-general.h.
(get_oacc_fn_dim_size): Renamed to oacc_get_fn_dim_size and moved to
omp-general.c.
(omp_expand_local): Moved to omp-expand.h.
(make_gimple_omp_edges): Renamed to omp_make_gimple_edges and moved to
omp-expand.h.
(omp_finish_file): Moved to omp-offload.h.
(default_goacc_validate_dims): Renamed to
oacc_default_goacc_validate_dims and moved to omp-offload.h.
(offload_funcs, offload_vars): Moved to omp-offload.h.
* omp-low.c: Include omp-general.h, omp-offload.h and omp-grid.h.
(omp_region): Moved to omp-expand.c.
(omp_for_data_loop): Moved to omp-general.h.
(omp_for_data): Likewise.
(oacc_loop): Moved to omp-offload.c.
(oacc_loop_flags): Moved to omp-general.h.
(offload_funcs, offload_vars): Moved to omp-offload.c.
(root_omp_region): Moved to omp-expand.c.
(omp_any_child_fn_dumped): Likewise.
(find_omp_clause): Renamed to omp_find_clause and moved to
omp-general.c.
(is_combined_parallel): Moved to omp-expand.c.
(is_reference): Renamed to omp_is_reference and and moved to
omp-general.c.
(adjust_for_condition): Renamed to omp_adjust_for_condition and moved
to omp-general.c.
(get_omp_for_step_from_incr): Renamed to omp_get_for_step_from_incr
and moved to omp-general.c.
(extract_omp_for_data): Renamed to omp_extract_for_data and moved to
omp-general.c.
(workshare_safe_to_combine_p): Moved to omp-expand.c.
(omp_adjust_chunk_size): Likewise.
(get_ws_args_for): Likewise.
(get_base_type): Removed.
(dump_omp_region): Moved to omp-expand.c.
(debug_omp_region): Likewise.
(debug_all_omp_regions): Likewise.
(new_omp_region): Likewise.
(free_omp_region_1): Likewise.
(free_omp_regions): Renamed to omp_free_regions and moved to
omp-expand.c.
(find_combined_for): Renamed to omp_find_combined_for, made global.
(build_omp_barrier): Renamed to omp_build_barrier and moved to
omp-general.c.
(omp_max_vf): Moved to omp-general.c.
(omp_max_simt_vf): Likewise.
(gimple_build_cond_empty): Moved to omp-expand.c.
(parallel_needs_hsa_kernel_p): Likewise.
(expand_omp_build_assign): Moved declaration to omp-expand.c.
(expand_parallel_call): Moved to omp-expand.c.
(expand_cilk_for_call): Likewise.
(expand_task_call): Likewise.
(vec2chain): Likewise.
(remove_exit_barrier): Likewise.
(remove_exit_barriers): Likewise.
(optimize_omp_library_calls): Likewise.
(expand_omp_regimplify_p): Likewise.
(expand_omp_build_assign): Likewise.
(expand_omp_taskreg): Likewise.
(oacc_collapse): Likewise.
(expand_oacc_collapse_init): Likewise.
(expand_oacc_collapse_vars): Likewise.
(expand_omp_for_init_counts): Likewise.
(expand_omp_for_init_vars): Likewise.
(extract_omp_for_update_vars): Likewise.
(expand_omp_ordered_source): Likewise.
(expand_omp_ordered_sink): Likewise.
(expand_omp_ordered_source_sink): Likewise.
(expand_omp_for_ordered_loops): Likewise.
(expand_omp_for_generic): Likewise.
(expand_omp_for_static_nochunk): Likewise.
(find_phi_with_arg_on_edge): Likewise.
(expand_omp_for_static_chunk): Likewise.
(expand_cilk_for): Likewise.
(expand_omp_simd): Likewise.
(expand_omp_taskloop_for_outer): Likewise.
(expand_omp_taskloop_for_inner): Likewise.
(expand_oacc_for): Likewise.
(expand_omp_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_atomic): Likewise.
(oacc_launch_pack): and moved to omp-general.c, made public.
(OACC_FN_ATTRIB): Likewise.
(replace_oacc_fn_attrib): Renamed to oacc_replace_fn_attrib and moved
to omp-general.c.
(set_oacc_fn_attrib): Renamed to oacc_set_fn_attrib and moved to
omp-general.c.
(build_oacc_routine_dims): Renamed to oacc_build_routine_dims and
moved to omp-general.c.
(get_oacc_fn_attrib): Renamed to oacc_get_fn_attrib and moved to
omp-general.c.
(oacc_fn_attrib_kernels_p): Moved to omp-general.c.
(oacc_fn_attrib_level): Moved to omp-offload.c.
(get_oacc_fn_dim_size): Renamed to oacc_get_fn_dim_size and moved to
omp-general.c.
(get_oacc_ifn_dim_arg): Renamed to oacc_get_ifn_dim_arg and moved to
omp-general.c.
(mark_loops_in_oacc_kernels_region): Moved to omp-expand.c.
(grid_launch_attributes_trees): Likewise.
(grid_attr_trees): Likewise.
(grid_create_kernel_launch_attr_types): Likewise.
(grid_insert_store_range_dim): Likewise.
(grid_get_kernel_launch_attributes): Likewise.
(get_target_argument_identifier_1): Likewise.
(get_target_argument_identifier): Likewise.
(get_target_argument_value): Likewise.
(push_target_argument_according_to_value): Likewise.
(get_target_arguments): Likewise.
(expand_omp_target): Likewise.
(grid_expand_omp_for_loop): Moved to omp-grid.c.
(grid_arg_decl_map): Likewise.
(grid_remap_kernel_arg_accesses): Likewise.
(grid_expand_target_grid_body): Likewise.
(expand_omp): Renamed to omp_expand and moved to omp-expand.c.
(build_omp_regions_1): Moved to omp-expand.c.
(build_omp_regions_root): Likewise.
(omp_expand_local): Likewise.
(build_omp_regions): Likewise.
(execute_expand_omp): Likewise.
(pass_data_expand_omp): Likewise.
(pass_expand_omp): Likewise.
(make_pass_expand_omp): Likewise.
(pass_data_expand_omp_ssa): Likewise.
(pass_expand_omp_ssa): Likewise.
(make_pass_expand_omp_ssa): Likewise.
(grid_lastprivate_predicate): Renamed to
omp_grid_lastprivate_predicate and moved to omp-grid.c, made public.
(grid_prop): Moved to omp-grid.c.
(GRID_MISSED_MSG_PREFIX): Likewise.
(grid_safe_assignment_p): Likewise.
(grid_seq_only_contains_local_assignments): Likewise.
(grid_find_single_omp_among_assignments_1): Likewise.
(grid_find_single_omp_among_assignments): Likewise.
(grid_find_ungridifiable_statement): Likewise.
(grid_parallel_clauses_gridifiable): Likewise.
(grid_inner_loop_gridifiable_p): Likewise.
(grid_dist_follows_simple_pattern): Likewise.
(grid_gfor_follows_tiling_pattern): Likewise.
(grid_call_permissible_in_distribute_p): Likewise.
(grid_handle_call_in_distribute): Likewise.
(grid_dist_follows_tiling_pattern): Likewise.
(grid_target_follows_gridifiable_pattern): Likewise.
(grid_remap_prebody_decls): Likewise.
(grid_var_segment): Likewise.
(grid_mark_variable_segment): Likewise.
(grid_copy_leading_local_assignments): Likewise.
(grid_process_grid_body): Likewise.
(grid_eliminate_combined_simd_part): Likewise.
(grid_mark_tiling_loops): Likewise.
(grid_mark_tiling_parallels_and_loops): Likewise.
(grid_process_kernel_body_copy): Likewise.
(grid_attempt_target_gridification): Likewise.
(grid_gridify_all_targets_stmt): Likewise.
(grid_gridify_all_targets): Renamed to omp_grid_gridify_all_targets
and moved to omp-grid.c, made public.
(make_gimple_omp_edges): Renamed to omp_make_gimple_edges and moved to
omp-expand.c.
(add_decls_addresses_to_decl_constructor): Moved to omp-offload.c.
(omp_finish_file): Likewise.
(oacc_thread_numbers): Likewise.
(oacc_xform_loop): Likewise.
(oacc_default_dims, oacc_min_dims): Likewise.
(oacc_parse_default_dims): Likewise.
(oacc_validate_dims): Likewise.
(new_oacc_loop_raw): Likewise.
(new_oacc_loop_outer): Likewise.
(new_oacc_loop): Likewise.
(new_oacc_loop_routine): Likewise.
(finish_oacc_loop): Likewise.
(free_oacc_loop): Likewise.
(dump_oacc_loop_part): Likewise.
(dump_oacc_loop): Likewise.
(debug_oacc_loop): Likewise.
(oacc_loop_discover_walk): Likewise.
(oacc_loop_sibling_nreverse): Likewise.
(oacc_loop_discovery): Likewise.
(oacc_loop_xform_head_tail): Likewise.
(oacc_loop_xform_loop): Likewise.
(oacc_loop_process): Likewise.
(oacc_loop_fixed_partitions): Likewise.
(oacc_loop_auto_partitions): Likewise.
(oacc_loop_partition): Likewise.
(default_goacc_fork_join): Likewise.
(default_goacc_reduction): Likewise.
(execute_oacc_device_lower): Likewise.
(default_goacc_validate_dims): Likewise.
(default_goacc_dim_limit): Likewise.
(pass_data_oacc_device_lower): Likewise.
(pass_oacc_device_lower): Likewise.
(make_pass_oacc_device_lower): Likewise.
(execute_omp_device_lower): Likewise.
(pass_data_omp_device_lower): Likewise.
(pass_omp_device_lower): Likewise.
(make_pass_omp_device_lower): Likewise.
(pass_data_omp_target_link): Likewise.
(pass_omp_target_link): Likewise.
(find_link_var_op): Likewise.
(pass_omp_target_link::execute): Likewise.
(make_pass_omp_target_link): Likewise.
* Makefile.in (OBJS): Added omp-offload.o, omp-expand.o, omp-general.o
and omp-grid.o.
(GTFILES): Added omp-offload.h, omp-offload.c and omp-expand.c, removed
omp-low.h.
* gimple-fold.c: Include omp-general.h instead of omp-low.h.
(fold_internal_goacc_dim): Adjusted calls to
get_oacc_ifn_dim_arg and get_oacc_fn_dim_size to use their new names.
* gimplify.c: Include omp-low.h.
(omp_notice_variable): Adjust the call to get_oacc_fn_attrib to use
its new name.
(gimplify_omp_task): Adjusted calls to find_omp_clause to use its new
name.
(gimplify_omp_for): Likewise.
* lto-cgraph.c: Include omp-offload.h instead of omp-low.h.
* toplev.c: Include omp-offload.h instead of omp-low.h.
* tree-cfg.c: Include omp-general.h instead of omp-low.h. Also
include omp-expand.h.
(make_edges_bb): Adjusted the call to make_gimple_omp_edges to use its
new name.
(make_edges): Adjust the call to free_omp_regions to use its new name.
* tree-parloops.c: Include omp-general.h.
(create_parallel_loop): Adjusted the call to set_oacc_fn_attrib to use
its new name.
(parallelize_loops): Adjusted the call to get_oacc_fn_attrib to use
its new name.
* tree-ssa-loop.c: Include omp-general.h instead of omp-low.h.
(gate_oacc_kernels): Adjusted the call to get_oacc_fn_attrib to use
its new name.
* tree-vrp.c: Include omp-general.h instead of omp-low.h.
(extract_range_basic): Adjusted calls to get_oacc_ifn_dim_arg and
get_oacc_fn_dim_size to use their new names.
* varpool.c: Include omp-offload.h instead of omp-low.h.
* gengtype.c (open_base_files): Replace omp-low.h with omp-offload.h in
ifiles.
* config/nvptx/nvptx.c: Include omp-general.c.
(nvptx_expand_call): Adjusted the call to get_oacc_fn_attrib to use
its new name.
(nvptx_reorg): Likewise.
(nvptx_record_offload_symbol): Likewise.
gcc/c-family:
* c-omp.c: Include omp-general.h instead of omp-low.h.
(c_finish_oacc_wait): Adjusted call to find_omp_clause to use its new
name.
gcc/c/
* c-parser.c: Include omp-general.h and omp-offload.h instead of
omp-low.h.
(c_finish_oacc_routine): Adjusted call to
get_oacc_fn_attrib, build_oacc_routine_dims and replace_oacc_fn_attrib
to use their new names.
(c_parser_oacc_enter_exit_data): Adjusted call to find_omp_clause to
use its new name.
(c_parser_oacc_update): Likewise.
(c_parser_omp_simd): Likewise.
(c_parser_omp_target_update): Likewise.
* c-typeck.c: Include omp-general.h instead of omp-low.h.
(c_finish_omp_cancel): Adjusted call to find_omp_clause to use its new
name.
(c_finish_omp_cancellation_point): Likewise.
* gimple-parser.c: Do not include omp-low.h
gcc/cp/
* parser.c: Include omp-general.h and omp-offload.h instead of
omp-low.h.
(cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new
name.
(cp_parser_omp_target_update): Likewise.
(cp_parser_oacc_declare): Likewise.
(cp_parser_oacc_enter_exit_data): Likewise.
(cp_parser_oacc_update): Likewise.
(cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib,
build_oacc_routine_dims and replace_oacc_fn_attrib to use their new
names.
* semantics.c: Include omp-general insteda of omp-low.h.
(finish_omp_for): Adjusted calls to find_omp_clause to use its new
name.
(finish_omp_cancel): Likewise.
(finish_omp_cancellation_point): Likewise.
fortran/
* trans-openmp.c: Include omp-general.h.
From-SVN: r243673
Martin Sebor [Wed, 14 Dec 2016 21:58:19 +0000 (21:58 +0000)]
PR middle-end/78786 - GCC hangs/out of memory calling sprintf with large precision
gcc/ChangeLog:
PR middle-end/78786
* gimple-ssa-sprintf.c (target_dir_max): New macro.
(get_mpfr_format_length): New function.
(format_integer): Use HOST_WIDE_INT instead of int.
(format_floating_max): Same.
(format_floating): Call get_mpfr_format_length.
(format_directive): Use target_dir_max.
gcc/testsuite/ChangeLog:
PR middle-end/78786
* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: New test.
From-SVN: r243672
Jakub Jelinek [Wed, 14 Dec 2016 21:39:51 +0000 (22:39 +0100)]
re PR target/78791 (ACATS cxf2001 failure)
PR target/78791
* config/i386/i386.h (enum ix86_stack_slot): Add SLOT_STV_TEMP.
* config/i386/i386.c (dimode_scalar_chain::make_vector_copies,
dimode_scalar_chain::convert_reg): Use SLOT_STV_TEMP instead of
SLOT_TEMP.
* gcc.c-torture/execute/pr78791.c: New test.
* gcc.target/i386/pr78791.c: New test.
From-SVN: r243671
François Dumont [Wed, 14 Dec 2016 20:50:07 +0000 (20:50 +0000)]
stl_tree.h (_Rb_tree_impl(const _Key_compare&, const _Node_allocator&): Restore before C++11 mode.
2016-12-14 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_tree.h
(_Rb_tree_impl(const _Key_compare&, const _Node_allocator&): Restore
before C++11 mode.
From-SVN: r243670
Marek Polacek [Wed, 14 Dec 2016 20:41:43 +0000 (20:41 +0000)]
re PR c++/72775 (internal compiler error: in finish_expr_stmt, at cp/semantics.c:677)
PR c++/72775
* init.c (perform_member_init): Diagnose member initializer for
flexible array member.
* g++.dg/ext/flexary12.C: Adjust dg-error.
* g++.dg/ext/flexary20.C: New.
* g++.dg/ext/flexary21.C: New.
From-SVN: r243669
Uros Bizjak [Wed, 14 Dec 2016 20:27:06 +0000 (21:27 +0100)]
re PR target/59874 (Missing builtin (__builtin_clzs) when compiling with g++)
PR target/59874
* config/i386/i386-builtin.def: Add __builtin_clzs and __builtin_ctzs.
(ix86_fold_builtin): Handle IX86_BUILTIN_CTZS and IX86_BUILTIN_CLZS.
* config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
(*clzhi2): Ditto.
testsuite/ChangeLog
PR target/59874
* gcc.target/i386/pr59874-1.c: New test.
* gcc.target/i386/pr59874-2.c: Ditto.
From-SVN: r243668
David Edelsohn [Wed, 14 Dec 2016 19:53:51 +0000 (19:53 +0000)]
pr78515.c: Add -Wno-psabi for AIX.
* gcc.dg/torture/pr78515.c: Add -Wno-psabi for AIX.
* gcc.dg/tree-ssa/forwprop-35.c: Add -Wno-psabi for AIX.
* gcc.dg/pr69634.c: Add -Wno-psabi for AIX.
From-SVN: r243666
Jakub Jelinek [Wed, 14 Dec 2016 19:40:05 +0000 (20:40 +0100)]
re PR debug/77844 (Compilation of simple C++ example exhaust memory)
PR debug/77844
* valtrack.c: Include rtl-iter.h.
(struct rtx_subst_pair): Add insn field.
(propagate_for_debug_subst): If pair->to contains at least 2
regs, create a DEBUG_INSN with a debug temp before pair->insn
and replace from with the debug temp instead of pair->to.
(propagate_for_debug): Initialize p.insn.
* combine.c (insn_uid_check): New inline function.
(INSN_COST, LOG_LINKS): Use it instead of INSN_UID.
(find_single_use, combine_instructions,
cant_combine_insn_p, try_combine): Use NONDEBUG_INSN_P instead of
INSN_P.
* g++.dg/opt/pr77844.C: New test.
From-SVN: r243662
Martin Sebor [Wed, 14 Dec 2016 17:23:16 +0000 (17:23 +0000)]
PR c/78673 - sprintf missing attribute nonnull on destination argument
PR c/78673 - sprintf missing attribute nonnull on destination argument
PR c/17308 - nonnull attribute not as useful as it could be
gcc/ChangeLog:
PR c/17308
* builtin-attrs.def (ATTR_NONNULL_1_1, ATTR_NONNULL_1_2): Defined.
(ATTR_NONNULL_1_3, ATTR_NONNULL_1_4, ATTR_NONNULL_1_5): Same.
(ATTR_NOTHROW_NONNULL_1_1, ATTR_NOTHROW_NONNULL_1_2): Same.
(ATTR_NOTHROW_NONNULL_1_3, ATTR_NOTHROW_NONNULL_1_4): Same.
(ATTR_NOTHROW_NONNULL_1_5): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_1_2): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_2_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_2_3): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_3_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_3_4): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_4_0): Same.
(ATTR_NONNULL_1_FORMAT_PRINTF_4_5): Same.
* builtins.c (validate_arg): Add argument. Treat null pointers
passed to nonnull arguments as invalid.
(validate_arglist): Same.
* builtins.def (fprintf, fprintf_unlocked): Add nonnull attribute.
(printf, printf_unlocked, sprintf. vfprintf, vsprintf): Same.
(__sprintf_chk, __vsprintf_chk, __fprintf_chk, __vfprintf_chk): Same.
* calls.c (get_nonnull_ags, maybe_warn_null_arg): New functions.
(initialize_argument_information): Diagnose null pointers passed to
arguments declared nonnull.
* calls.h (get_nonnull_args): Declared.
gcc/c-family/ChangeLog:
PR c/17308
* c-common.c (check_nonnull_arg): Disable when optimization
is enabled.
gcc/testsuite/ChangeLog:
PR c/17308
* gcc.dg/builtins-nonnull.c: New test.
* gcc.dg/nonnull-4.c: New test.
From-SVN: r243661
Nathan Sidwell [Wed, 14 Dec 2016 16:45:33 +0000 (16:45 +0000)]
re PR c++/78701 (ICE: unexpected expression N of kind template_parm_index)
PR c++/78701
* pt.c (type_unification_real): Check tsubst arg doesn't have
remaining template parms before converting it.
PR c++/78701
* g++.dg/cpp0x/pr78701.C: New.
From-SVN: r243657
Nathan Sidwell [Wed, 14 Dec 2016 16:43:07 +0000 (16:43 +0000)]
re PR c++/69481 (ICE with C++11 alias using with templates)
PR c++/69481
* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
TYPE_ALIAS_TEMPLATE_INFO for aliases.
From-SVN: r243656
Michael Meissner [Wed, 14 Dec 2016 16:08:07 +0000 (16:08 +0000)]
rs6000.c (rs6000_split_vec_extract_var): On ISA 3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract instructions.
[gcc]
2016-12-14 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_split_vec_extract_var): On ISA
3.0/power9, add support to use the VEXTU{B,H,W}{L,R}X extract
instructions.
* config/rs6000/vsx.md (VSr2): Add IEEE 128-bit floating point
type constraint registers.
(VSr3): Likewise.
(FL_CONV): New mode iterator for binary floating types that have a
direct conversion from 64-bit integer to floating point.
(vsx_extract_<mode>_p9): Add support for the ISA 3.0/power9
VEXTU{B,H,W}{L,R}X extract instructions.
(vsx_extract_<mode>_p9 splitter): Add splitter to load up the
extract byte position into the GPR if we are using the
VEXTU{B,H,W}{L,R}X extract instructions.
(vsx_extract_<mode>_di_p9): Support extracts to GPRs.
(vsx_extract_<mode>_store_p9): Support extracting to GPRs so that
we can use reg+offset address instructions.
(vsx_extract_<mode>_var): Support extracts to GPRs.
(vsx_extract_<VSX_EXTRACT_I:mode>_<SDI:mode>_var): New combiner
insn to combine vector extracts with zero_extend.
(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Optimize
extracting a small integer vector element and converting it to a
floating point type.
(vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
(UNSPEC_XXEXTRACTUW): New unspec.
(UNSPEC_XXINSERTW): Likewise.
(vextract4b): Add support for the vec_vextract4b built-in
function.
(vextract4b_internal): Likewise.
(vinsert4b): Add support for the vec_insert4b built-in function.
Include both a version that inserts element 1 from a V4SI object
and one that inserts a DI object.
(vinsert4b_internal): Likewise.
(vinsert4b_di): Likewise.
(vinsert4b_di_internal): Likewise.
* config/rs6000/predicates.md (const_0_to_11_operand): New
predicate, match 0..11.
* config/rs6000/rs6000-builtin.def (BU_P9V_VSX_3): Set built-in
type to ternary, not binary.
(BU_P9V_64BIT_VSX_3): Likewise.
(P9V_BUILTIN_VEXTRACT4B): Add support for vec_vinsert4b and
vec_extract4b non-overloaded built-in functions.
(P9V_BUILTIN_VINSERT4B): Likewise.
(P9V_BUILTIN_VINSERT4B_DI): Likewise.
(P9V_BUILTIN_VEC_VEXTULX): Move to section that adds 2 operand ISA
3.0 built-in functions.
(P9V_BUILTIN_VEC_VEXTURX): Likewise.
(P9V_BUILTIN_VEC_VEXTRACT4B): Add support for overloaded
vec_insert4b and vec_extract4 built-in functions.
(P9V_BUILTIN_VEC_VINSERT4B): Likewise.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
overloaded support for vec_vinsert4b and vec_extract4b.
* config/rs6000/rs6000.c (altivec_expand_builtin): Add checks for
the vec_insert4b and vec_extract4b byte number being a constant in
the range 0..11.
* config/rs6000/altivec.h (vec_vinsert4b): Support vec_vinsert4b
and vec_extract4b built-in functions.
* doc/extend.doc (PowerPC VSX built-in functions): Document
vec_insert4b and vec_extract4b.
[gcc/testsuite]
2016-12-14 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc/testsuite/gcc.target/powerpc/vec-extract.h: If DO_TRACE is
defined, add tracing of the various extracts to stderr. Add
support for tests that convert the result to another type.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4sf.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4si-df.c: Add new
tests that do an extract and then convert the values double.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v4siu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hiu-df.c: Likewise.
* gcc/testsuite/gcc.target/powerpc/vec-extract-v8hi-df.c: Likewise.
* gcc.target/powerpc/p9-extract-1.c: Update test to check for
VEXTU{B,H,W}{L,R}X instructions being generated by default instead
of VEXTRACTU{B,H} and XXEXTRACTUW.
* gcc.target/powerpc/p9-extract-3.c: New test for combination of
vec_extract and convert to floating point.
* gcc.target/powerpc/p9-vinsert4b-1.c: New test for vec_vinsert4b
and vec_extract4b.
* gcc.target/powerpc/p9-vinsert4b-2.c: Likewise.
From-SVN: r243653
Jonathan Wakely [Wed, 14 Dec 2016 16:07:29 +0000 (16:07 +0000)]
Make printers use singular noun for a single element
* python/libstdcxx/v6/printers.py (num_elements): New function.
(StdMapPrinter.to_string, StdSetPrinter.to_string)
(StdDequePrinter.to_string, Tr1UnorderedSetPrinter.to_string)
(Tr1UnorderedMapPrinter.to_string): Use num_elements.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected results
to use singular noun when there is only one element.
* testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/tr1.cc: Likewise.
From-SVN: r243652
Jonathan Wakely [Wed, 14 Dec 2016 15:17:57 +0000 (15:17 +0000)]
Make printers detect invalid debug mode iterators
PR libstdc++/59170
* python/libstdcxx/v6/printers.py (StdDebugIteratorPrinter): Use
_M_sequence and _M_version to detect invalid iterators.
* testsuite/libstdc++-prettyprinters/debug.cc: Test debug mode vector
and test invalid iterators.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: New test.
From-SVN: r243650
Toma Tabacu [Wed, 14 Dec 2016 14:44:14 +0000 (14:44 +0000)]
MIPS: Remove redundant dg-skip-if from mips16-attributes.c.
gcc/testsuite
* gcc.target/mips/mips16-attributes.c: Remove dg-skip-if for
-mmicromips.
From-SVN: r243649
Andre Vehreschild [Wed, 14 Dec 2016 12:49:45 +0000 (13:49 +0100)]
re PR fortran/78780 ([Coarray] ICE in conv_caf_send, at fortran/trans-intrinsic.c:1936)
gcc/testsuite/ChangeLog:
2016-12-14 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/78780
* gfortran.dg/coarray/alloc_comp_5.f90: New test.
* gfortran.dg/coarray_42.f90: New test.
gcc/fortran/ChangeLog:
2016-12-14 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/78780
* trans-expr.c (gfc_trans_assignment_1): Improve check whether detour
caf-runtime routines is needed.
From-SVN: r243648
Andre Vehreschild [Wed, 14 Dec 2016 11:52:09 +0000 (12:52 +0100)]
re PR fortran/78672 (Gfortran test suite failures with a sanitized compiler)
gcc/fortran/ChangeLog:
2016-12-14 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/78672
* array.c (gfc_find_array_ref): Add flag to return NULL when no ref is
found instead of erroring out.
* data.c (gfc_assign_data_value): Only constant expressions are valid
for initializers.
* gfortran.h: Reflect change of gfc_find_array_ref's signature.
* interface.c (compare_actual_formal): Access the non-elemental
array-ref. Prevent taking a REF_COMPONENT for a REF_ARRAY. Correct
indentation.
* module.c (load_omp_udrs): Clear typespec before reading into it.
* trans-decl.c (gfc_build_qualified_array): Prevent accessing the array
when it is a coarray.
* trans-expr.c (gfc_conv_cst_int_power): Use wi::abs()-function instead
of crutch preventing sanitizer's bickering here.
* trans-stmt.c (gfc_trans_deallocate): Only get data-component when it
is a descriptor-array here.
From-SVN: r243647
Jakub Jelinek [Wed, 14 Dec 2016 10:39:36 +0000 (11:39 +0100)]
re PR target/78796 (TLS fails to link on aarch64 with -mcmodel=large)
PR target/78796
* gcc.dg/tls/pr78796.c: New test.
From-SVN: r243645
Richard Biener [Wed, 14 Dec 2016 10:35:11 +0000 (10:35 +0000)]
re PR tree-optimization/78731 (Possible bug with switch when optimization is turned on.)
2016-12-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/78731
* gcc.dg/torture/pr78731.c: New testcase.
From-SVN: r243644
Martin Liska [Wed, 14 Dec 2016 10:33:10 +0000 (11:33 +0100)]
Print 2 digits after decimal delimiter for BB frequencies
* gimple-pretty-print.c (dump_probability): New function.
(dump_edge_probability): Use the function.
(dump_gimple_label): Likewise.
(dump_gimple_bb_header): Likewise.
* gcc.dg/tree-ssa/
20040703-1.c: Update scanned pattern.
* gcc.dg/tree-ssa/dump-2.c: Likewise.
From-SVN: r243643
Martin Liska [Wed, 14 Dec 2016 10:30:24 +0000 (11:30 +0100)]
Enhance analyze_brprob script
* analyze_brprob.py: Add new column to output and new sorting
option. Fix coding style to not exceed 80 characters.
* analyze_brprob_spec.py: Add new sorting
option. Fix coding style to not exceed 80 characters.
From-SVN: r243640
Toma Tabacu [Wed, 14 Dec 2016 10:19:01 +0000 (10:19 +0000)]
MIPS: Force assembly output for msa-builtins-err.c.
gcc/testsuite
* gcc.target/mips/msa-builtins-err.c (dg-options): Add
-ffat-lto-objects option.
From-SVN: r243639
Prathamesh Kulkarni [Wed, 14 Dec 2016 09:10:31 +0000 (09:10 +0000)]
tree-ssa-strlen.c (fold_strstr_to_memcmp): New function.
2016-12-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Jakub Jelinek <jakub@redhat.com>
* tree-ssa-strlen.c (fold_strstr_to_memcmp): New function.
(strlen_optimize_stmt): Call fold_strstr_to_memcmp.
testsuite/
* gcc.dg/strlenopt-30.c: New test-case.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r243633
Eric Botcazou [Wed, 14 Dec 2016 08:34:15 +0000 (08:34 +0000)]
lra-constraints.c (process_address_1): Do not attempt to decompose addresses for MEMs that satisfy fixed-form constraints.
* lra-constraints.c (process_address_1): Do not attempt to decompose
addresses for MEMs that satisfy fixed-form constraints.
From-SVN: r243632
Richard Biener [Wed, 14 Dec 2016 08:33:12 +0000 (08:33 +0000)]
re PR tree-optimization/78788 (ICE (segfault) on s390x-linux-gnu)
2016-12-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/78788
* tree-vrp.c (set_value_range): Allow [-INF(OVF), +INF(OVF)].
(set_and_canonicalize_value_range): Do not drop the above to
VARYING.
* gcc.dg/torture/pr78788.c: New testcase.
From-SVN: r243631
GCC Administrator [Wed, 14 Dec 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r243629
Nathan Sidwell [Tue, 13 Dec 2016 20:43:08 +0000 (20:43 +0000)]
re PR c++/69481 (ICE with C++11 alias using with templates)
cp/
PR c++/69481
* cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking.
(TYPE_ALIAS_TEMPLATE_INFO): New.
(TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros.
* error.c (dump_alias_template_specialization): Adjust.
* pt.c (maybe_process_partial_specialization)
iterative_has_template_arg, find_parameter_packs_r,
alias_template_specialization_p, dependent_alias_template_spec_p,
get_underlying_template, lookup_template_class_1, unify): Adjust
template using decl access.
testsuite/
PR c++/69481
* g++.dg/cpp0x/pr69481.C: New.
(--This line, and those below, will be ignored--
M gcc/testsuite/ChangeLog
A gcc/testsuite/g++.dg/cpp0x/pr69481.C
M gcc/cp/cp-tree.h
M gcc/cp/error.c
M gcc/cp/ChangeLog
M gcc/cp/pt.c
From-SVN: r243624
Bill Schmidt [Tue, 13 Dec 2016 20:05:10 +0000 (20:05 +0000)]
rs600.c (rs6000_builtin_vectorization_cost): Adjust unaligned load cost.
2016-12-13 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs600.c (rs6000_builtin_vectorization_cost):
Adjust unaligned load cost.
From-SVN: r243623
Janus Weil [Tue, 13 Dec 2016 18:55:20 +0000 (19:55 +0100)]
re PR fortran/78798 ([cleanup] some int-valued functions should be bool)
2016-12-13 Janus Weil <janus@gcc.gnu.org>
PR fortran/78798
* gfortran.h (gfc_is_constant_expr, gfc_is_formal_arg,
gfc_is_compile_time_shape): Return bool instead of int.
* array.c (gfc_is_compile_time_shape): Ditto.
* expr.c (gfc_is_constant_expr): Ditto.
* resolve.c (gfc_is_formal_arg): Ditto. Make formal_arg_flag bool.
From-SVN: r243621
Ian Lance Taylor [Tue, 13 Dec 2016 18:03:45 +0000 (18:03 +0000)]
libgo: fixes for Solaris build
Don't put m[0-4] in runtime.inc.
Pass -mclear-hwcap to the linker if supported.
From Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/34331
From-SVN: r243619
Uros Bizjak [Tue, 13 Dec 2016 17:15:35 +0000 (18:15 +0100)]
re PR target/78794 (We noticed ~9% regression in 32-bit mode for 462.libquntum on Avoton after r243202)
PR target/78794
* config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
Calculate additional gain for andnot for targets without BMI.
testsuite/ChangeLog:
PR target/78794
* gcc.target/i386/pr78794.c: New test.
From-SVN: r243615
Andre Vehreschild [Tue, 13 Dec 2016 16:47:48 +0000 (17:47 +0100)]
re PR fortran/77785 ([Coarray] ICE in gfc_get_caf_token_offset, at fortran/trans-expr.c:1990)
gcc/fortran/ChangeLog:
2016-12-13 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/77785
* resolve.c (resolve_symbol): Correct attr lookup to the _data
component.
* trans-array.c (gfc_alloc_allocatable_for_assignment): Indirect ref
pointers and references before retrieving the caf-token.
gcc/testsuite/ChangeLog:
2016-12-13 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/77785
* gfortran.dg/coarray_38.f90: Added expecting error message.
* gfortran.dg/coarray_41.f90: New test.
* gfortran.dg/coarray_class_2.f90: New test.
From-SVN: r243614
Carl Love [Tue, 13 Dec 2016 16:18:36 +0000 (16:18 +0000)]
rs6000-c.c: Add built-in support for vector float vec_pack (vector double...
gcc/ChangeLog:
2016-12-13 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-c.c: Add built-in support for
vector float vec_pack (vector double, vector double)
vector double vec_sld (vector double, vector double)
* config/rs6000/rs6000.c: Add icode check for vsldoi_v2df to allow
4-bit unsigned literal.
* config/rs6000/rs6000-builtin.def: Add definition for VSLDOI_2DF
* doc/extend.texi: Update the built-in documentation file for the
new powerpc vec_pack and vec_sld built-ins.
gcc/testsuite/ChangeLog:
2016-12-13 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-3.c: Add new test of the test suite
file.
* gcc.target/powerpc/builtins-3-p8.c: Add new test of the test suite
file.
From-SVN: r243612
Martin Liska [Tue, 13 Dec 2016 15:35:14 +0000 (16:35 +0100)]
Add sanopt for ASAN_MARK poison and unpoison.
* sanopt.c (sanopt_optimize_walker): Set contains_asan_mark.
(sanopt_optimize): Add new argument.
(sanitize_asan_mark_unpoison): New function.
(maybe_contains_asan_check): Likewise.
(sanitize_asan_mark_poison): Likewise.
(pass_sanopt::execute): Call the new functions.
From-SVN: r243611
Martin Liska [Tue, 13 Dec 2016 15:26:14 +0000 (16:26 +0100)]
Fill bitregion_{start,end} in store_constructor (PR tree-optimization/78428)
* expr.c (store_constructor_field): Add new arguments to the
function.
(store_constructor): Set up bitregion_end and add
gcc_unreachable to fields that have either non-constant size
or (and) offset.
* gcc.dg/tree-ssa/pr78428.c: New test.
From-SVN: r243610
Janus Weil [Tue, 13 Dec 2016 14:28:17 +0000 (15:28 +0100)]
re PR fortran/78737 ([OOP] linking error with deferred, undefined user-defined derived-type I/O)
2016-12-13 Janus Weil <janus@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/78737
* gfortran.h (gfc_find_typebound_dtio_proc): New prototype.
* interface.c (gfc_compare_interfaces): Whitespace fix.
(gfc_find_typebound_dtio_proc): New function.
(gfc_find_specific_dtio_proc): Use it. Improve error recovery.
* trans-io.c (get_dtio_proc): Implement polymorphic calls to DTIO
procedures.
2016-12-13 Janus Weil <janus@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/78737
* gfortran.dg/dtio_19.f90: New test case.
Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>
From-SVN: r243609
Marek Polacek [Tue, 13 Dec 2016 14:19:12 +0000 (14:19 +0000)]
tree-data-ref.c (compute_overlap_steps_for_affine_univar): Change parameters' type from int to HOST_WIDE_INT.
* tree-data-ref.c (compute_overlap_steps_for_affine_univar): Change
parameters' type from int to HOST_WIDE_INT.
(compute_overlap_steps_for_affine_1_2): Change parameters' type from
int to HOST_WIDE_INT.
(build_classic_dist_vector_1): Likewise.
(add_multivariate_self_dist): Likewise.
From-SVN: r243607
Michael Matz [Tue, 13 Dec 2016 14:14:41 +0000 (14:14 +0000)]
Fix pr78725
PR tree-optimization/78725
* tree-ssa-loop-split.c (split_at_bb_p): Check for overflow and
at correct use point.
testsuite/
PR tree-optimization/78725
* gcc.dg/pr78725.c: New test.
* gcc.dg/pr78725-2.c: New test.
From-SVN: r243606
Martin Liska [Tue, 13 Dec 2016 13:33:35 +0000 (14:33 +0100)]
Rename BUILT_IN_ASAN_CLOBBER_N to
* asan.c (asan_expand_mark_ifn): Use renamed
BUILT_IN_ASAN_{UN}CLOBBER_N to BUILT_IN_ASAN_{UN}POISON_STACK_MEMORY.
* sanitizer.def: Likewise.
From-SVN: r243605
James Greenhalgh [Tue, 13 Dec 2016 10:43:02 +0000 (10:43 +0000)]
[Patch Doc] Update documentation for __fp16 type
gcc/
* doc/extend.texi (Half-Precision): Update to document current
compiler behaviour.
From-SVN: r243602
James Greenhalgh [Tue, 13 Dec 2016 10:40:32 +0000 (10:40 +0000)]
[Patch doc] Document _Float16 availability on ARM/AArch64
gcc/
* doc/extend.texi (Floating Types): Document availability of
_Float16 on ARM/AArch64.
From-SVN: r243601
Richard Biener [Tue, 13 Dec 2016 09:19:19 +0000 (09:19 +0000)]
re PR tree-optimization/78699 (ICE (segfault) on powerpc64le-linux-gnu (memory-hog))
2016-12-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/78699
* tree-vect-data-refs.c (vect_analyze_group_access_1): Limit
group size.
From-SVN: r243599
Richard Biener [Tue, 13 Dec 2016 09:17:42 +0000 (09:17 +0000)]
re PR tree-optimization/78742 (internal compiler error: in int_cst_value, at tree.c:10782)
2016-12-13 Richard Biener <rguenther@suse.de>
PR middle-end/78742
* tree.c (cst_and_fits_in_hwi): Look if the actual value fits.
* tree-object-size.c (compute_builtin_object_size): Use
tree_fits_shwi_p.
* tree-data-ref.c (initialize_matrix_A): Remove excess assert.
* gcc.dg/torture/pr78742.c: New testcase.
From-SVN: r243598
Martin Liska [Tue, 13 Dec 2016 09:14:47 +0000 (10:14 +0100)]
Add pretty printer for ASAN_MARK and add a helper fn
* asan.c (asan_mark_poison_p): Remove.
(asan_mark_p): New function.
(transform_statements): Use the function.
(asan_expand_mark_ifn): Do not use masked enum.
* asan.h (enum asan_mark_flags): Declare it via a macro.
* gimple-pretty-print.c (dump_gimple_call_args): Dump first
argument of ASAN_MARK.
* gimplify.c (build_asan_poison_call_expr): Use new enum values.
(asan_poison_variable): Likewise.
* gcc.dg/asan/use-after-scope-goto-1.c: Update first argument of
scanned pattern ASAN_MARK.
* gcc.dg/asan/use-after-scope-goto-2.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-1.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-2.c: Likewise.
* gcc.dg/asan/use-after-scope-switch-3.c: Likewise.
From-SVN: r243597
Jakub Jelinek [Tue, 13 Dec 2016 08:48:45 +0000 (09:48 +0100)]
re PR ipa/77905 (ICE at -Os and above in both 32-bit and 64-bit modes on x86_64-linux-gnu (internal compiler error: in ipa_comdats, at ipa-comdats.c:352))
PR ipa/77905
* ipa-pure-const.c (cdtor_p): Return true for
DECL_STATIC_{CON,DE}STRUCTOR even when it is
DECL_LOOPING_CONST_OR_PURE_P.
* g++.dg/ipa/pr77905.C: New test.
From-SVN: r243596
Jakub Jelinek [Tue, 13 Dec 2016 06:16:05 +0000 (07:16 +0100)]
re PR c++/78761 (C++14, compiler generate mangled name that can not be demangled)
PR c++/78761
* cp-demangle.c (cplus_demangle_type): Demangle Dc as decltype(auto).
* testsuite/demangle-expected: Add test for decltype(auto).
From-SVN: r243593
GCC Administrator [Tue, 13 Dec 2016 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r243588
Jakub Jelinek [Mon, 12 Dec 2016 22:02:52 +0000 (23:02 +0100)]
re PR tree-optimization/78777 (ICE in mark_reachable_handlers, at tree-eh.c:3823 (aarch64-linux-gnu))
PR tree-optimization/78777
* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge,
insert_initializers): Use stmt_ends_bb_p instead of is_ctrl_stmt.
* g++.dg/torture/pr78777.C: New test.
From-SVN: r243584
Jakub Jelinek [Mon, 12 Dec 2016 22:01:41 +0000 (23:01 +0100)]
re PR other/78766 (GCC Awk scripts use the non-POSIX /^{/ regex)
PR other/78766
* opt-functions.awk (opt_args): Use [{] instead of { in regexps.
Formatting fix.
From-SVN: r243583
Martin Sebor [Mon, 12 Dec 2016 21:56:22 +0000 (21:56 +0000)]
PR middle-end/78622 - -Wformat-length/-fprintf-return-value incorrect with overflow/wrapping
gcc/ChangeLog:
PR middle-end/78622
PR middle-end78606
* gimple-ssa-sprintf.c (min_bytes_remaining): Use res.knownrange
rather than res.bounded.
(get_width_and_precision): Set precision to -1 when negative.
(adjust_range_for_overflow): New function.
(format_integer): Correct the handling of the space, plus, and pound
flags, and the special case of zero precision.
Always set res.bounded to true unless either precision or width
is specified and unknown.
Call adjust_range_for_overflow.
Avoid use zero as the shortest value when precision is specified
but unknown.
(format_directive): Remove vestigial quoting. Always inform of
argument value or range when it's available.
(add_bytes): Correct the computation of boundrange used to
decide whether a warning is of a "maybe" or "defnitely" kind.
gcc/testsuite/ChangeLog:
PR middle-end/78622
PR middle-end78606
* gcc.c-torture/execute/pr78622.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Remove "benign" undefined
behavior inadvertently introduced in a previous commit. Tighten
up final checking.
* gcc.dg/tree-ssa/builtin-sprintf-5.c: Rename macros for clarity.
Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-6.c: Add test cases.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-5.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: Remove xfails and
add a final optimization check.
* gcc.dg/tree-ssa/builtin-sprintf.c: Add test cases.
* gcc.dg/tree-ssa/pr78622.c: New test.
From-SVN: r243582
Janus Weil [Mon, 12 Dec 2016 18:54:54 +0000 (19:54 +0100)]
re PR fortran/78392 (ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979)
2016-12-12 Janus Weil <janus@gcc.gnu.org>
PR fortran/78392
* expr.c (gfc_is_constant_expr): Specification functions are not
compile-time constants. Update documentation (add reference to F08
standard), add a FIXME.
(external_spec_function): Add reference to F08 standard.
* resolve.c (resolve_fl_variable): Ditto.
2016-12-12 Janus Weil <janus@gcc.gnu.org>
PR fortran/78392
* gfortran.dg/constant_shape.f90: New test case.
From-SVN: r243580
Dominik Vogt [Mon, 12 Dec 2016 18:23:48 +0000 (18:23 +0000)]
combine: Handle mode expanding zero_extracts in change_zero_ext.
Example:
(zero_extract:DI (reg:SI)
(const_int 24)
(const_int 0))
-->
(and:DI (subreg:DI (lshiftrt:SI (reg:SI) (const_int 8))
0)
(const_int
16777215))
2016-12-12 Dominik Vogt <vogt@linux.vnet.ibm.com>
* combine.c (change_zero_ext): Handle mode expanding zero_extracts.
From-SVN: r243578
Marek Polacek [Mon, 12 Dec 2016 17:58:00 +0000 (17:58 +0000)]
re PR c++/78647 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: tree check: expected tree_list, have error_mark in get_attribute_name, at attribs.c:664))
PR c++/78647
* c-common.c (attribute_fallthrough_p): Return false for
error_mark_node.
* g++.dg/parse/error58.C: New.
From-SVN: r243575
David Malcolm [Mon, 12 Dec 2016 17:37:48 +0000 (17:37 +0000)]
re PR preprocessor/78680 (ICE in get_substring_ranges_for_loc, at input.c:1398)
Fix for PR preprocessor/78680
PR preprocessor/78680 identifies a crash when attempting to issue
a -Wformat warning, where the format string includes a string token
split across multiple physical source lines via backslash-continued
lines.
The issue is that libcpp is generating bogus range information for
such tokens.
For example, in:
void fn1() {
__builtin_printf("\
%ld.\n\
2\n"); };
the range of the string token is printed as:
__builtin_printf("\
^~
whereas the range ought to be:
__builtin_printf("\
^~
%ld.\n\
~~~~~~~
2\n"); };
~~~~
The root cause is that the line notes expressing the update
of the buffer in lex.c aren't yet updated when the end-point of
the token is computed
3095 tok_range.m_finish
3096 = linemap_position_for_column (pfile->line_table,
3097 CPP_BUF_COLUMN (buffer, buffer->cur));
so that the physical line is still regarded as that of the start
of the token, and, where CPP_BUF_COLUMN uses (BUF)->line_base,
line_base is still the location of the first physical line in the
and hence the column information is too large (as if it were the
offset in the *logical* line).
(the printed range is somewhat misleading; the actual buggy range
extends beyond the "\ in the line, but within diagnostic-show-locus.c
layout::print_annotation_line only prints up to the xbound set by
layout::print_source_line and so truncates most of the buggy range).
The fix is to ensure that line notes are handled before calculating
the end-point of the token range.
This leads to the range for the string token being correctly
computed, as:
__builtin_printf("\
^~
%ld.\n\
~~~~~~~
2\n"); };
~~~~
and this leads to get_substring_ranges_for_loc failing gracefully,
rather than crashing.
gcc/testsuite/ChangeLog:
PR preprocessor/78680
* gcc.dg/format/pr78680.c: New test case.
* gcc.dg/plugin/diagnostic-test-expressions-1.c
(test_multiline_token): New function.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_backslash_continued_logical_lines): New function.
libcpp/ChangeLog:
PR preprocessor/78680
* lex.c (_cpp_lex_direct): Ensure line notes are processed before
computing the end-point of the token.
From-SVN: r243567
Nathan Sidwell [Mon, 12 Dec 2016 17:00:37 +0000 (17:00 +0000)]
re PR other/78252 (C++ demangler crashes with infinite recursion with lambda (auto))
libiberty/
PR c++/78252
* cp-demangle.c (struct d_print_info): Add is_lambda_arg field.
(d_print_init): Initialize it.
(d_print_comp_inner) <DEMANGLE_COMPONENT_TEMPLATE_PARAM>: Check
is_lambda_arg for auto.
<DEMANGLE_COMPONENT_REFERENCE,
DEMANGLE_COMPONENT_RVALUE_REFERENCE>: Skip smashing check when
is_lambda_arg.
<DEMANGLE_COMPONENT_LAMBDA>: Increment is_lambda_arg around arg
printing.
* testsuite/demangle-expected: Add lambda auto mangling cases.
gcc/testsuite/
PR c++/78252
* g++.dg/cpp1y/lambda-mangle-1.C: New.
From-SVN: r243566
Uros Bizjak [Mon, 12 Dec 2016 16:02:28 +0000 (17:02 +0100)]
re PR target/78738 (ICE in extract_insn, at recog.c:2311)
PR target/78738
* config/i386/i386.h (X87_ENABLE_ARITH): Also enable for
flag_unsafe_math_optimizations.
(X87_ENABLE_FLOAT): Ditto.
testsuite/ChangeLog:
PR target/78738
* gcc.target/i386/pr78738.c: New test.
From-SVN: r243559
Kyrylo Tkachov [Mon, 12 Dec 2016 15:47:47 +0000 (15:47 +0000)]
[libstdc++][testsuite] XFAIL tests relying on long double-to-string conversions on broken newlib
* lib/target-supports.exp
(check_effective_target_newlib_broken_long_double_io): New check.
(check_effective_target_frexpl): Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
XFAIL run if newlib_broken_long_double_io.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc:
Likewise.
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
Likewise.
From-SVN: r243558
Jonathan Wakely [Mon, 12 Dec 2016 14:32:23 +0000 (14:32 +0000)]
Remove stray character at end of dg-do directive
* testsuite/experimental/filesystem/operations/is_empty.cc:
Remove stray character at end of dg-do directive.
From-SVN: r243555
Marek Polacek [Mon, 12 Dec 2016 13:57:32 +0000 (13:57 +0000)]
re PR middle-end/78716 (ICE in gimplify_va_arg_expr, at gimplify.c:12650 (i686-linux-gnu))
PR middle-end/78716
* gimplify.c (gimplify_va_arg_expr): Don't require ADDR_EXPR for
Case 1; check POINTER_TYPE_P instead.
* g++.dg/other/vararg-5.C: New.
From-SVN: r243553
Rainer Orth [Mon, 12 Dec 2016 13:40:21 +0000 (13:40 +0000)]
Disable hwcaps on libgfortran
libgfortran:
* configure.ac: Call GCC_CHECK_LINKER_HWCAP.
* Makefile.am (libgfortran_la_LDFLAGS): Add HWCAP_LDFLAGS.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
config:
* hwcaps.m4: New file.
libitm:
* acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Remove.
* aclocal.m4: Regenerate.
* configure.ac: Call GCC_CHECK_LINKER_HWCAP instead of
LIBITM_CHECK_LINKER_HWCAP.
From-SVN: r243552
Bernd Schmidt [Mon, 12 Dec 2016 13:29:48 +0000 (13:29 +0000)]
re PR rtl-optimization/78669 (ICE: in combine_and_move_insns, at ira.c:3665 with -Os -fno-tree-ter -mavx512bw)
PR rtl-optimization/78669
* ira.c (combine_and_move_insns): When deleting an insn, clear the
replace flag for all used regs in that insn.
PR rtl-optimization/78669
* gcc.target/i386/pr78669.c: New test.
From-SVN: r243551
Jonathan Wakely [Mon, 12 Dec 2016 12:44:46 +0000 (12:44 +0000)]
Remove stray character at end of dg-do directive
* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
Remove stray character at end of dg-do directive.
From-SVN: r243548
George Spelvin [Mon, 12 Dec 2016 11:57:33 +0000 (11:57 +0000)]
lib1funcs.S (__ashrdi3): Fix typo from r243545.
libgcc/
* config/avr/lib1funcs.S (__ashrdi3): Fix typo from r243545.
From-SVN: r243546
George Spelvin [Mon, 12 Dec 2016 11:25:51 +0000 (11:25 +0000)]
lib1funcs.S (__ashldi3): Use __tmp_reg__ to restore R16 instead of push + pop.
libgcc/
2016-12-12 George Spelvin <linux@sciencehorizons.net>
* config/avr/lib1funcs.S (__ashldi3): Use __tmp_reg__ to restore
R16 instead of push + pop.
(__ashrdi3, __lshrdi3): Same. And use __zero_reg__ for signs.
From-SVN: r243545
Rainer Orth [Mon, 12 Dec 2016 11:12:17 +0000 (11:12 +0000)]
Fix g++.dg/debug/dwarf2/typedef1.C
* g++.dg/debug/dwarf2/typedef1.C: Adjust pattern for last change.
From-SVN: r243544
Toma Tabacu [Mon, 12 Dec 2016 10:12:26 +0000 (10:12 +0000)]
MIPS: Upgrade to R2 for -mnan=2008 and -mabs=2008.
gcc/testsuite/
* gcc.target/mips/mips.exp (mips-dg-options): Upgrade to R2 for
-mnan=2008 and -mabs=2008.
From-SVN: r243542
Thomas Preud'homme [Mon, 12 Dec 2016 09:39:51 +0000 (09:39 +0000)]
Define arm_arch_core_flags in a single file
2016-12-12 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* config/arm/arm-opts.h: Move struct arm_arch_core_flag and
arm_arch_core_flags to ...
* common/config/arm/arm-common.c: There.
From-SVN: r243541
Eric Botcazou [Mon, 12 Dec 2016 07:56:39 +0000 (07:56 +0000)]
constraints.md (T): Use special memory constraint.
* config/sparc/constraints.md (T): Use special memory constraint.
(U): Minor tweak.
(W): Add TARGET_ARCH64 test.
* config/sparc/sparc.md (*movdi_insn_sp32): Replace 'W' with 'T'.
(*movdf_insn_sp32): Likewise.
(*mov<VM64:mode>_insn_sp32): Likewise. Replace 'e' with 'f' in
conjunction with offsettable memory references.
From-SVN: r243540
John David Anglin [Mon, 12 Dec 2016 02:54:28 +0000 (02:54 +0000)]
invoke.texi: Correct capitalization of OpenMP.
* doc/invoke.texi: Correct capitalization of OpenMP.
From-SVN: r243539
Sandra Loosemore [Mon, 12 Dec 2016 01:06:30 +0000 (20:06 -0500)]
nios2.c (nios2_emit_move_sequence): Call copy_rtx to avoid shared structure error.
2016-12-11 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* config/nios2/nios2.c (nios2_emit_move_sequence): Call copy_rtx
to avoid shared structure error.
From-SVN: r243538
GCC Administrator [Mon, 12 Dec 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r243537
Bill Schmidt [Sun, 11 Dec 2016 23:37:17 +0000 (23:37 +0000)]
re PR target/78695 (ICE (segfault) on powerpc64le-linux-gnu)
[gcc]
2016-12-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/78695
* config/rs6000/rs6000.c (find_alignment_op): Discard from
consideration any artificial definition.
[gcc/testsuite]
2016-12-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/78695
* gcc.target/powerpc/swaps-stack-protector.c: New test.
From-SVN: r243534
Iain Sandoe [Sun, 11 Dec 2016 19:37:05 +0000 (19:37 +0000)]
[Darwin, configury] No longer expect to find cross-target headers on the host.
Earlier Darwin (esp. Darwin8 and Darwin9) had FAT libraries and suitable header
installations in /usr/include such that one could build a cross-toolchain
(including cross-arch) using a common sysroot (including / for “current” version).
However this is no longer true on a number of levels. A vanilla Darwin system has
no headers installed in /usr and it's certainly not appropriate to try and find
headers/libs for (say) x86-64-darwinNN X powerpc-darwin in /usr on any Darwin NN > 10
(even Darwin10 is incomplete in that it omits the ppc64 multilib). In the latter
example, the catch-all in the current configury to mean that
"foo-darwin" == “foo-version-on-this-system” breaks the cross case
—target=powerpc-apple-darwin —host=some-system-later-than-darwin10.
gcc/
2016-12-11 Iain Sandoe <iain@codesourcery.com>
* configure.ac (CROSS directory tests): Remove the assumption that
Darwin hosts contain suitable target sysroots in "/".
* configure: Regenerate.
From-SVN: r243533
Iain Sandoe [Sun, 11 Dec 2016 19:24:46 +0000 (19:24 +0000)]
[Darwin, PPC] Fix PR71496 by marking pic base loads as non-copyable.
The Darwin pic base loads (and reloads for non-local-gotos) are not
validly copied (since the pic base label would be duplicated). Thus,
mark the pic base {re-}loads as non-copyable.
gcc/
2016-12-11 Iain Sandoe <iain@codesourcery.com>
PR rtl-optimization/71496
* config/rs6000/darwin.md (load_macho_picbase_si): Mark as non-
copyable. (load_macho_picbase_di, reload_macho_picbase_si,
reload_macho_picbase_di): Likewise.
From-SVN: r243532
John David Anglin [Sun, 11 Dec 2016 19:08:47 +0000 (19:08 +0000)]
pa.c (pa_callee_copies): New function.
* config/pa/pa.c (pa_callee_copies): New function.
* config/pa/pa.opt (mcaller-copies): New option.
* doc/invoke.texi (mcaller-copies): Document option.
From-SVN: r243531
Uros Bizjak [Sun, 11 Dec 2016 18:59:07 +0000 (19:59 +0100)]
re PR target/70799 (STV pass does not convert DImode shifts)
PR target/70799
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
<case ASHIFT, case LSHIFTRT>: Consider all constant shifts.
Add FIXME comment.
(dimode_scalar_chain::compute_convert_gain): Reduce gain for
constant shifts larger or equal than 32.
testsuite/ChangeLog:
PR target/70799
* gcc.target/i386/pr70799-3.c: New test.
From-SVN: r243530
Paolo Carlini [Sun, 11 Dec 2016 18:15:31 +0000 (18:15 +0000)]
re PR c++/78637 (ICE on invalid C++ code on x86_64-linux-gnu (internal compiler error: in pop_namespace, at cp/name-lookup.c:3826))
/cp
2016-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78637
* parser.c (cp_parser_namespace_definition): Increment
nested_definition_count only if push_namespace succeeds.
/testsuite
2016-12-11 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78637
* g++.dg/parse/namespace14.C: New.
From-SVN: r243529
Roger Pau Monné [Sun, 11 Dec 2016 17:28:53 +0000 (17:28 +0000)]
x86-64.h: Append --32 to the assembler options when -m16 is used on non-glibc systems as well.
* config/i386/x86-64.h: Append --32 to the assembler options when
-m16 is used on non-glibc systems as well.
From-SVN: r243528
Allan Sandfeld Jensen [Sun, 11 Dec 2016 16:27:08 +0000 (22:27 +0600)]
re PR target/70118 (UBSan claims misaligned access in SSE instrinsics)
PR target/70118
* config/i386/mmintrin.h (__m64_u): New type
* config/i386/emmintrin.h (_mm_loadl_epi64, _mm_storel_epi64):
Make the allowed unaligned memory access explicit.
From-SVN: r243527
GCC Administrator [Sun, 11 Dec 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r243523
Thomas Koenig [Sat, 10 Dec 2016 22:28:32 +0000 (22:28 +0000)]
re PR fortran/78226 (Fill out location information everywhere)
2016-12-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/78226
* error.c (gfc_warning_internal): New function.
* frontend-passes.c (gfc_run_passes): Call check_locus if
CHECKING_P is defined.
(check_locus_code): New function.
(check_locus_expr): New function.
(check_locus): New function.
* gfortran.h: Add prototype for gfc_warning_internal.
From-SVN: r243520
Krister Walfridsson [Sat, 10 Dec 2016 21:07:10 +0000 (21:07 +0000)]
config.gcc (i386-*-netbsd*): Make i486 the default arch on NetBSD.
2016-12-10 Krister Walfridsson <krister.walfridsson@gmail.com>
* config.gcc (i386-*-netbsd*): Make i486 the default arch on NetBSD.
Generally use cpu generic.
From-SVN: r243519
Krister Walfridsson [Sat, 10 Dec 2016 20:59:52 +0000 (20:59 +0000)]
config.host (i[34567]86-*-netbsdelf*): Add i386/t-crtstuff to tmake_file.
2016-12-10 Krister Walfridsson <krister.walfridsson@gmail.com>
* config.host (i[34567]86-*-netbsdelf*): Add i386/t-crtstuff to
tmake_file.
From-SVN: r243518
Paul Thomas [Sat, 10 Dec 2016 18:35:47 +0000 (18:35 +0000)]
re PR fortran/78350 (ICE in gfc_code2string(): Bad code, at fortran/misc.c:193)
2016-12-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/78350
* resolve.c (resolve_structure_cons): Remove the block that
tried to remove a charlen and rely on namespace cleanup.
From-SVN: r243517
Jakub Jelinek [Sat, 10 Dec 2016 12:06:12 +0000 (13:06 +0100)]
re PR tree-optimization/78720 (Illegal instruction in generated code)
PR tree-optimization/78720
* match.pd (A < 0 ? C : 0): Only optimize for signed A. If shift
is negative, sign extend to @1's type and than AND with C.
* gcc.c-torture/execute/pr78720.c: New test.
Co-Authored-By: Marc Glisse <marc.glisse@inria.fr>
From-SVN: r243516
Jakub Jelinek [Sat, 10 Dec 2016 08:02:21 +0000 (09:02 +0100)]
re PR fortran/78758 (Warning: '__builtin_memcpy' ... overflows the destination for string assignment)
PR fortran/78758
* tree-object-size.c (compute_object_offset) <case ARRAY_REF>: Handle
non-zero low bound or non-standard element sizes.
* gfortran.dg/pr78758.f90: New test.
* gfortran.dg/pr38868.f: Remove again bogus warning.
From-SVN: r243515
Jakub Jelinek [Sat, 10 Dec 2016 08:01:17 +0000 (09:01 +0100)]
re PR sanitizer/78708 ([ASAN][LTO] ICE in expand_ASAN_MARK, at internal-fn.c:380 - when compiling but not linking with ASAN)
PR sanitizer/78708
* lto-streamer-in.c (input_function): In addition to debug stmts
without -g, remove IFN_*SAN_* calls if corresponding flag_sanitize
bit is not enabled.
From-SVN: r243514
GCC Administrator [Sat, 10 Dec 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r243513
Paul Thomas [Fri, 9 Dec 2016 22:25:26 +0000 (22:25 +0000)]
re PR fortran/77903 ([F08] gfortran 6.1.0/7.0.0 accept invalid code with conflicting module/submodule interfaces)
2016-12-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77903
* decl.c (get_proc_name): Use the symbol tlink field instead of
the typespec interface field.
(gfc_match_function_decl, gfc_match_submod_proc): Ditto.
* gfortran.h : Since the symbol tlink field is no longer used
by the frontend for change management, change the comment to
reflect its current uses.
* parse.c (get_modproc_result): Same as decl.c changes.
* resolve.c (resolve_fl_procedure): Ditto.
2016-12-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77903
* gfortran.dg/submodule_20.f08: New test.
From-SVN: r243507
Bill Schmidt [Fri, 9 Dec 2016 22:02:04 +0000 (22:02 +0000)]
re PR testsuite/78740 (test case powerpc/pr78691-ppc.c fails starting with its introduction in r243335)
2016-12-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR testsuite/78740
* gcc.target/powerpc/pr78691-ppc.c: Remove -m32.
From-SVN: r243506
Bill Schmidt [Fri, 9 Dec 2016 19:56:02 +0000 (19:56 +0000)]
rs6000-passes.def: New file.
2016-12-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000-passes.def: New file.
* config/rs6000/rs6000-protos.h: Declare make_pass_analyze_swaps.
* config/rs6000/rs6000.c (rs6000_option_override): Remove
registration of machine-specific passes.
(pass_analyze_swaps::clone): New function.
* config/rs6000/t-rs6000: Define PASSES_EXTRA.
From-SVN: r243504
Bill Schmidt [Fri, 9 Dec 2016 19:54:11 +0000 (19:54 +0000)]
fold-vec-add-7.c: Require effective target to support __int128.
2016-12-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/fold-vec-add-7.c: Require effective target to
support __int128.
From-SVN: r243503
Martin Sebor [Fri, 9 Dec 2016 19:51:43 +0000 (12:51 -0700)]
Add missing part of entry.
From-SVN: r243502
Kugan Vivekanandarajah [Fri, 9 Dec 2016 19:47:10 +0000 (19:47 +0000)]
re PR tree-optimization/78721 (ICE on valid code at -O2 and -O3 on x86_64-linux-gnu: in set_value_range, at tree-vrp.c:371)
gcc/testsuite/ChangeLog:
2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org>
PR ipa/78721
* gcc.dg/pr78721.c: New test.
gcc/ChangeLog:
2016-12-09 Kugan Vivekanandarajah <kuganv@linaro.org>
PR ipa/78721
* ipa-cp.c (propagate_vr_accross_jump_function): drop_tree_overflow
after fold_convert.
From-SVN: r243501
Jakub Jelinek [Fri, 9 Dec 2016 19:35:18 +0000 (20:35 +0100)]
re PR target/72742 (ICE in extract_insn, at recog.c:2309 (error: unrecognizable insn) w/ -Os -mlra)
PR target/72742
* config/rs6000/rs6000.md (*and<mode>3_imm_mask_dot,
*and<mode>3_imm_mask_dot2): Add rs6000_is_valid_and_mask to insn
condition.
* gcc.c-torture/compile/pr72742.c: New test.
From-SVN: r243500
Segher Boessenkool [Fri, 9 Dec 2016 19:31:06 +0000 (20:31 +0100)]
rs6000: clz/ctz/ffs improvement (PR78683)
On CPUs that implement popcnt[wd] but not cnttz[wd] we can do better for
the ctz sequences than we do today.
CL[TZ]_DEFINED_VALUE_AT_ZERO can return 2, since we always return the
same fixed value (only dependent on TARGET_* options).
PR target/78683
* config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Use
GET_MODE_BITSIZE. Return 2.
(CTZ_DEFINED_VALUE_AT_ZERO): Use GET_MODE_BITSIZE. Return 2. Handle
TARGET_POPCNTD the same as TARGET_CTZ.
* config/rs6000/rs6000.md (ctz<mode>2): Reimplement.
(ffs<mode>2): Reimplement.
From-SVN: r243499
Marek Polacek [Fri, 9 Dec 2016 19:05:28 +0000 (19:05 +0000)]
re PR middle-end/78750 (ICE in get_range_info, at tree-ssanames.c:375)
PR middle-end/78750
* builtins.c (check_sizes): Use POINTER_TYPE_P.
* g++.dg/torture/pr78750.C: New.
From-SVN: r243498
Martin Sebor [Fri, 9 Dec 2016 17:38:17 +0000 (17:38 +0000)]
gcc/testsuite/ChangeLog:
on arm-unknown-linux-gnueabi (and likely other ILP32) targets.
From-SVN: r243497
Andre Vieira [Fri, 9 Dec 2016 16:46:42 +0000 (16:46 +0000)]
PR78255: Make postreload aware of NO_FUNCTION_CSE
gcc/ChangeLog:
2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR rtl-optimization/78255
* gcc/postreload.c (reload_cse_simplify): Do not CSE a function if
NO_FUNCTION_CSE is true.
gcc/testsuite/ChangeLog:
2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR rtl-optimization/78255
* gcc.target/aarch64/pr78255.c: New.
* gcc.target/arm/pr78255-1.c: New.
* gcc.target/arm/pr78255-2.c: New.
From-SVN: r243494