gcc.git
5 years agoFix low reg issue in Thumb-2 movsi patterns
Wilco Dijkstra [Thu, 25 Jul 2019 14:24:41 +0000 (14:24 +0000)]
Fix low reg issue in Thumb-2 movsi patterns

The Thumb-2 movsi patterns try to prefer low registers for loads and stores.
However this is done incorrectly by using 2 separate variants with 'l' and 'h'
register classes.  The register allocator will only use low registers, and
as a result we end up with significantly more spills and moves to high
registers.  Fix this by merging the alternatives and use 'l*r' to indicate
preference for low registers.  This saves ~400 instructions from the pr77308
testcase.

    gcc/
* config/arm/thumb2.md (thumb2_movsi_insn): Fix load/store low reg.
* config/arm/vfp.md (thumb2_movsi_vfp): Likewise.

From-SVN: r273802

5 years ago* ipa-devirt.c (add_type_duplicate): Fix return value.
Jan Hubicka [Thu, 25 Jul 2019 13:42:25 +0000 (15:42 +0200)]
* ipa-devirt.c (add_type_duplicate): Fix return value.

From-SVN: r273800

5 years agotree-vrp.c (extract_range_from_multiplicative_op): Add type parameter and use it...
Richard Biener [Thu, 25 Jul 2019 12:05:19 +0000 (12:05 +0000)]
tree-vrp.c (extract_range_from_multiplicative_op): Add type parameter and use it instead of guessing expression type from the...

2019-07-25  Richard Biener  <rguenther@suse.de>

* tree-vrp.c (extract_range_from_multiplicative_op): Add
type parameter and use it instead of guessing expression
type from the first operand.
(extract_range_from_binary_expr): Pass expr_type down.

From-SVN: r273797

5 years ago[arm][committed] Clean up code iterator usage in satsi* patterns
Kyrylo Tkachov [Thu, 25 Jul 2019 11:04:21 +0000 (11:04 +0000)]
[arm][committed] Clean up code iterator usage in satsi* patterns

GCC 10 now supports having RTL codes being code attributes (thanks
Richard) allowing us to map smax to smin and vice versa.
This means we can clean up their use in the saturation patterns that do
the cross product of [smin, smax] and use the pattern
predicate to cancel out the nonsense ones.

* config/arm/arm.md (SATrev): Change to code attribute.
(*satsi_<SAT:code>): Adjust for the above.
(*satsi_<SAT:code>_shift): Likewise.

From-SVN: r273796

5 years agogimple-loop-versioning.cc (loop_versioning::prune_loop_conditions): Make value_range...
Richard Biener [Thu, 25 Jul 2019 10:25:13 +0000 (10:25 +0000)]
gimple-loop-versioning.cc (loop_versioning::prune_loop_conditions): Make value_range * temporary const.

2019-07-25  Richard Biener  <rguenther@suse.de>

* gimple-loop-versioning.cc (loop_versioning::prune_loop_conditions):
Make value_range * temporary const.
* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
Likewise.
(evrp_range_analyzer::record_ranges_from_): Likewise.
(evrp_range_analyzer::pop_value_range): Return a const value_range *,
deal with having recorded a const one.
* gimple-ssa-evrp-analyze.h (evrp_range_analyzer::get_value_range):
Return a const value_range *.
(evrp_range_analyzer::pop_value_range): Likewise.
(evrp_range_analyzer::stack): Record const value_range *s.
* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children):
Adjust.
* gimple-ssa-sprintf.c (get_int_range): Likewise.
(format_integer): Likewise.
(sprintf_dom_walker::handle_gimple_call): Likewise.
* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
* tree-vrp.c (vrp_prop::set_def_to_varying): Add.
(vrp_prop::get_value_range): Adjust.
(vrp_prop::vrp_initialize): Use set_def_to_varying instead of
modifying the lattice in-place.
(vrp_prop::visit_stmt): Likewise.
* vr-values.c (vr_values::get_lattice_entry): New private method.
(vr_values::get_value_range): Wrap it and return a const
value_range *.
(vr_values::set_def_to_varying): New.
(vr_values::set_defs_to_varying): Use it.
(vr_values::update_value_range): Likewise.
(vr_values::vrp_stmt_computes_nonzero): Adjust.
(values::op_with_constant_singleton_va): Likewise.
(vr_values::extract_range_for_var_from_co): Likewise.
(vr_values::extract_range_from_ssa_name): Likewise.
(vr_values::extract_range_from_cond_expr): Likewise.
(vr_values::extract_range_basic): Likewise.
(compare_ranges): Take const value_range *, adjust.
(compare_range_with_value): Likewise.
(vrp_valueize): Adjust.
(vrp_valueize_1): Likewise.
(vr_values::get_vr_for_comparison): Return a const value_range *.
(vr_values::compare_name_with_value): Adjust.
(vr_values::compare_names): Likewise.
(vr_values::vrp_evaluate_conditional_warnv_with_ops_using_ranges):
Likewise.
(vr_values::vrp_evaluate_conditional): Likewise.
(find_case_label_ranges): Take a const value_range *.
(vr_values::vrp_visit_switch_stmt): Adjust.
(vr_values::extract_range_from_phi_node): Likewise.
(vr_values::simplify_div_or_mod_using_ran): Likewise.
(vr_values::simplify_abs_using_ranges): Likewise.
(test_for_singularity): Take a const value_range *.
(range_fits_type_p): Likewise.
(vr_values::simplify_cond_using_ranges_1): Adjust.
(vr_values::simplify_cond_using_ranges_2): Likewise.
(vr_values::simplify_switch_using_ranges): Likewise.
(vr_values::simplify_float_conversion_usi): Likewise.
(vr_values::two_valued_val_range_p): Likewise.
* vr-values.h (vr_values::get_value_range): Return a const
value_range *.
(vr_values::set_def_to_varying): New.
(vr_values::get_lattice_entry): New private method.
(vr_values::get_vr_for_comparison): Return a const value_range *.

From-SVN: r273792

5 years agoExtend DCE to remove unnecessary new/delete-pairs (PR c++/23383).
Martin Liska [Thu, 25 Jul 2019 09:36:38 +0000 (11:36 +0200)]
Extend DCE to remove unnecessary new/delete-pairs (PR c++/23383).

2019-07-25  Martin Liska  <mliska@suse.cz>
    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

PR c++/23383
* common.opt: Add -fallocation-dce
* gimple.c (gimple_call_operator_delete_p): New.
* gimple.h (gimple_call_operator_delete_p): Likewise.
* tree-core.h (enum function_decl_type): Add OPERATOR_DELETE.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle
DECL_IS_OPERATOR_DELETE_P.
(mark_all_reaching_defs_necessary_1): Likewise.
(propagate_necessity): Likewise.
(eliminate_unnecessary_stmts): Handle
gimple_call_operator_delete_p.
* tree-streamer-in.c (unpack_ts_function_decl_value_fields):
Add packing of OPERATOR_DELETE.
* tree-streamer-out.c (pack_ts_function_decl_value_fields):
Similarly here.
* tree.h (DECL_IS_OPERATOR_DELETE_P): New.
(DECL_SET_IS_OPERATOR_DELETE): New.
(DECL_IS_REPLACEABLE_OPERATOR_NEW_P): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>
    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

PR c++/23383
* c-decl.c (merge_decls): Merge OPERATOR_DELETE flag.
2019-07-25  Martin Liska  <mliska@suse.cz>
    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

PR c++/23383
* decl.c (cxx_init_decl_processing): Mark delete operators
with DECL_SET_IS_OPERATOR_DELETE.
2019-07-25  Martin Liska  <mliska@suse.cz
    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

PR c++/23383
* g++.dg/cpp1y/new1.C: New test.
2019-07-25  Martin Liska  <mliska@suse.cz>
    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

PR c++/23383
* testsuite/ext/bitmap_allocator/check_delete.cc: Add
-fno-allocation-dce.
* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
* testsuite/ext/new_allocator/check_delete.cc: Likewise.
* testsuite/ext/new_allocator/check_new.cc: Likewise.

Co-Authored-By: Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
From-SVN: r273791

5 years agoCome up with function_decl_type and use it in tree_function_decl.
Martin Liska [Thu, 25 Jul 2019 09:36:19 +0000 (11:36 +0200)]
Come up with function_decl_type and use it in tree_function_decl.

2019-07-25  Martin Liska  <mliska@suse.cz>

* calls.c (maybe_warn_alloc_args_overflow): Use new macros
(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
* coverage.c (coverage_begin_function): Likewise.
* fold-const.c (tree_expr_nonzero_warnv_p): Likewise.
* gimple.c (gimple_call_nonnull_result_p): Likewise.
* ipa-icf.c (sem_item::compare_referenced_symbol_properties): Likewise.
(sem_item::hash_referenced_symbol_properties): Likewise.
* lto-streamer-out.c (hash_tree): Likewise.
* predict.c (expr_expected_value_1): Likewise.
* tree-inline.c (expand_call_inline): Likewise.
* tree-streamer-in.c (unpack_ts_function_decl_value_fields): Likewise.
* tree-streamer-out.c (pack_ts_function_decl_value_fields): Likewise.
* tree-core.h (enum function_decl_type): New enum.
(struct tree_function_decl): Remove operator_new_flag and lambda_function.
* tree.h (FUNCTION_DECL_DECL_TYPE): New.
(set_function_decl_type): Likewise.
(DECL_IS_OPERATOR_NEW_P): New.
(DECL_SET_IS_OPERATOR_NEW): Likewise.
(DECL_LAMBDA_FUNCTION): Likewise.
(DECL_LAMBDA_FUNCTION_P): Likewise.
(DECL_IS_OPERATOR_NEW): Remove.
(DECL_SET_LAMBDA_FUNCTION): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>

* c-decl.c (merge_decls): Use new macros
(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
2019-07-25  Martin Liska  <mliska@suse.cz>

* decl.c (duplicate_decls): Use new macros
(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
(cxx_init_decl_processing): Likewise.
(grok_op_properties): Likewise.
* parser.c (cp_parser_lambda_declarator_opt): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>

* lto-common.c (compare_tree_sccs_1): Use new macros
(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).

From-SVN: r273790

5 years agoGeneralize get_most_common_single_value to return n_th value & count
Xiong Hu Luo [Thu, 25 Jul 2019 09:20:13 +0000 (09:20 +0000)]
Generalize get_most_common_single_value to return n_th value & count

Currently get_most_common_single_value could only return the max hist
<value, count>, add sort after reading from disk, then it return nth value
in later use.  Rename it to get_nth_most_common_value.

gcc/ChangeLog:

2019-07-15  Xiong Hu Luo  <luoxhu@linux.ibm.com>

* ipa-profile.c (get_most_common_single_value): Use
get_nth_most_common_value.
* profile.c (sort_hist_value): New function.
(compute_value_histograms): Call sort_hist_value to sort the
values after loading from disk.
* value-prof.c (get_most_common_single_value): Rename to ...
get_nth_most_common_value.  Add input params n, return
the n_th value and count.
(gimple_divmod_fixed_value_transform): Use
get_nth_most_common_value.
(gimple_ic_transform): Likewise.
(gimple_stringops_transform): Likewise.
* value-prof.h (get_most_common_single_value): Add input params
n, default to 0.

From-SVN: r273789

5 years agore PR testsuite/91245 (gnat.dg/float_value1.adb FAILs)
Eric Botcazou [Thu, 25 Jul 2019 08:01:20 +0000 (08:01 +0000)]
re PR testsuite/91245 (gnat.dg/float_value1.adb FAILs)

PR testsuite/91245
* gnat.dg/float_value1.adb: Only run on x86.

From-SVN: r273788

5 years agore PR tree-optimization/91236 (ICE in walk_non_aliased_vuses at gcc/tree-ssa-alias...
Richard Biener [Thu, 25 Jul 2019 06:57:46 +0000 (06:57 +0000)]
re PR tree-optimization/91236 (ICE in walk_non_aliased_vuses at gcc/tree-ssa-alias.c:3395 on aarch64)

2019-07-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91236
* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
size of CONSTRUCTOR write.  Fix buffer size we pass to
native_encode_expr.

From-SVN: r273787

5 years agoPR tree-optimization/91183 - strlen of a strcpy result with a conditional source...
Martin Sebor [Thu, 25 Jul 2019 00:29:17 +0000 (00:29 +0000)]
PR tree-optimization/91183 - strlen of a strcpy result with a conditional source not folded

PR tree-optimization/91183 - strlen of a strcpy result with a conditional source not folded
PR tree-optimization/86688 - missing -Wstringop-overflow using a non-string local array in strnlen with excessive bound

gcc/ChangeLog:

PR tree-optimization/91183
PR tree-optimization/86688
* builtins.c (compute_objsize): Handle MEM_REF.
* tree-ssa-strlen.c (class ssa_name_limit_t): New.
(get_min_string_length): Remove.
(count_nonzero_bytes): New function.
(handle_char_store): Rename...
(handle_store): to this.  Handle multibyte stores via integer types.
(strlen_check_and_optimize_stmt): Adjust conditional and the called
function name.

gcc/testsuite/ChangeLog:

PR tree-optimization/91183
PR tree-optimization/86688
* gcc.dg/Wstringop-overflow-14.c: New test.
* gcc.dg/attr-nonstring-2.c: Remove xfails.
* gcc.dg/strlenopt-70.c: New test.
* gcc.dg/strlenopt-71.c: New test.
* gcc.dg/strlenopt-72.c: New test.
* gcc.dg/strlenopt-8.c: Remove xfails.

From-SVN: r273783

5 years agoDaily bump.
GCC Administrator [Thu, 25 Jul 2019 00:16:24 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273782

5 years agoFix non-GNU style in previous commits
Jozef Lawrynowicz [Wed, 24 Jul 2019 21:37:29 +0000 (21:37 +0000)]
Fix non-GNU style in previous commits

2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config.gcc (msp430*-*-*): Fix non-GNU style in r273774.
* config/msp430/msp430.h (ENDFILE_SPEC): Fix non-GNU style in
r273773.

From-SVN: r273775

5 years agoconfig.gcc (msp430*-*-*): Enable initfini_array by default unless explicitly disabled...
Jozef Lawrynowicz [Wed, 24 Jul 2019 21:13:54 +0000 (21:13 +0000)]
config.gcc (msp430*-*-*): Enable initfini_array by default unless explicitly disabled with...

2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config.gcc (msp430*-*-*): Enable initfini_array by default unless
explicitly disabled with --disable-initfini-array.

From-SVN: r273774

5 years agomsp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in if-exists.
Jozef Lawrynowicz [Wed, 24 Jul 2019 21:08:34 +0000 (21:08 +0000)]
msp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in if-exists.

2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/msp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in
if-exists.

From-SVN: r273773

5 years agoPR driver/80545 - option -Wstringop-overflow not recognized by Fortran
Martin Sebor [Wed, 24 Jul 2019 20:34:03 +0000 (20:34 +0000)]
PR driver/80545 - option -Wstringop-overflow not recognized by Fortran

gcc/cp/ChangeLog:

PR driver/80545
* decl.c (finish_function): Use lang_mask.

gcc/testsuite/ChangeLog:

PR driver/80545
* gcc.misc-tests/help.exp: Add tests.
* lib/options.exp: Handle C++.

gcc/ChangeLog:

PR driver/80545
* diagnostic.c (diagnostic_classify_diagnostic): Use lang_mask.
(diagnostic_report_diagnostic): Same.
* diagnostic.h (diagnostic_context::option_enabled): Add an argument.
(diagnostic_context::lang_mask): New data member.
* ipa-pure-const.c (suggest_attribute): Use
lang_hooks.option_lang_mask ().
* opts-common.c (option_enabled): Handle new argument.
(get_option_state): Pass an additional argument.
* opts.c (print_filtered_help): Print supported languages for
unsupported options.  Adjust printing of current state.
* opts.h (option_enabled): Add argument.
* toplev.c (print_switch_values): Use lang_mask.
(general_init): Set global_dc->lang_mask.

From-SVN: r273771

5 years ago[Darwin] Partial reversion of 273749.
Iain Sandoe [Wed, 24 Jul 2019 19:59:22 +0000 (19:59 +0000)]
[Darwin] Partial reversion of 273749.

We still need to cater for pr80556, for the single-arch case.

2019-07-24  Iain Sandoe  <iain@sandoe.co.uk>

gcc/

PR bootstrap/87030
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert r273749.

From-SVN: r273768

5 years agocgraphunit.c (symbol_table::compile): Start and stop TV_CGRAPH_IPA_PASSES and TV_CGRA...
Giuliano Belinassi [Wed, 24 Jul 2019 19:10:36 +0000 (19:10 +0000)]
cgraphunit.c (symbol_table::compile): Start and stop TV_CGRAPH_IPA_PASSES and TV_CGRAPH_FUNC_EXPANSION timers.

* cgraphunit.c (symbol_table::compile): Start and stop
TV_CGRAPH_IPA_PASSES and TV_CGRAPH_FUNC_EXPANSION timers.
* timevar.def (TV_CGRAPH_IPA_PASSES, TV_CGRAPH_FUNC_EXPANSION): New.

From-SVN: r273767

5 years agogimplify.c (flag_instrument_functions_exclude_p): Include namespace/class information...
Oliver Browne [Wed, 24 Jul 2019 18:08:51 +0000 (18:08 +0000)]
gimplify.c (flag_instrument_functions_exclude_p): Include namespace/class information in the printable name.

* gimplify.c (flag_instrument_functions_exclude_p): Include
namespace/class information in the printable name.
* opts.c (add_comma_separated_to_vector): Add NUL terminator
to tokens entered into the vector.

From-SVN: r273766

5 years agotree-nested.c (build_simple_mem_ref_notrap): New function.
Eric Botcazou [Wed, 24 Jul 2019 15:29:34 +0000 (15:29 +0000)]
tree-nested.c (build_simple_mem_ref_notrap): New function.

* tree-nested.c (build_simple_mem_ref_notrap): New function.
(get_static_chain): Call it instead of build_simple_mem_ref.
(get_frame_field): Likewise.
(get_nonlocal_debug_decl): Likewise.
(convert_nonlocal_reference_op): Likewise.

From-SVN: r273763

5 years ago[ARC] Fix and refurbish the interrupts.
Claudiu Zissulescu [Wed, 24 Jul 2019 12:21:38 +0000 (14:21 +0200)]
[ARC] Fix and refurbish the interrupts.

When entering an interrupt, not only the call save registers needs to
be place on stack but also the call clobbers one. More over, the
ARC700 return from interrupt instruction needs to be rtie, the same
like ARCv2 CPUs. While the ARC6xx family uses j.f [ilinkX]
instruction. Additionally, we need to save the state of the ZOL
machinery, namely the lp_count, lp_end and lp_start registers. For
architectures which are using extension registers (i.e., HS48) we need
to save/restore them as well.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-protos.h (arc_output_function_epilogue): Delete
declaration.
(arc_compute_frame_size): Millicode is disabled when compiling
ISR.
(arc_return_address_register): Likewise.
(arc_compute_function_type): Likewise.
(arc_compute_frame_size): Likewise.
(secondary_reload_info): Likewise.
(arc_get_unalign): Likewise.
(arc_can_use_return_insn): Declare.
* config/arc/arc.c (AUX_LP_START): Define
(AUX_LP_END): Likewise.
(arc_frame_info): Update gmask member to 64-bit datum.
(GMASK_LEN): Update.
(arc_compute_function_type): Make it static, move it forward.
(arc_must_save_register): Update, consider the extra regs.
(arc_compute_millicode_save_restore_regs): Update to use the 64
bit gmask.
(arc_compute_frame_size): Likewise.
(arc_enter_leave_p): Likewise.
(arc_save_callee_saves): Likewise.
(arc_restore_callee_saves): Likewise.
(arc_save_callee_enter): Likewise.
(arc_restore_callee_leave): Likewise.
(arc_save_callee_milli): Likewise.
(arc_restore_callee_milli): Likewise.
(arc_expand_prologue): Add new interrupt handling.
(arc_return_address_register): Make it static, move it forward.
(arc_expand_epilogue): Add new interrupt handling.
(arc_get_unalign): Delete.
(arc_epilogue_uses): Make sure we do not remove the extra
saved/restored registers when interrupt.
(arc_can_use_return_insn): New function.
(push_reg): Likewise.
(pop_reg): Likewise.
(arc_save_callee_saves): Add ZOL and FPX aux registers saving
procedures.
(arc_restore_callee_saves): Likewise, but restoring.
* config/arc/arc.md (VUNSPEC_ARC_ARC600_RTIE): Define.
(R33_REG): Likewise.
(R34_REG): Likewise.
(R35_REG): Likewise.
(R36_REG): Likewise.
(R37_REG): Likewise.
(R38_REG): Likewise.
(R39_REG): Likewise.
(R45_REG): Likewise.
(R46_REG): Likewise.
(R47_REG): Likewise.
(R48_REG): Likewise.
(R49_REG): Likewise.
(R50_REG): Likewise.
(R51_REG): Likewise.
(R52_REG): Likewise.
(R53_REG): Likewise.
(R54_REG): Likewise.
(R55_REG): Likewise.
(R56_REG): Likewise.
(R58_REG): Likewise.
(type): Add rtie attribute.
(in_call_delay_slot): Use RETURN_ADDR_REGNUM.
(movsi_insn): Accept moves to lp_count.
(rtie): Update pattern.
(simple_return): Simplify it, don't use this pattern as a return
from an interrupt.
(arc600_rtie): New pattern.
(p_return_i): Clean up.
(return): Likewise.
* config/arc/builtins.def (rtie): Only available for non ARC6xx
family CPUs.
* config/arc/predicates.md (move_src_operand): Consider lp_count
as a register.

gcc/testsuite
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/arc.exp (check_effective_target_accregs): New
predicate.
* gcc.target/arc/builtin_special.c: Update test/
* gcc.target/arc/interrupt-1.c: Likewise.
* gcc.target/arc/interrupt-10.c: New test.
* gcc.target/arc/interrupt-11.c: Likewise.
* gcc.target/arc/interrupt-12.c: Likewise.

update

From-SVN: r273761

5 years agoS/390: Add add/sub/mul overflow check patterns
Andreas Krebbel [Wed, 24 Jul 2019 11:27:56 +0000 (11:27 +0000)]
S/390: Add add/sub/mul overflow check patterns

This patch implements the addv, subv, and mulv patterns for signed
integers.

gcc/ChangeLog:

2019-07-24  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/predicates.md (addv_const_operand): New predicate.
* config/s390/s390-modes.def (CCO): New condition code mode.
* config/s390/s390.c (s390_match_ccmode_set): Handle E_CCOmode.
(s390_branch_condition_mask): Likewise.
* config/s390/s390.md ("addv<mode>4", "subv<mode>4")
("mulv<mode>4"): New expanders.
("*addv<mode>3_ccoverflow", "*addv<mode>3_ccoverflow_const")
("*subv<mode>3_ccoverflow", "*mulv<mode>3_ccoverflow"): New
pattern definitions.

gcc/testsuite/ChangeLog:

2019-07-24  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/addsub-signed-overflow-1.c: New test.
* gcc.target/s390/addsub-signed-overflow-2.c: New test.
* gcc.target/s390/mul-signed-overflow-1.c: New test.
* gcc.target/s390/mul-signed-overflow-2.c: New test.

From-SVN: r273759

5 years agore PR middle-end/91166 ([SVE] Unfolded ZIPs of constants)
Prathamesh Kulkarni [Wed, 24 Jul 2019 07:20:24 +0000 (07:20 +0000)]
re PR middle-end/91166 ([SVE] Unfolded ZIPs of constants)

2019-07-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR middle-end/91166
* match.pd (vec_perm_expr(v, v, mask) -> v): New pattern.
(define_predicates): Add entry for uniform_vector_p.
(vec_same_elem_p): New match pattern.

testsuite/
* gcc.target/aarch64/sve/pr91166.c: New test.

From-SVN: r273758

5 years agoFix off-by-one in simple-object-elf.c (PR lto/91228).
Martin Liska [Wed, 24 Jul 2019 07:00:48 +0000 (09:00 +0200)]
Fix off-by-one in simple-object-elf.c (PR lto/91228).

2019-07-24  Martin Liska  <mliska@suse.cz>

PR lto/91228
* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Find first '\0' starting from gnu_lto + 1.

From-SVN: r273757

5 years agoFixup ChangeLog entry for revision 273570.
Bin Cheng [Wed, 24 Jul 2019 01:40:59 +0000 (01:40 +0000)]
Fixup ChangeLog entry for revision 273570.

From-SVN: r273756

5 years agoDaily bump.
GCC Administrator [Wed, 24 Jul 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273753

5 years ago[Darwin] Fix PR87030 add missed commit hunks.
Iain Sandoe [Tue, 23 Jul 2019 23:20:31 +0000 (23:20 +0000)]
[Darwin] Fix PR87030 add missed commit hunks.

Messed up the commit, and missed changes to gcc/config.gcc and to the comments
in some of the headers.

2019-07-24  Iain Sandoe  <iain@sandoe.co.uk>

gcc/

PR bootstrap/87030
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here...
* config/i386/darwin32-biarch.h .. to here.
* config/i386/darwin64-biarch.h: Adjust comments.
* config/rs6000/darwin32-biarch.h: Likewise.
* config/rs6000/darwin64-biarch.h: Likewise.
* config.gcc: Missed commit from r273746
(*-*-darwin*): Don't include CPU t-darwin here.
(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
an error message if i686-darwin configuration is attempted for
Darwin >= 18.

From-SVN: r273749

5 years agore PR fortran/54072 (BOZ with -std=f2008: wrongly accepted to TRANSFER/ABS/...; two...
Steven G. Kargl [Tue, 23 Jul 2019 23:02:07 +0000 (23:02 +0000)]
re PR fortran/54072 (BOZ with -std=f2008: wrongly accepted to TRANSFER/ABS/...; two BOZ not rejected for IOR/IEOR/IAND)

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

 PR fortran/54072
 * check.c (gfc_invalid_boz): Fix comment.
 (illegal_boz_arg): New function.
 (gfc_check_transfer): Use to arguments.
 (gfc_check_storage_size): Ditto.
 (gfc_check_complex): Remove leftover comment from BOZ patch.
 * primary.c (match_boz_constant): Remove leftover comment.

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

 PR fortran/54072
 * gfortran.dg/illegal_boz_arg_1.f90: New tests.

From-SVN: r273748

5 years agoarith.c (gfc_convert_integer, [...]): Move to ...
Steven G. Kargl [Tue, 23 Jul 2019 21:43:21 +0000 (21:43 +0000)]
arith.c (gfc_convert_integer, [...]): Move to ...

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

* arith.c (gfc_convert_integer, gfc_convert_real, gfc_convert_complex):
Move to ...
* primary.c (convert_integer, convert_real, convert_complex): ... here.
Rename and make static functions.
(match_integer_constant): Use convert_integer
(match_real_constant): Use convert_real.
(match_complex_constant: Use convert_complex.
* arith.h (gfc_convert_integer, gfc_convert_real, gfc_convert_complex):
Remove prototypes.
* array.c (match_array_cons_element): A BOZ cannot be a data
statement value.  Jump to a common exit point.
* check.c (gfc_invalid_boz): New function.  Emit error or warning
for a BOZ in an invalid context.
(boz_args_check): Move to top of file to prevent need of forward
declaration.
(is_boz_constant): New function.  Check that BOZ expr is constant.
(gfc_b z2real): New function. In-place conversion of BOZ literal
constant to REAL in accordance to F2018.
(gfc_boz2int): New function. In-place conversion of BOZ literal
  onstant to INTEGER in accordance to F2018.
(gfc_check_achar, gfc_check_char, gfc_check_float): Use gfc_invalid_boz.
Convert BOZ as needed.
(gfc_check_bge_bgt_ble_blt): Enforce F2018 requirements on BGE,
BGT, BLE, and BLT intrinsic functions.
(gfc_check_cmplx): Re-organize to check kind, if present, first.
Convert BOZ real and/or imaginary parts as needed in accordance to
F2018.
(gfc_check_complex):  Use gfc_invalid_boz.  Convert BOZ as needed.
(gfc_check_dcmplx, gfc_check_dble ): Convert BOZ as needed.
(gfc_check_dshift):  Make dshift[lr] conform to F2018 standard.
 gfc_check_float (gfc_expr *a)
(gfc_check_iand_ieor_ior):  Make IAND, IEOR, and IOR conform to
F2018 standard.
(gfc_check_int): Conform to F2018 standard.
(gfc_check_intconv): Deprecate SHORT and LONG aliases for INT2 and
INT.  Simply return for a BOZ argument. See gfc_simplify_intconv.
(gfc_check_merge_bits): Make MERGE_BITS conform to Fortran 2018
standard.
(gfc_check_real): Remove incorrect comment. Check kind, if present,
first.  Simply return for a BOZ argument. See gfc_simplify_real.
(gfc_check_and): Re-do error handling for BOZ arguments.  Remove
special casing ts.type != BT_INTEGER or BT_LOGICAL.
* decl.c (match_old_style_init): Check for BOZ in old-style
initialization.  Issue error or warning depending on
-fallow-invalid-boz option.  Issue error if variable is not an
INTEGER or REAL and the value is BOZ.
* expr.c (gfc_copy_expr): Copy a BT_BOZ gfc_expr.
(gfc_check_assign): Re-do error handling for a BOZ in an assignment
statement.  Do in-place conversion of RHS based on LHS type of
INTEGER or REAL.
* gfortran.h (gfc_expr): Add a boz component.  Remove is_boz component.
(gfc_boz2int, gfc_boz2real, gfc_invalid_boz): New prototypes.
* interface.c (gfc_extend_assign): Guard against replacing an
intrinsic involving a BOZ literal constant on RHS.
* invoke.texi: Doument -fallow-invalid-boz.
* lang.opt: New option. -fallow-invalid-boz.
* libgfortran.h (bt): Elevate BOZ to a basic type.
* misc.c (gfc_basic_typename, gfc_typename): Translate BT_BOZ to BOZ.
* primary.c (convert_integer, convert_real, convert_complex): to here.
Rename and make static functions.
* primary.c(match_boz_constant): Rewrite parsing of a BOZ. Re-do
error handling.  Deprecate 'X' for hexidecimal and postfix notation.
Use -fallow-invalid-boz and gfc_invalid_boz to accept deprecated code.
* resolve.c (resolve_ordinary_assign): Rework a RHS that is a
BOZ literal constant.  Use gfc_invalid_boz to allow previous
nonstandard behavior.  Remove range checking of BOZ conversion.
* simplify.c (convert_boz): Remove function.
(simplify_cmplx): Remove conversion of BOZ constants, because
conversion is done in gfc_check_cmplx.
(gfc_simplify_float): Remove conversion of BOZ constant, because
conversion is done in gfc_check_float.
(simplify_intconv): Use gfc_boz2int to convert BOZ to INTEGER.
Remove range checking for BOZ conversion.
(gfc_simplify_real): Use k, if present, to determine kind.  Convert
BOZ to REAL.  Remove range checking for BOZ conversion.
target-memory.c (gfc_convert_boz): Rewrite to deal with convert of
a BOZ to a REAL value.

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

* gfortran.dg/achar_5.f90: Fix for new BOZ handling.
* arithmetic_overflow_1.f90: Ditto.
* gfortran.dg/boz_11.f90: Ditto.
* gfortran.dg/boz_12.f90: Ditto.
* gfortran.dg/boz_4.f90: Ditto.
* gfortran.dg/boz_5.f90: Ditto.
* gfortran.dg/boz_6.f90: Ditto.
* gfortran.dg/boz_7.f90: Ditto.
* gfortran.dg/boz_8.f90: Ditto.
* gfortran.dg/dec_structure_6.f90: Ditto.
* gfortran.dg/dec_union_1.f90: Ditto.
* gfortran.dg/dec_union_2.f90: Ditto.
* gfortran.dg/dec_union_5.f90: Ditto.
* gfortran.dg/dshift_3.f90: Ditto.
* gfortran.dg/gnu_logical_2.f90: Ditto.
* gfortran.dg/int_conv_1.f90: Ditto.
* gfortran.dg/ishft_1.f90: Ditto.
* gfortran.dg/nan_4.f90: Ditto.
* gfortran.dg/no_range_check_3.f90: Ditto.
* gfortran.dg/pr16433.f: Ditto.
* gfortran.dg/pr44491.f90: Ditto.
* gfortran.dg/pr58027.f90: Ditto.
* gfortran.dg/pr81509_2.f90: Ditto.
* gfortran.dg/unf_io_convert_1.f90: Ditto.
* gfortran.dg/unf_io_convert_2.f90: Ditto.
* gfortran.fortran-torture/execute/intrinsic_fraction_exponent.f90:
Ditto.
* gfortran.fortran-torture/execute/intrinsic_mvbits.f90: Ditto.
* gfortran.fortran-torture/execute/intrinsic_nearest.f90: Ditto.
* gfortran.fortran-torture/execute/seq_io.f90: Ditto.
* gfortran.dg/gnu_logical_1.F: Delete test.
* gfortran.dg/merge_bits_3.f90: New test.
* gfortran.dg/merge_bits_3.f90: Ditto.
* gfortran.dg/boz_int.f90: Ditto.
* gfortran.dg/boz_bge.f90: Ditto.
* gfortran.dg/boz_complex_1.f90: Ditto.
* gfortran.dg/boz_complex_2.f90: Ditto.
* gfortran.dg/boz_complex_3.f90: Ditto.
* gfortran.dg/boz_dble.f90: Ditto.
* gfortran.dg/boz_dshift_1.f90: Ditto.
* gfortran.dg/boz_dshift_2.f90: Ditto.
* gfortran.dg/boz_float_1.f90: Ditto.
* gfortran.dg/boz_float_2.f90: Ditto.
* gfortran.dg/boz_float_3.f90: Ditto.
* gfortran.dg/boz_iand_1.f90: Ditto.
* gfortran.dg/boz_iand_2.f90: Ditto.

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

* testsuite/libgomp.fortran/reduction4.f90: Update BOZ usage
* testsuite/libgomp.fortran/reduction5.f90: Ditto.

From-SVN: r273747

5 years ago[Darwin] Fix PR87030 and tidy config fragments.
Iain Sandoe [Tue, 23 Jul 2019 20:31:26 +0000 (20:31 +0000)]
[Darwin] Fix PR87030 and tidy config fragments.

This is about 32/64b host and multilib support across the range of Darwin
systems.

Prior to Darwin8 (OS X 10.4), the toolchains support only PowerPC and only 32b.

On Darwin8 it is possible to target a 64b multilib, but with support limited
to a few of the main libraries on the system (not a recommended configuration).

From Darwin9 to Darwin17 (OSX 10.5 to 10.13) it is possible to have either
32 or 64b hosted toolchains, with support for a 64 or 32b multilib respectively.

On Darwin9 the kernel is 32b, but with support for 64b executables, so it's
conventional to build a 32b host toolchain supporting a 64b multilib.  However
this is not enforced (merely a convention).

There is also some platform hardware supporting Darwin10/11 which is only 32b
and for which the same situation applies.  However, from Darwin10 to Darwin17,
the majority of platform hardware supports a 64b kernel and it's conventional
to build a 64b host toolchain with support for a 32b multilib.

On/from Darwin18 (OS X 10.14), the development headers (in the SDK) no longer
expose the interfaces for the 32b multilib support (although sufficient runtime
support remains installed that the testsuite can be run for a 32b multilib).

The PR is raised against this latter situation since the absence of exposed
interfaces causes a 'default' bootstrap fail regardless of the availability of
the runtimes.  Given the number of permutations, I felt it warranted a general
solution, especially since the current scheme of target headers and t-make
fragments has become somewhat messy.

The changes here enforce the single 32b PowerPC multilib for Darwin < 8 and the
single X86 64b multilib for Darwin >= 18.  This means that there is no longer
any need to configure Darwin18+ '--disable-multilib', but also that if you want
to use the ability to continue to test the compiler's 32b multilib there, you
need to make a configuration targeting an earlier OS version (and using the
SDK from that).

gcc/

PR bootstrap/87030
* config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
an error message if i686-darwin configuration is attempted for
Darwin >= 18.
(x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
(powerpc-*-darwin*): Use biarch files where needed.
(powerpc64-*-darwin*): Likewise.
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
arch case.
* config/i386/darwin32-biarch.h: New.
* config/i386/darwin64.h: Rename.
* gcc/config/i386/darwin64-biarch.h: To this.
* config/i386/t-darwin: Rename.
* gcc/config/i386/t-darwin32-biarch: To this.
* config/i386/t-darwin64: Rename.
* gcc/config/i386/t-darwin64-biarch: To this.
* config/rs6000/darwin32-biarch.h: New.
* config/rs6000/darwin64.h: Rename.
* config/rs6000/darwin64-biarch.h: To this.
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
arch case.
* config/rs6000/t-darwin8: Rename.
* config/rs6000/t-darwin32-biarch: To this.
* config/rs6000/t-darwin64 Rename.
* config/rs6000/t-darwin64-biarch: To this.

From-SVN: r273746

5 years agoAdd PR markers to recent DSE changes. And...
Jeff Law [Tue, 23 Jul 2019 20:05:48 +0000 (14:05 -0600)]
Add PR markers to recent DSE changes.  And...

PR tree-optimization/86061
* gcc.dg/tree-ssa/pr86061.c: New test.

From-SVN: r273745

5 years agocompiler: use correct value type in 2-case select send
Ian Lance Taylor [Tue, 23 Jul 2019 17:20:36 +0000 (17:20 +0000)]
compiler: use correct value type in 2-case select send

    In the channel-send case, the value to be sent may needs an
    (implicit) type conversion to the channel element type. This CL
    ensures that we use the correct value type for the send.

    Fixes golang/go#33235.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/187177

From-SVN: r273743

5 years agoconfigure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.
Martin Sebor [Tue, 23 Jul 2019 17:03:13 +0000 (17:03 +0000)]
configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.

gcc/ChangeLog:
* configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.

From-SVN: r273742

5 years agogdbinit.in: add reload-gdbhooks (rh) command
Vladislav Ivanishin [Tue, 23 Jul 2019 14:05:14 +0000 (14:05 +0000)]
gdbinit.in: add reload-gdbhooks (rh) command

gcc/ChangeLog:

2019-07-23  Vladislav Ivanishin <vlad@ispras.ru>

* gdbinit.in (reload-gdbhooks): New command with an attached doc string.
(rh): New alias for it.

From-SVN: r273738

5 years agomake gdbhooks.py idempotent with respect to reloading
Vladislav Ivanishin [Tue, 23 Jul 2019 13:57:43 +0000 (13:57 +0000)]
make gdbhooks.py idempotent with respect to reloading

gcc/ChangeLog:

2019-07-23  Vladislav Ivanishin <vlad@ispras.ru>

* gdbhooks.py: Pass replace=True to
gdb.printing.register_pretty_printer.

From-SVN: r273737

5 years agore PR debug/91231 (ICE in dwarf2out_inline_entry, at dwarf2out.c:27642)
Richard Biener [Tue, 23 Jul 2019 10:45:59 +0000 (10:45 +0000)]
re PR debug/91231 (ICE in dwarf2out_inline_entry, at dwarf2out.c:27642)

2019-07-23  Richard Biener  <rguenther@suse.de>

PR debug/91231
* lto-streamer-in.c (input_function): Drop inline-entry markers
that ended up with an unknown location block.

From-SVN: r273733

5 years agore PR tree-optimization/83518 (Missing optimization: useless instructions should...
Richard Biener [Tue, 23 Jul 2019 10:00:24 +0000 (10:00 +0000)]
re PR tree-optimization/83518 (Missing optimization: useless instructions should be dropped)

2019-07-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83518
* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle aggregate
init from a constant even when partial defs are already recorded.

c/
* gimple-parser.c (c_parser_parse_gimple_body): When we have
a CFG also rebuild cgraph edges.

* gcc.dg/tree-ssa/ssa-fre-79.c: New testcase.

From-SVN: r273732

5 years agoi386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.
Jan Hubicka [Tue, 23 Jul 2019 09:38:49 +0000 (11:38 +0200)]
i386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.

* i386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.
* config/i386/znver1.md: Enable patterns for znver2 and add store
variants which use extra AGU unit.

From-SVN: r273731

5 years agoi386-options.c (ix86_option_override_internal): Default PARAM_AVOID_FMA_MAX_BITS...
Jan Hubicka [Tue, 23 Jul 2019 09:35:18 +0000 (09:35 +0000)]
i386-options.c (ix86_option_override_internal): Default PARAM_AVOID_FMA_MAX_BITS to 256 for znver2.

* config/i386/i386-options.c (ix86_option_override_internal): Default
PARAM_AVOID_FMA_MAX_BITS to 256 for znver2.

From-SVN: r273730

5 years ago* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Set of ZNVER2.
Jan Hubicka [Tue, 23 Jul 2019 09:32:44 +0000 (11:32 +0200)]
* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Set of ZNVER2.

From-SVN: r273729

5 years agox86-tune-costs.h (znver2_memcpy): Update.
Jan Hubicka [Tue, 23 Jul 2019 09:27:11 +0000 (11:27 +0200)]
x86-tune-costs.h (znver2_memcpy): Update.

* config/i386/x86-tune-costs.h (znver2_memcpy): Update.
(znver2_costs): Update 256 bit SSE costs and multiplication.

From-SVN: r273728

5 years ago[Ada] Aspect CPU may depend on a discriminant of a task type
Ed Schonberg [Tue, 23 Jul 2019 08:13:41 +0000 (08:13 +0000)]
[Ada] Aspect CPU may depend on a discriminant of a task type

2019-07-23  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations,
Freeze_Entity_Checks): Include Aspect_CPU with other aspects
whose expresssion may depend on a discriminant, and thus require
that components of the type be made visible.

gcc/testsuite/

* gnat.dg/task4.adb: New testcase.

From-SVN: r273726

5 years ago[Ada] Plug small loophole in Generate_Range_Check
Eric Botcazou [Tue, 23 Jul 2019 08:13:32 +0000 (08:13 +0000)]
[Ada] Plug small loophole in Generate_Range_Check

The Generate_Range_Check routine is responsible for generating range
checks in the scalar case.  It automatically deals with possible
overflow in the process when the source and the target base types are
different.

However there is one case where overflow is not dealt with correctly,
namely when the target base type is narrower than the source base type
and both are floating-point types. In this case, the routine will
convert the source type to the target base type without checking for
overflow. In practice this does not matter much because the conversion
would yield an infinity on overflow, which would then fail the
subsequent range check. However it's more correct to have a proper
overflow check with -gnateF than relying on the infinity.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* checks.adb (Convert_And_Check_Range): Add Suppress parameter
and pass it in the call to Insert_Actions.  Rename local
variable.
(Generate_Range_Check): Minor comment fixes.  Pass Range_Check
in the first call to Convert_And_Check_Range and All_Checks in
the second call.
* exp_ch4.adb (Expand_N_Type_Conversion): Reset the
Do_Overflow_Check flag in the float-to-float case too if there
is also a range check.

gcc/testsuite/

* gnat.dg/range_check5.adb: New testcase.

From-SVN: r273725

5 years ago[Ada] Eliminate redundant overflow checks for conversions from fixed-point
Eric Botcazou [Tue, 23 Jul 2019 08:13:26 +0000 (08:13 +0000)]
[Ada] Eliminate redundant overflow checks for conversions from fixed-point

This eliminates redundant overflow checks that are generated for
conversions from fixed-point to integer types when range checks are also
enabled (which is the default), as the former checks are subsumed into
the latter checks.

No functional changes.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* checks.adb (Activate_Overflow_Check): Remove redundant
argument.
* exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag.
(Expand_N_Type_Conversion): Do not reset it here.

From-SVN: r273724

5 years ago[Ada] Minor tweak to -gnatR output
Eric Botcazou [Tue, 23 Jul 2019 08:13:21 +0000 (08:13 +0000)]
[Ada] Minor tweak to -gnatR output

This makes sure that the numbers present in the -gnatR output are
printed in decimal format in all cases, since the hexadecimal format is
not compatible with the JSON syntax.

2019-07-23  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write.
(Write_Val): Likewise.

From-SVN: r273723

5 years ago[Ada] Iterators are view-specific
Ed Schonberg [Tue, 23 Jul 2019 08:13:15 +0000 (08:13 +0000)]
[Ada] Iterators are view-specific

Operational aspects, such as Default_Iterator, are view-specific, and if
such an aspect appears on the full view of a private type, an object of
the type cannot be iterated upon if it is not in the scope of the full
view, This patch diagnoses properly an attempt to iterate over such an
object.

2019-07-23  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* aspects.ads: New table Operational_Aspect, used to distinguish
between aspects that are view-specific, such as those related to
iterators, and representation aspects that apply to all views of
a type.
* aspects.adb (Find_Aspect): If the aspect being sought is
operational, do not ecamine the full view of a private type to
retrieve it.
* sem_ch5.adb (Analyze_Iterator_Specification): Improve error
message when the intended domain of iteration does not implement
the required iterator aspects.

gcc/testsuite/

* gnat.dg/iter5.adb: Add an expected error.
* gnat.dg/iter6.adb: New testcase.

From-SVN: r273722

5 years ago[Ada] Issue error on SPARK ownership rule violation
Yannick Moy [Tue, 23 Jul 2019 08:13:09 +0000 (08:13 +0000)]
[Ada] Issue error on SPARK ownership rule violation

A modified rule in SPARK RM specifies that object declarations of
anonymous access type should only occur immediately in subprogram, entry
or block. Now checked.

There is no impact on compilation.

2019-07-23  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_spark.ads (Is_Local_Context): New function.
* sem_spark.adb (Check_Declaration): Issue errors on violations
of SPARK RM 3.10(4)
(Process_Path): Do not issue error on borrow/observe during
elaboration, as these are caught by the new rule.

From-SVN: r273721

5 years ago[Ada] Fix binding of ghost units with finalizer
Yannick Moy [Tue, 23 Jul 2019 08:13:01 +0000 (08:13 +0000)]
[Ada] Fix binding of ghost units with finalizer

Linking of an enabled ghost unit which requires a finalizer lead to an
error, as the name generated by the binder for calling the finalizer was
not the same as the name chosen by the compiler. Now fixed.

2019-07-23  Yannick Moy  <moy@adacore.com>

gcc/ada/

* exp_ch7.adb (Create_Finalizer): Force finalizer not to be
Ghost enabled.
* exp_dbug.adb (Get_External_Name): Explain special case of
Ghost finalizer.

gcc/testsuite/

* gnat.dg/ghost6.adb, gnat.dg/ghost6_pkg.ads: New testcase.

From-SVN: r273720

5 years agox86/AVX512: improve generated code for mask-to-vector-register conversions
Jan Beulich [Tue, 23 Jul 2019 08:07:49 +0000 (08:07 +0000)]
x86/AVX512: improve generated code for mask-to-vector-register conversions

Conversion of comparison results to full vectors does, when VPMOVM2* are
unavailable, not require any intermediate VMOVDQ{A,U}*: Simply use
embedded masking on VPTERNLOG* right away, which is available with
AVX512F (while VPMOVM2{D,Q} are available only with AVX512DQ).

Note that the chosen immediate is only one of many possible ones; I was
trying to make the insn here distinguishable from the pre-existing uses
of vpternlog.

gcc/
2019-07-23  Jan Beulich  <jbeulich@suse.com>

* config/i386/sse.md (<avx512>_cvtmask2<ssemodesuffix><mode>):
Require only AVX512F.
(*<avx512>_cvtmask2<ssemodesuffix><mode>): Likewise.  Add
alternative expanding to vpternlog.

From-SVN: r273719

5 years agolibiberty: Check zero value shstrndx in simple-object-elf.c
Ren Kimura [Tue, 23 Jul 2019 07:33:32 +0000 (07:33 +0000)]
libiberty: Check zero value shstrndx in simple-object-elf.c

From-SVN: r273718

5 years agoUse -flto instead of -flto=N in DWARF producer string.
Martin Liska [Tue, 23 Jul 2019 07:31:50 +0000 (09:31 +0200)]
Use -flto instead of -flto=N in DWARF producer string.

2019-07-23  Martin Liska  <mliska@suse.cz>

* dwarf2out.c (gen_producer_string): Canonize -flto=N
to -flto in dwarf producer string.

From-SVN: r273717

5 years agotree-cfg.c (label_for_bb): Remove global var.
Richard Biener [Tue, 23 Jul 2019 06:58:39 +0000 (06:58 +0000)]
tree-cfg.c (label_for_bb): Remove global var.

2019-07-23  Richard Biener  <rguenther@suse.de>

* tree-cfg.c (label_for_bb): Remove global var.
(main_block_label): Take label_for_bb as argument.
(cleanup_dead_labels_eh): Likewise, adjust.
(cleanup_dead_labels): Adjust.

From-SVN: r273716

5 years ago[rs6000] Add documentation for __builtin_mtfsf
Paul A. Clarke [Tue, 23 Jul 2019 02:54:28 +0000 (02:54 +0000)]
[rs6000] Add documentation for __builtin_mtfsf

2019-07-22  Paul A. Clarke  <pc@us.ibm.com>

[gcc]

* doc/extend.texi (Basic PowerPC Built-in Functions Available on all
Configurations): Add documentation for __builtin_mtfsf.

From-SVN: r273715

5 years agoRISC-V: Add -malign-data= option.
Ilia Diachkov [Tue, 23 Jul 2019 01:29:34 +0000 (01:29 +0000)]
RISC-V: Add -malign-data= option.

gcc/
Ilia Diachkov  <ilia.diachkov@optimitech.com>
* config/riscv/riscv-opts.h (struct riscv_align_data): New.
* config/riscv/riscv.c (riscv_constant_alignment): Use
riscv_align_data_type.
* config/riscv/riscv.h (RISCV_EXPAND_ALIGNMENT): New.
(DATA_ALIGNMENT): Use RISCV_EXPAND_ALIGNMENT.
(LOCAL_ALIGNMENT): Use RISCV_EXPAND_ALIGNMENT.
* config/riscv/riscv.opt (malign-data): New.
* doc/invoke.texi (RISC-V Options): Document -malign-data=.

From-SVN: r273714

5 years agocompiler: follow-on fix for finalizing imported methods
Ian Lance Taylor [Tue, 23 Jul 2019 00:34:38 +0000 (00:34 +0000)]
compiler: follow-on fix for finalizing imported methods

    This patch is a revision to CL 185518, which added code to perform
    finalization of methods on types created by the importer and not
    directly reachable until inlining is done.

    The original fix invoked the finalization code at the end of
    Import::read_types(), but it turns out this doesn't handle the case
    where a type with methods is read in due to a reference from something
    later in the export data (a function or variable). The fix is to move
    the import finalization call to the end of Import::import().

    Testcase for this bug is in CL 187057.

    Fixes golang/go#33219.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/187058

From-SVN: r273713

5 years agoDaily bump.
GCC Administrator [Tue, 23 Jul 2019 00:16:30 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r273712

5 years agocgraph.c (dump_graphviz): New function.
Giuliano Belinassi [Mon, 22 Jul 2019 21:41:48 +0000 (21:41 +0000)]
cgraph.c (dump_graphviz): New function.

* cgraph.c (dump_graphviz): New function.
* cgraph.h (dump_graphviz): New function.
* symtab.c (dump_graphviz): New function.

* lang.opt (flag_dump_callgraph): New flag.
* lto-dump.c (dump_symtab_graphviz): New function.
(dump_tool_help): New option.
(lto_main): Handle graphviz dumping.

From-SVN: r273708

5 years agoRename testsuite directory to match P0553R4 stable names
Jonathan Wakely [Mon, 22 Jul 2019 16:57:40 +0000 (17:57 +0100)]
Rename testsuite directory to match P0553R4 stable names

* testsuite/26_numerics/bit/bitops.count/*: Rename to ...
* testsuite/26_numerics/bit/bit.count/*: Here.

From-SVN: r273707

5 years agoAdjust std::rotl, std::rotr etc to match final P0553R4 proposal
Jonathan Wakely [Mon, 22 Jul 2019 16:53:36 +0000 (17:53 +0100)]
Adjust std::rotl, std::rotr etc to match final P0553R4 proposal

This proposal has now been accepted for C++20, with a few changes. This
patch adjusts std::rotl and std::rotr to match the final specification
and declares the additions for C++2a mode even when __STRICT_ANSI__ is
defined.

* include/std/bit (__rotl, __rotr): Change second parameter from
unsigned int to int and handle negative values.
(rotl, rotr): Remove check for __STRICT_ANSI__. Change second
parameter from unsigned int to int. Add nodiscard attribute.
* testsuite/26_numerics/bit/bitops.rot/rotl.cc: Rename to ...
* testsuite/26_numerics/bit/bit.rotate/rotl.cc: Here. Test negative
shifts.
* testsuite/26_numerics/bit/bitops.rot/rotr.cc: Rename to ...
* testsuite/26_numerics/bit/bit.rotate/rotr.cc: Here. Test negative
shifts.

From-SVN: r273706

5 years agoChange std::ceil2 to be undefined if the result can't be represented
Jonathan Wakely [Mon, 22 Jul 2019 16:53:27 +0000 (17:53 +0100)]
Change std::ceil2 to be undefined if the result can't be represented

* include/std/bit (__ceil2): Make unrepresentable results undefined,
as per P1355R2. Add debug assertion. Perform one left shift, not two,
so that out of range values cause undefined behaviour. Ensure that
shift will still be undefined if left operand is promoted.
* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Replace checks for
unrepresentable values with checks that they are not core constant
expressions.
* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: New test.

From-SVN: r273705

5 years ago[aarch64]: add usra and ssra combine patterns
Sylvia Taylor [Mon, 22 Jul 2019 16:21:17 +0000 (16:21 +0000)]
[aarch64]: add usra and ssra combine patterns

This patch adds support to combine:

1) ushr and add into usra, example:

ushr    v0.16b, v0.16b, 2
add     v0.16b, v0.16b, v2.16b
---
usra    v2.16b, v0.16b, 2

2) sshr and add into ssra, example:

sshr    v1.16b, v1.16b, 2
add     v1.16b, v1.16b, v3.16b
---
ssra    v3.16b, v1.16b, 2

Committed on behalf of Sylvia Taylor <sylvia.taylor@arm.com>.
Reviewed-by: <James.greenhalgh@arm.com>
gcc/ChangeLog:

        * config/aarch64/aarch64-simd.md
        (*aarch64_simd_sra<mode>): New.
        * config/aarch64/iterators.md
        (SHIFTRT): New iterator.
        (sra_op): New attribute.

gcc/testsuite/ChangeLog:

        * gcc.target/aarch64/simd/ssra.c: New test.
        * gcc.target/aarch64/simd/usra.c: New test.

From-SVN: r273703

5 years agoMSP430: Don't save all callee-saved regs in non-leaf interrupt functions
Jozef Lawrynowicz [Mon, 22 Jul 2019 16:02:29 +0000 (16:02 +0000)]
MSP430: Don't save all callee-saved regs in non-leaf interrupt functions

Previously, all callee-saved regs would unconditionally be saved
in interrupt functions that call another function.

2019-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/msp430.c (msp430_preserve_reg_p): Don't save
callee-saved regs R4->R10 in an interrupt function that calls another
function.

2019-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc.target/msp430/isr-push-pop-main.c: New test.
* gcc.target/msp430/isr-push-pop-isr-430.c: Likewise.
* gcc.target/msp430/isr-push-pop-isr-430x.c: Likewise.
* gcc.target/msp430/isr-push-pop-leaf-isr-430.c: Likewise.
* gcc.target/msp430/isr-push-pop-leaf-isr-430x.c: Likewise.

From-SVN: r273702

5 years ago[jit] check result_type in gcc_jit_context_new_unary_op
Andrea Corallo [Mon, 22 Jul 2019 15:33:58 +0000 (15:33 +0000)]
[jit] check result_type in gcc_jit_context_new_unary_op

2019-07-22  Andrea Corallo <andrea.corallo@arm.com>

* jit-recording.c (unary_op_reproducer_strings): Make it extern.
(binary_op_reproducer_strings): Likewise.
* jit-recording.h (unary_op_reproducer_strings): Likewise.
(binary_op_reproducer_strings): Likewise.
* libgccjit.c (gcc_jit_context_new_unary_op): Check result_type to be a
numeric type.
* libgccjit.c (gcc_jit_context_new_binary_op): Improve error message.

2019-07-22  Andrea Corallo <andrea.corallo@arm.com>

* jit.dg/test-error-gcc_jit_context_new_unary_op-bad-res-type.c:
New testcase.
* jit.dg/test-error-gcc_jit_context_new_binary_op-bad-res-type.c:
Adjust error message.

From-SVN: r273700

5 years ago[rs6000] Add _mm_blend_epi16 and _mm_blendv_epi8
Paul A. Clarke [Mon, 22 Jul 2019 14:07:10 +0000 (14:07 +0000)]
[rs6000] Add _mm_blend_epi16 and _mm_blendv_epi8

Add compatibility implementations of _mm_blend_epi16 and _mm_blendv_epi8
intrinsics.

Respective test cases are copied almost verbatim (minor changes to
the dejagnu head lines) from i386.

2019-07-22  Paul A. Clarke  <pc@us.ibm.com>

[gcc]

* config/rs6000/smmintrin.h (_mm_blend_epi16): New.
(_mm_blendv_epi8): New.

[gcc/testsuite]

* gcc.target/powerpc/sse4_1-check.h: New.
* gcc.target/powerpc/sse4_1-pblendvb.c: New.
* gcc.target/powerpc/sse4_1-pblendw.c: New.
* gcc.target/powerpc/sse4_1-pblendw-2.c: New.

From-SVN: r273698

5 years ago[Ada] More complete information level for -gnatR4 output
Eric Botcazou [Mon, 22 Jul 2019 13:58:41 +0000 (13:58 +0000)]
[Ada] More complete information level for -gnatR4 output

This instructs -gnatR4 to also list the Etype of user-declared objects
if it is compiler-generated, for example in:

package P2 is

  Arr_V : array (1 .. 5) of Integer;

end P2;

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* repinfo.adb (List_Entities): Also list compiled-generated
types present as Etype of objects.

From-SVN: r273697

5 years ago[Ada] Sinfo: update doc about Do_Division/Overlflow/Range_Check
Eric Botcazou [Mon, 22 Jul 2019 13:58:37 +0000 (13:58 +0000)]
[Ada] Sinfo: update doc about Do_Division/Overlflow/Range_Check

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sinfo.ads: Update the documentation about the
Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags.

From-SVN: r273696

5 years ago[Ada] Fix missing check for no-op conversion to fixed-point type
Eric Botcazou [Mon, 22 Jul 2019 13:58:32 +0000 (13:58 +0000)]
[Ada] Fix missing check for no-op conversion to fixed-point type

This plugs a small loophole in the compiler for the case of a
multiplication or a division in a fixed-point type wrapped in a no-op
conversion, e.g. to the same fixed-point type.

The front-end fails to generate a range check for the operation.  This
used to be caught by the back-end, which would generate the range check,
but this is no longer the case because we now make sure to reset the
Do_Range_Check flag in all cases before invoking the back-end.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment.
(Fixup_Universal_Fixed_Operation): Set the base type instead of
the type of the enclosing type conversion on the operation.

gcc/testsuite/

* gnat.dg/fixedpnt6.adb: New testcase.

From-SVN: r273695

5 years ago[Ada] Remove misleading warning/suggestion in membership test
Ed Schonberg [Mon, 22 Jul 2019 13:58:27 +0000 (13:58 +0000)]
[Ada] Remove misleading warning/suggestion in membership test

This patch removes a warning on a membership test whose right operand is
given by a range. In many cases the check can be replaced by the use of
attribute 'Valid, but if the bounds of range are type conversion this
replacement would be invorrect and the warning and suggestion are
misleading.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute
'Valid as a replacement for a range check on a discrete type
when the bounds of the range are given by type conversions,
because in such a case there are distinct types involved and the
subbested attribute replacement would be misplaced.

gcc/testsuite/

* gnat.dg/warn26.adb: New testcase.

From-SVN: r273694

5 years ago[Ada] Adapt ownership checking in SPARK to traversal functions
Yannick Moy [Mon, 22 Jul 2019 13:58:23 +0000 (13:58 +0000)]
[Ada] Adapt ownership checking in SPARK to traversal functions

A traversal function, especially when implemented as an expression
function, may need to return an if-expression or case-expression, while
still respecting Legality Rule SPARK RM 3.10(5). This case is now
allowed in GNATprove.

There is no impact on compilation.

2019-07-22  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_spark.adb (Get_Root_Object, Is_Path_Expression,
Is_Subpath_Expression): Add parameter Is_Traversal to adapt
these functions to the case of paths returned from a traversal
function.
(Read_Indexes): Handle the case of an if-expression or
case-expression.
(Check_Statement): Check Emit_Messages only when issuing an
error message. This is important as Emit_Messages may store the
information that an error was detected.

From-SVN: r273693

5 years ago[Ada] Overhaul code implementing conversions involving fixed-point types
Eric Botcazou [Mon, 22 Jul 2019 13:58:19 +0000 (13:58 +0000)]
[Ada] Overhaul code implementing conversions involving fixed-point types

This ovehauls the code implementing conversions involving fixed-point
types in the front-end because it leaks the Do_Range_Check flag in
several places to the back-end, which is a violation of the documented
interface between front-end and back-end.

This also does a bit of housekeeping work throughout it in the process.

There should be essentially no functional changes.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* checks.adb (Apply_Type_Conversion_Checks): Do not set
Do_Range_Check flag on conversions from fixed-point types
either.
* exp_attr.adb: Add use and with clause for Expander.
(Expand_N_Attribute_Reference) <Fixed_Value, Integer_Value>: Set
the Conversion_OK flag and do not generate overflow/range checks
manually.
* exp_ch4.adb (Expand_N_Qualified_Expression): Remove
superfluous clearing of Do_Range_Check flag.
(Discrete_Range_Check): New procedure to generate a range check
for discrete types.
(Real_Range_Check): Remove redundant local variable and adjust.
Remove useless shortcut.  Clear Do_Range_Check flag on all
paths.
(Expand_N_Type_Conversion): Remove redundant test on
Conversion_OK.  Call Discrete_Range_Check to generate range
checks on discrete types.  Remove obsolete code for
float-to-integer conversions.  Add code to generate range checks
for conversions involving fixed-point types.

From-SVN: r273692

5 years ago[Ada] Sprint: fix pasto in comment
Eric Botcazou [Mon, 22 Jul 2019 13:58:14 +0000 (13:58 +0000)]
[Ada] Sprint: fix pasto in comment

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sprint.ads: Fix pasto in comment.

From-SVN: r273691

5 years ago[Ada] Spurious error passing access to class-wide interface type
Javier Miranda [Mon, 22 Jul 2019 13:58:09 +0000 (13:58 +0000)]
[Ada] Spurious error passing access to class-wide interface type

The compiler reports an spurious error when the formal parameter of a
subprogram is an access to a class wide interface type and the actual
parameter is an allocator of an object covering such interface type.

2019-07-22  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Actuals): Replace code that displaces the
pointer to an allocated object to reference its secondary
dispatch table by a type conversion (which takes care of
handling all cases).

gcc/testsuite/

* gnat.dg/class_wide5.adb: New testcase.

From-SVN: r273690

5 years ago[Ada] Small enhancement to the -gnatD/-gnatG output for fixed-point types
Eric Botcazou [Mon, 22 Jul 2019 13:58:04 +0000 (13:58 +0000)]
[Ada] Small enhancement to the -gnatD/-gnatG output for fixed-point types

This is a small enhancement to the -gnatD/-gnatG output: the base type
of fixed-point types, which is usually an itype, used to be printed as
??? in this case.  It is now printed in a similar fashion as the first
subtype.

For the following package:

package P is

  type D is delta 128.0 / (2 ** 15) range 0.0 .. 256.0;

end P;

the  -gnatD/-gnatG must now be:

Source recreated from tree for P (spec)
---------------------------------------

p_E : short_integer := 0;

package p is
   type p__d is delta [1.0/256.0] range 0.0 .. 256.0;
   [type p__TdB is delta [1.0/256.0] range -[2147483648.0*2**(-8)] ..
     [2147483647.0*2**(-8)]]
   freeze p__TdB []
end p;

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sprint.adb (Sprint_Node_Actual)
<N_Decimal_Fixed_Point_Definition>: Swap a couple of spaces.
(Write_Itype): Minor consistency fixes throughout.  Add support
for printing ordinary and decimal fixed-point types and
subtypes.

From-SVN: r273689

5 years ago[Ada] Beef up comment in exp_attr.adb
Eric Botcazou [Mon, 22 Jul 2019 13:58:00 +0000 (13:58 +0000)]
[Ada] Beef up comment in exp_attr.adb

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment.

From-SVN: r273688

5 years ago[Ada] Optimization loses exception in improper use of 'Value
Ed Schonberg [Mon, 22 Jul 2019 13:57:55 +0000 (13:57 +0000)]
[Ada] Optimization loses exception in improper use of 'Value

This patch prevents an improper removal of an evaluation of attribute
'Value on an illegal input that will raise Constraint_Error, when a
subsequent use of this evaluation might be optimized away by the
back-end.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* libgnat/s-valboo.ads, libgnat/s-valcha.ads,
libgnat/s-valdec.ads, libgnat/s-valenu.ads,
libgnat/s-valint.ads, libgnat/s-vallld.ads,
libgnat/s-vallli.ads, libgnat/s-valllu.ads,
libgnat/s-valrea.ads, libgnat/s-valuns.ads,
libgnat/s-valwch.ads: Change categorization of packages that
implement attribute 'Value from Pure to Preelaborate, to prevent
undesirable optimizations when the evaluation of the attribute
raises Constraint_Error, but subsequent use of the result of
this evsaluation is removed by a subsequent optimization.

gcc/testsuite/

* gnat.dg/opt80.adb: New testcase.

From-SVN: r273687

5 years ago[Ada] Misleading warning on variable not assigned
Ed Schonberg [Mon, 22 Jul 2019 13:57:51 +0000 (13:57 +0000)]
[Ada] Misleading warning on variable not assigned

This patch removes a warning on a referenced entity with no explicit
prior assignment, if the type of the entity has
Preelaborable_Initialixation, such as Exception_Occurrence.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_warn.adb (Check_References): Do not emit s warning on a
referenced entity with no explicit assignment if the type of the
entity has Preelaborable_Initialixation, such as
Exception_Occurrence.

gcc/testsuite/

* gnat.dg/warn25.adb: New testcase.

From-SVN: r273686

5 years ago[Ada] Usage of signed type in array bounds in CCG
Javier Miranda [Mon, 22 Jul 2019 13:57:46 +0000 (13:57 +0000)]
[Ada] Usage of signed type in array bounds in CCG

2019-07-22  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion
to handle array indexes that are modular type.
(Expand_N_Allocator): For 32-bit targets improve the generation
of the runtime check associated with large arrays supporting
arrays initialized with a qualified expression.
* libgnat/s-imenne.adb (Image_Enumeration_8,
Image_Enumeration_16, Image_Enumeration_32): Define the index of
Index_Table with range Natural'First .. Names'Length since in
the worst case all the literals of the enumeration type would be
single letter literals and the Table built by the frontend would
have as many components as the length of the names string. As a
result of this enhancement, the internal tables declared using
Index_Table have a length closer to the real needs, thus
avoiding the declaration of large arrays on 32-bit CCG targets.

From-SVN: r273685

5 years ago[Ada] Issue warning or error message on ignored typing constraint
Yannick Moy [Mon, 22 Jul 2019 13:57:42 +0000 (13:57 +0000)]
[Ada] Issue warning or error message on ignored typing constraint

GNAT ignores the discriminant constraint on a component when it applies
to the type of the record being analyzed. Now issue a warning on Ada
code when ignoring this constraint, or an error on SPARK code.

2019-07-22  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_ch3.adb (Constrain_Access): Issue a message about ignored
constraint.

gcc/testsuite/

* gnat.dg/warn24.adb: New testcase.

From-SVN: r273684

5 years ago[Ada] Fix spurious visibility error for tagged type with inlining
Eric Botcazou [Mon, 22 Jul 2019 13:57:37 +0000 (13:57 +0000)]
[Ada] Fix spurious visibility error for tagged type with inlining

This fixes a spurious visibility error for the very peculiar case where
an operator that operates on the class-wide type of a tagged type is
declared in a package, the operator is renamed in another package where
a subtype of the tagged type is declared, and both packages end up in
the transititive closure of a unit compiled with optimization and
inter-inlining (-gnatn).

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the
class-wide type if the type is tagged.
(Use_One_Type): Add commentary on the handling of the class-wide
type.

gcc/testsuite/

* gnat.dg/inline17.adb, gnat.dg/inline17_pkg1.adb,
gnat.dg/inline17_pkg1.ads, gnat.dg/inline17_pkg2.ads,
gnat.dg/inline17_pkg3.adb, gnat.dg/inline17_pkg3.ads: New
testcase.

From-SVN: r273683

5 years ago[Ada] Remove obsolete Is_For_Access_Subtype machinery
Eric Botcazou [Mon, 22 Jul 2019 13:57:31 +0000 (13:57 +0000)]
[Ada] Remove obsolete Is_For_Access_Subtype machinery

This change removes the Is_For_Access_Subtype machinery from the
compiler.  This machinery was devised a long time ago to deal with a
peculiarity of the freezing for access-to-record subtypes but has been
degenerate for quite some time now and does not seem to serve any useful
purpose at this point.

Morever it has an annoying side effect whereby it causes Underlying_Type
to return the (unconstrained) base record type when invoked on the
designated record subtype, which is very problematic for GNATprove.

There should be no functional changes.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* einfo.ads (Is_For_Access_Subtype): Delete.
(Set_Is_For_Access_Subtype): Likewise.
* einfo.adb (Is_For_Access_Subtype): Likewise.
(Set_Is_For_Access_Subtype): Likewise.
(Write_Entity_Flags): Do not write Is_For_Access_Subtype.
* exp_ch4.adb (Expand_N_Selected_Component): Do not deal with
it.
* exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise.
* sem_ch4.adb (Analyze_Explicit_Dereference): Likewise.
* sem_ch3.adb (Build_Discriminated_Subtype): Do not build a
special private subtype for access-to-record subtypes.

From-SVN: r273682

5 years ago[Ada] Spurious error on private subtype of derived access type
Eric Botcazou [Mon, 22 Jul 2019 13:57:26 +0000 (13:57 +0000)]
[Ada] Spurious error on private subtype of derived access type

This patch fixes a spurious type error on a dynamic predicate on a
subtype of a private type whose full view is a derived access type.
Prior to it, the base type of the subtype would appear to be the parent
type of the derived type instead of the derived type itself, leading to
problems downstream.

The following package must now compile quietly:

with S;

package T is
   type B_Pointer is private;
   Null_B_Pointer : constant B_Pointer;
   function OK (B : B_Pointer) return Boolean is (B /= Null_B_Pointer);
   subtype Valid_B_Pointer is B_Pointer
     with Dynamic_Predicate => OK (Valid_B_Pointer);
private
   type B_Pointer is new S.A_Pointer;
   Null_B_Pointer : constant B_Pointer := B_Pointer (S.Null_A_Pointer);
end;

package S is
   type A_Type is new Integer;
   type A_Pointer is access A_Type;
   Null_A_Pointer : constant A_Pointer := null;
end;

Moreover, it also plugs a loophole in the compiler whereby an
instantiation of a generic with a formal subprogram declaration nested
in an enclosing generic package would be done even if there was a
mismatch between an original and a derived types involved in the
instantiation.

The compiler must now gives the following error:
p.adb:11:43: no visible subprogram matches the specification for "Action"
on

with Q;
with R;
with G;

procedure P is

  package My_G is new G (Q.T);

  procedure Proc (Value : R.T) is null;

  procedure Iter is new My_G.Iteration_G (Proc);

begin
  null;
end;

with R;

package Q is

  type T is new R.T;

end Q;

package R is

  type T is private;

private

  type T is access Integer;

end R;

generic

  type Value_T is private;

package G is

  generic
    with procedure Action (Value : Value_T);
  procedure Iteration_G;

end G;

package body G is

  procedure Iteration_G is null;

end G;

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch3.adb (Complete_Private_Subtype): Rework the setting of
the Etype of the full view for full base types that cannot
contain any discriminant.  Remove code and comment about it in
the main path.

From-SVN: r273681

5 years ago[Ada] Type inconsistency in floating_point type declarations
Ed Schonberg [Mon, 22 Jul 2019 13:57:22 +0000 (13:57 +0000)]
[Ada] Type inconsistency in floating_point type declarations

This patch fixes an inconsistency in the typing of the bounds of a
floting point type declaration, when some bound is given by a dtatic
constant of an explicit type, instead of a real literal, Previous to
this patch the bound of the type retained the given type, leading to
spurious errors in Codepeer.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch3.adb (Convert_Bound): Subsidiary of
Floating_Point_Type_Declaration, to handle properly range
specifications with bounds that may include static constants of
a given type rather than real literals.

From-SVN: r273680

5 years ago[Ada] Further fix non-stored discriminant in aggregate for GNATprove
Eric Botcazou [Mon, 22 Jul 2019 13:57:18 +0000 (13:57 +0000)]
[Ada] Further fix non-stored discriminant in aggregate for GNATprove

GNATprove expects discriminants appearing in aggregates and their types
to be resolved to stored discriminants.  This extends the machinery that
makes sure this is the case for default initialization expressions so as
to also handle component associations in these expressions.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals
too.
(Rewrite_Range;): Minor tweak.
(Resolve_Record_Aggregate): For a component with default
initialization whose expression is an array aggregate, also
rewrite the bounds of the component associations, if any.

From-SVN: r273679

5 years ago[Ada] Premature finalization of controlled temporaries in case expressions
Gary Dismukes [Mon, 22 Jul 2019 13:57:13 +0000 (13:57 +0000)]
[Ada] Premature finalization of controlled temporaries in case expressions

The compiler was generating finalization of temporary objects used in
evaluating case expressions for controlled types in cases where the case
statement created by Expand_N_Expression_With_Actions is rewritten as an
if statement. This is fixed by inheriting the From_Condition_Expression
flag from the rewritten case statement.

The test below must generate the following output when executed:

$ main
Xs(1): 1

----

package Test is

   type E is (E1, E2);
   procedure Test (A : in E);

end Test;

----

with Ada.Text_IO;
with Ada.Finalization;

package body Test is

   type T is new Ada.Finalization.Controlled with
      record
         N : Natural := 0;
      end record;

   overriding procedure Finalize (X : in out T) is
   begin
      X.N := 42;
   end Finalize;

   type T_Array is array (Positive range <>) of T;

   function Make_T (N : Natural) return T is
   begin
      return (Ada.Finalization.Controlled with N => N);
   end Make_T;

   X1 : constant T := Make_T (1);
   X2 : constant T := Make_T (2);

   procedure Test (A : in E)
   is
      Xs : constant T_Array := (case A is
                                   when E1 => (1 => X1),
                                   when E2 => (1 => X2));
   begin
      Ada.Text_IO.Put_Line ("Xs(1):" & Natural'Image (Xs (1).N));
   end Test;

end Test;

----

with Test;

procedure Main is
begin
   Test.Test (Test.E1);
end Main;

2019-07-22  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* exp_ch5.adb (Expand_N_Case_Statement): In the case where a
case statement is rewritten as an equivalent if statement,
inherit the From_Condition_Expression flag from the case
statement.

From-SVN: r273678

5 years ago[Ada] Internal error on iterator for limited private discriminated type
Eric Botcazou [Mon, 22 Jul 2019 13:57:09 +0000 (13:57 +0000)]
[Ada] Internal error on iterator for limited private discriminated type

This patch further extends the short-circuit, aka optimization, present
in the Check_Constrained_Object procedure used for renaming declarations
to all limited types, so as to prevent type mismatches downstream in
more cases.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch8.adb (Check_Constrained_Object): Further extend the
special optimization to all limited types.

gcc/testsuite/

* gnat.dg/iter5.adb, gnat.dg/iter5_pkg.ads: New testcase.

From-SVN: r273677

5 years ago[Ada] Fix missing Constraint_Error for Enum_Val attribute
Eric Botcazou [Mon, 22 Jul 2019 13:57:04 +0000 (13:57 +0000)]
[Ada] Fix missing Constraint_Error for Enum_Val attribute

This fixes an old issue involving the Enum_Val attribute: it does not
always raise a Constraint_Error exception when the specified value is
not valid for the enumeration type (instead a modulo computation is
applied to the value).

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference)
<Attribute_Enum_Val>: Set No_Truncation on the
N_Unchecked_Type_Conversion built around the argument passed to
the attribute.

gcc/testsuite/

* gnat.dg/enum_val1.adb: New testcase.

From-SVN: r273676

5 years ago[Ada] Ensure meaningless digits in a string are discarded
Nicolas Roche [Mon, 22 Jul 2019 13:56:59 +0000 (13:56 +0000)]
[Ada] Ensure meaningless digits in a string are discarded

2019-07-22  Nicolas Roche  <roche@adacore.com>

gcc/ada/

* libgnat/s-valrea.adb (Scan_Real): Ignore non significative
digits to avoid converging to infinity in some cases.

gcc/testsuite/

* gnat.dg/float_value1.adb: New testcase.

From-SVN: r273675

5 years ago[Ada] Fix wrong assumption on bounds in GNAT.Encode_String
Eric Botcazou [Mon, 22 Jul 2019 13:56:55 +0000 (13:56 +0000)]
[Ada] Fix wrong assumption on bounds in GNAT.Encode_String

This fixes a couple of oversights in the GNAT.Encode_String package,
whose effect is to assume that all the strings have a lower bound of 1.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight.
(Encode_Wide_Wide_String): Likewise.

gcc/testsuite/

* gnat.dg/encode_string1.adb, gnat.dg/encode_string1_pkg.adb,
gnat.dg/encode_string1_pkg.ads: New testcase.

From-SVN: r273674

5 years ago[Ada] Fix spurious loop warning for function with Out parameter
Eric Botcazou [Mon, 22 Jul 2019 13:56:50 +0000 (13:56 +0000)]
[Ada] Fix spurious loop warning for function with Out parameter

The compiler gives a spurious warning about a possible infinite while
loop whose condition contains a call to a function that takes an Out or
In/Out parameter and whose actual is a variable that is not modified in
the loop, because it still thinks that functions can only have In
parameters.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_warn.adb (Find_Var): Bail out for a function call with an
Out or In/Out parameter.

gcc/testsuite/

* gnat.dg/warn23.adb: New testcase.

From-SVN: r273673

5 years ago[Ada] Ensure Ctrl-C is not emited on terminated processes
Nicolas Roche [Mon, 22 Jul 2019 13:56:45 +0000 (13:56 +0000)]
[Ada] Ensure Ctrl-C is not emited on terminated processes

Due to the reuse policy of PID on Windows. Sending a Ctrl-C to a dead
process might result in a Ctrl-C sent to the wrong process. The check is
also implemented on Unix platforms and avoid unecessary waits.

2019-07-22  Nicolas Roche  <roche@adacore.com>

gcc/ada/

* terminals.c (__gnat_tty_waitpid): Support both blocking and
not blocking mode.
* libgnat/g-exptty.ads (Is_Process_Running): New function.
* libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate
a process if it is already dead.

From-SVN: r273672

5 years ago[Ada] Incorrect values in conversion from fixed-point subtype with 'Small
Ed Schonberg [Mon, 22 Jul 2019 13:56:40 +0000 (13:56 +0000)]
[Ada] Incorrect values in conversion from fixed-point subtype with 'Small

This patch fixes incorrect computations involving a fixed-point subtype
whose parent type has an aspect specification for 'Small.

Executing the following:

   gnatmake -q conv
   ./conv

must yield:

   9000.000000
    9.00000000000000E+03
    9000.000000
    9.00000000000000E+03
    9.00000000000000E+03
    9.00000000000000E+03
    9.00000000000000E+03
    9.00000000000000E+03

----
with Text_IO; use Text_IO;
procedure Conv is
  V_P : constant := 10.0 ** (-6);
  M_V : constant := 9000.0;
  N_V : constant := -9000.0;
  type V_T is delta V_P range N_V .. M_V  with Small => V_P;
  subtype S_T is V_T range 0.0 .. M_V;

  function Convert (Input : in S_T) return Long_Float is
  begin
    Put_Line (Input'Img);
    Put_Line (Long_Float'Image (Long_Float (Input)));
    return Long_Float (Input);
  end Convert;

begin

  declare
    Var_S : constant S_T := S_T'Last;
    Output : constant Long_Float := Convert (Var_S);
  begin
    Put_Line (Long_Float'Image (Convert (Var_S)));
    Put_Line (Long_Float'Image (Long_Float (Var_S)));
    Put_Line (Output'Img);
  end;

  Put_Line (Long_Float'Image (Long_Float (S_T'Last)));

end Conv;

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* freeze.adb (Freeze_Fixed_Point_Type):  When freezing a
fixed-point subtype, check whether the parent type declarastion
includes an aspect specification for the 'Small type attribute,
and inherit the specified value.

From-SVN: r273671

5 years ago[Ada] Crash in C++ constructor without external and link name
Javier Miranda [Mon, 22 Jul 2019 13:56:36 +0000 (13:56 +0000)]
[Ada] Crash in C++ constructor without external and link name

The compiler blows up processing the declaration of a tagged type
variable that has a C++ constructor without external or link name. After
this patch the frontend reports an error.

2019-07-22  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* freeze.adb (Freeze_Subprogram): Check that C++ constructors
must have external or link name.

gcc/testsuite/

* gnat.dg/cpp_constructor2.adb: New testcase.

From-SVN: r273670

5 years ago[Ada] Spurious warning about a useless assignment
Ed Schonberg [Mon, 22 Jul 2019 13:56:31 +0000 (13:56 +0000)]
[Ada] Spurious warning about a useless assignment

This patch removes a spurious warning about a useless assignment, when a
composite object is the target of an assignment and is an actual for an
out parameter in a subsewuent call, and there is an intervening use of
the object as the prefix of a selected component in an intervening
operation.

2019-07-22  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Selected_Component): If the prefix has a
deferred reference, generate the correct reference now, to
indicate that the previous assignment is used.  This prevents
spurious warnings on useless assignments when compiling with all
warnings enabled. when there is a subsequent call in the same
stqtement list, in which the prefix of the selected component is
the actual for an out parameter.

gcc/testsuite/

* gnat.dg/warn22.adb: New testcase.

From-SVN: r273669

5 years ago[Ada] Fix internal error on array slice in loop and Loop_Invariant
Eric Botcazou [Mon, 22 Jul 2019 13:56:26 +0000 (13:56 +0000)]
[Ada] Fix internal error on array slice in loop and Loop_Invariant

This fixes an internal error caused by the presence of an Itype in a
wrong scope.  This Itype is created for an array slice present in the
condition of a while loop whose body also contains a pragma
Loop_Invariant, initially in the correct scope but then relocated into a
function created for the pragma.

2019-07-22  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition
of a while loop instead of simply relocating it.

gcc/testsuite/

* gnat.dg/loop_invariant1.adb, gnat.dg/loop_invariant1.ads: New
testcase.

From-SVN: r273668

5 years agore PR tree-optimization/91221 (ICE in get_int_cst_ext_nunits, at tree.c:1299 since...
Richard Biener [Mon, 22 Jul 2019 11:18:55 +0000 (11:18 +0000)]
re PR tree-optimization/91221 (ICE in get_int_cst_ext_nunits, at tree.c:1299 since r273548)

2019-07-22  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91221
* tree-ssa-sccvn.c (vn_reference_lookup_3): Appropriately
restrict partial-def handling of empty constructors and
memset to refs with known offset.

* g++.dg/pr91221.C: New testcase.

From-SVN: r273667

5 years agox86/AVX512: improve generated code for bit-wise negation of vectors of integers
Jan Beulich [Mon, 22 Jul 2019 08:07:29 +0000 (08:07 +0000)]
x86/AVX512: improve generated code for bit-wise negation of vectors of integers

NOT on vectors of integers does not require loading a constant vector of
all ones into a register - VPTERNLOG can be used here (and could/should
be further used to carry out other binary and ternary logical operations
which don't have a special purpose instruction).

gcc/
2019-07-22  Jan Beulich  <jbeulich@suse.com>

* config/i386/sse.md (ternlogsuffix): New.
(one_cmpl<mode>2): Don't force CONSTM1_RTX into a register when
AVX512F is in use.
(<mask_codefor>one_cmpl<mode>2<mask_name>): New.

From-SVN: r273663

5 years agoDo not emit __gnu_lto_v1 symbol.
Martin Liska [Mon, 22 Jul 2019 07:34:47 +0000 (09:34 +0200)]
Do not emit __gnu_lto_v1 symbol.

2019-07-22  Martin Liska  <mliska@suse.cz>

* config/avr/avr.c (avr_asm_output_aligned_decl_common): Update
comment.
* toplev.c (compile_file): Do not emit __gnu_lto_v1 symbol.
2019-07-22  Martin Liska  <mliska@suse.cz>

* config/pa/stublib.c: Remove stub symbol __gnu_lto_v1.
* config/pa/t-stublib: Likewise.
2019-07-22  Martin Liska  <mliska@suse.cz>

* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Do not search for gnu_lto_v1, but search for first '\0'.

From-SVN: r273662

5 years agoSimplify LTO section format.
Martin Liska [Mon, 22 Jul 2019 07:34:32 +0000 (09:34 +0200)]
Simplify LTO section format.

2019-07-22  Martin Liska  <mliska@suse.cz>

* lto-section-in.c (lto_get_section_data):
Use new function get_compression.
* lto-streamer-out.c (produce_lto_section): Use
set_compression to encode compression algorithm.
* lto-streamer.h (struct lto_section): Do not
use bitfields in the format.

From-SVN: r273661

5 years agoMake a warning for -Werror=wrong-language (PR driver/91172).
Martin Liska [Mon, 22 Jul 2019 07:34:10 +0000 (09:34 +0200)]
Make a warning for -Werror=wrong-language (PR driver/91172).

2019-07-22  Martin Liska  <mliska@suse.cz>

PR driver/91172
* opts-common.c (decode_cmdline_option): Decode
argument of -Werror and check it for a wrong language.
* opts-global.c (complain_wrong_lang): Remove such case.
2019-07-22  Martin Liska  <mliska@suse.cz>

PR driver/91172
* gcc.dg/pr91172.c: New test.

From-SVN: r273660

5 years ago[ARC] Fix emitting TLS symbols.
Claudiu Zissulescu [Mon, 22 Jul 2019 07:06:37 +0000 (09:06 +0200)]
[ARC] Fix emitting TLS symbols.

When storing a TLS symbol to memory, always use an intermediate register to load it.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (prepare_move_operands): Always use an
intermediate register when storing a TLS symbols.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc/testsuite/gcc.target/arc/tls-2.c: New test.
* gcc/testsuite/gcc.target/arc/tls-3.c: Likewise.

From-SVN: r273657