gcc.git
5 years ago[arm/aarch64] Add comments warning that stack-protector initializer insns shouldn...
Richard Earnshaw [Tue, 27 Aug 2019 10:05:51 +0000 (10:05 +0000)]
[arm/aarch64] Add comments warning that stack-protector initializer insns shouldn't be split

Following the publication of https://kb.cert.org/vuls/id/129209/ I've
been having a look at GCC's implementation for Arm and AArch64.  I
haven't identified any issues yet, but it's a bit early to be
completely sure.

One observation, however, is that the instruction sequence that
initializes the stack canary might be vulnerable to producing a
reusable value if it were ever split early.  I don't think we ever
would, because the memory locations involved with the stack protector
are all marked volatile to ensure that the values are only loaded at
the point in time when the test is intended to happen, and that also
has the effect of making it unlikely that the value would be reused
without reloading.  Nevertheless, defence in depth is probably
warranted here.

So this patch just adds some comments warning that the patterns should
not be split.

* config/arm/arm.md (stack_protect_set_insn): Add security-related
comment.
* config/aarch64/aarch64.md (stack_protect_set_<mode>): Likewise.

From-SVN: r274946

5 years agoFix new clang warnings.
Martin Liska [Tue, 27 Aug 2019 07:39:34 +0000 (09:39 +0200)]
Fix new clang warnings.

2019-08-27  Martin Liska  <mliska@suse.cz>

* cgraph.c (cgraph_node::remove): Remove dead assignment before
loop.
* config/i386/i386-features.c (scalar_chain::emit_conversion_insns):
Enclose in anonymous namespace.
* config/i386/x86-tune-costs.h (struct processor_costs): Wrap
hard_register initialization in braces.
* tree-vrp.h (value_range_base::supports_type_p): Return false
for function with boolean return type.

From-SVN: r274945

5 years agoDaily bump.
GCC Administrator [Tue, 27 Aug 2019 00:16:37 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274944

5 years agore PR fortran/91390 (treatment of extra parameter in a subroutine call)
Thomas Koenig [Mon, 26 Aug 2019 20:05:32 +0000 (20:05 +0000)]
re PR fortran/91390 (treatment of extra parameter in a subroutine call)

2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91473
* frontend-passes.c (gfc_check_externals): Make
gfc_errors_to_warnings conditional on -fallow-argument-mismatch.
* invoke.texi: Document -fallow-argument-mismatch.
* lang.opt: Add -fallow-argument-mismatch.

2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91473
* gfortran.dg/used_before_typed_4.f90: Change warning to error.
* gfortran.dg/argument_checking_20.f90: New test.

From-SVN: r274937

5 years agocompiler: generalize cleanup of unresolved placeholder pointer types
Ian Lance Taylor [Mon, 26 Aug 2019 19:55:41 +0000 (19:55 +0000)]
compiler: generalize cleanup of unresolved placeholder pointer types

    This change extends the work in https://golang.org/cl/51131 to include
    placeholder pointer types created for Go function types, which can
    also be left dangling/unresolved in some instances. This fixes an
    assert in Llvm_backend::materializeComposite.

    Test case can be found in https://golang.org/cl/191743.

    Updates golang/go#33020.

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

From-SVN: r274935

5 years agoi386.c (emit_i387_cw_initialization): Fix masking operand value.
Uros Bizjak [Mon, 26 Aug 2019 19:18:30 +0000 (21:18 +0200)]
i386.c (emit_i387_cw_initialization): Fix masking operand value.

* config/i386/i386.c (emit_i387_cw_initialization)
<case I387_CW_ROUNDEVEN>: Fix masking operand value.

From-SVN: r274934

5 years agoPR tree-optimization/83431 - -Wformat-truncation may incorrectly report truncation
Martin Sebor [Mon, 26 Aug 2019 18:29:45 +0000 (18:29 +0000)]
PR tree-optimization/83431 - -Wformat-truncation may incorrectly report truncation

gcc/ChangeLog:

PR c++/83431
* gimple-ssa-sprintf.c (pass_data_sprintf_length): Remove object.
(sprintf_dom_walker): Remove class.
(get_int_range): Make argument const.
(directive::fmtfunc, directive::set_precision): Same.
(format_none): Same.
(build_intmax_type_nodes): Same.
(adjust_range_for_overflow): Same.
(format_floating): Same.
(format_character): Same.
(format_string): Same.
(format_plain): Same.
(get_int_range): Cast away constness.
(format_integer): Same.
(get_string_length): Call get_range_strlen_dynamic.  Handle
null lendata.maxbound.
(should_warn_p): Adjust argument scope qualifier.
(maybe_warn): Same.
(format_directive): Same.
(parse_directive): Same.
(is_call_safe): Same.
(try_substitute_return_value): Same.
(sprintf_dom_walker::handle_printf_call): Rename...
(handle_printf_call): ...to this.  Initialize target to host charmap
here instead of in pass_sprintf_length::execute.
(struct call_info): Make global.
(sprintf_dom_walker::compute_format_length): Make global.
(sprintf_dom_walker::handle_gimple_call): Same.
* passes.def (pass_sprintf_length): Replace with pass_strlen.
* print-rtl.c (print_pattern): Reduce the number of spaces to
avoid -Wformat-truncation.
* tree-pass.h (make_pass_warn_printf): New function.
* tree-ssa-strlen.c (strlen_optimize): New variable.
(get_string_length): Add comments.
(get_range_strlen_dynamic): New function.
(check_and_optimize_call): New function.
(handle_integral_assign): New function.
(strlen_check_and_optimize_stmt): Factor code out into
strlen_check_and_optimize_call and handle_integral_assign.
(strlen_dom_walker::evrp): New member.
(strlen_dom_walker::before_dom_children): Use evrp member.
(strlen_dom_walker::after_dom_children): Use evrp member.
(printf_strlen_execute): New function.
(pass_strlen::gate): Update to handle printf calls.
(dump_strlen_info): New function.
(pass_data_warn_printf): New variable.
(pass_warn_printf): New class.
* tree-ssa-strlen.h (get_range_strlen_dynamic): Declare.
(handle_printf_call): Same.
* tree-vrp.c (value_range_base::type): Adjust assertion.
* vr-values.c (vr_values::update_value_range): Use type of the first
argument rather than the second.

gcc/testsuite/ChangeLog:

PR c++/83431
* gcc.dg/strlenopt-63.c: New test.
* gcc.dg/pr79538.c: Adjust text of expected warning.
* gcc.dg/pr81292-1.c: Adjust pass name.
* gcc.dg/pr81292-2.c: Same.
* gcc.dg/pr81703.c: Same.
* gcc.dg/strcmpopt_2.c: Same.
* gcc.dg/strcmpopt_3.c: Same.
* gcc.dg/strcmpopt_4.c: Same.
* gcc.dg/strlenopt-1.c: Same.
* gcc.dg/strlenopt-10.c: Same.
* gcc.dg/strlenopt-11.c: Same.
* gcc.dg/strlenopt-13.c: Same.
* gcc.dg/strlenopt-14g.c: Same.
* gcc.dg/strlenopt-14gf.c: Same.
* gcc.dg/strlenopt-15.c: Same.
* gcc.dg/strlenopt-16g.c: Same.
* gcc.dg/strlenopt-17g.c: Same.
* gcc.dg/strlenopt-18g.c: Same.
* gcc.dg/strlenopt-19.c: Same.
* gcc.dg/strlenopt-1f.c: Same.
* gcc.dg/strlenopt-2.c: Same.
* gcc.dg/strlenopt-20.c: Same.
* gcc.dg/strlenopt-21.c: Same.
* gcc.dg/strlenopt-22.c: Same.
* gcc.dg/strlenopt-22g.c: Same.
* gcc.dg/strlenopt-24.c: Same.
* gcc.dg/strlenopt-25.c: Same.
* gcc.dg/strlenopt-26.c: Same.
* gcc.dg/strlenopt-27.c: Same.
* gcc.dg/strlenopt-28.c: Same.
* gcc.dg/strlenopt-29.c: Same.
* gcc.dg/strlenopt-2f.c: Same.
* gcc.dg/strlenopt-3.c: Same.
* gcc.dg/strlenopt-30.c: Same.
* gcc.dg/strlenopt-31g.c: Same.
* gcc.dg/strlenopt-32.c: Same.
* gcc.dg/strlenopt-33.c: Same.
* gcc.dg/strlenopt-33g.c: Same.
* gcc.dg/strlenopt-34.c: Same.
* gcc.dg/strlenopt-35.c: Same.
* gcc.dg/strlenopt-4.c: Same.
* gcc.dg/strlenopt-48.c: Same.
* gcc.dg/strlenopt-49.c: Same.
* gcc.dg/strlenopt-4g.c: Same.
* gcc.dg/strlenopt-4gf.c: Same.
* gcc.dg/strlenopt-5.c: Same.
* gcc.dg/strlenopt-50.c: Same.
* gcc.dg/strlenopt-51.c: Same.
* gcc.dg/strlenopt-52.c: Same.
* gcc.dg/strlenopt-53.c: Same.
* gcc.dg/strlenopt-54.c: Same.
* gcc.dg/strlenopt-55.c: Same.
* gcc.dg/strlenopt-56.c: Same.
* gcc.dg/strlenopt-6.c: Same.
* gcc.dg/strlenopt-61.c: Same.
* gcc.dg/strlenopt-7.c: Same.
* gcc.dg/strlenopt-8.c: Same.
* gcc.dg/strlenopt-9.c: Same.
* gcc.dg/strlenopt.h (snprintf, snprintf): Declare.
* gcc.dg/tree-ssa/builtin-snprintf-6.c: New test.
* gcc.dg/tree-ssa/builtin-snprintf-7.c: New test.
* gcc.dg/tree-ssa/builtin-snprintf-8.c: New test.
* gcc.dg/tree-ssa/builtin-snprintf-9.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-21.c: New test.
* gcc.dg/tree-ssa/dump-4.c: New test.
* gcc.dg/tree-ssa/pr83501.c: Adjust pass name.

From-SVN: r274933

5 years ago* decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P.
Jason Merrill [Mon, 26 Aug 2019 18:03:26 +0000 (14:03 -0400)]
* decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P.

From-SVN: r274932

5 years ago* ChangeLog: Fix roundeven entry.
Uros Bizjak [Mon, 26 Aug 2019 15:29:28 +0000 (17:29 +0200)]
* ChangeLog: Fix roundeven entry.

From-SVN: r274931

5 years agoPR c++/91545 - ICE in constexpr store evaluation.
Marek Polacek [Mon, 26 Aug 2019 14:39:08 +0000 (14:39 +0000)]
PR c++/91545 - ICE in constexpr store evaluation.

* constexpr.c (cxx_eval_store_expression): Check FIELD_DECL instead
of DECL_P.

* g++.dg/cpp0x/pr91545.C: New test.

From-SVN: r274930

5 years agoi386-features.c (general_remove_non_convertible_regs): Remove.
Richard Biener [Mon, 26 Aug 2019 13:55:46 +0000 (13:55 +0000)]
i386-features.c (general_remove_non_convertible_regs): Remove.

2019-08-26  Richard Biener  <rguenther@suse.de>

* config/i386/i386-features.c (general_remove_non_convertible_regs):
Remove.
(convert_scalars_to_vector): Do not call it.

From-SVN: r274929

5 years agoi386: Roundeven expansion for SSE4.1+
Tejas Joshi [Mon, 26 Aug 2019 12:41:59 +0000 (12:41 +0000)]
i386: Roundeven expansion for SSE4.1+

gcc/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
            Uros Bizjak  <ubizjak@gmail.com>

* builtins.c (mathfn_built_in_2): Change CASE_MATHFN to
CASE_MATHFN_FLOATN for roundeven.
* config/i386/i386.c (ix86_i387_mode_needed): Add case
I387_ROUNDEVEN.
(ix86_mode_needed): Likewise.
(ix86_mode_after): Likewise.
(ix86_mode_entry): Likewise.
(ix86_mode_exit): Likewise.
(ix86_emit_mode_set): Likewise.
(emit_i387_cw_initialization): Add case I387_CW_ROUNDEVEN.
* config/i386/i386.h (ix86_stack_slot): Add SLOT_CW_ROUNDEVEN.
(ix86_entry): Add I387_ROUNDEVEN.
(avx_u128_state): Add I387_CW_ANY.
* config/i386/i386.md: Define UNSPEC_FRNDINT_ROUNDEVEN.
(define_int_iterator): Likewise.
(define_int_attr): Likewise for rounding_insn, rounding and ROUNDING.
(define_constant): Define ROUND_ROUNDEVEN mode.
(define_attr): Add roundeven mode for i387_cw.
(<rouding_insn><mode>2): Add condition for ROUND_ROUNDEVEN.
* internal-fn.def (ROUNDEVEN): New builtin function.
* optabs.def (roundeven_optab): New optab.

gcc/testsuite/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

* gcc.target/i386/sse4_1-round-roundeven-1.c: New test.
* gcc.target/i386/sse4_1-round-roundeven-2.c: New test.

Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r274928

5 years agoBuiltin function roundeven folding implementation
Tejas Joshi [Mon, 26 Aug 2019 12:32:29 +0000 (12:32 +0000)]
Builtin function roundeven folding implementation

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

        * builtins.c (mathfn_built_in_2): Added CASE_MATHFN_FLOATN
        for ROUNDEVEN.
        * builtins.def: Added function definitions for roundeven function
        variants.
        * fold-const-call.c (fold_const_call_ss): Added case for roundeven
        function call.  Adjust condition for floor, ceil, trunc and round.
        * fold-const.c (negate_mathfn_p): Added case for roundeven function.
        (tree_call_nonnegative_warnv_p): Added case for roundeven function.
        (integer_valued_real_call_p): Added case for roundeven function.
        * real.c (is_even): New function. Returns true if real number is even,
        otherwise returns false.
        (is_halfway_below): New function. Returns true if real number is
        halfway between two integers, else return false.
        (real_roundeven): New function. Round real number to nearest integer,
        rounding halfway cases towards even.
        * real.h (real_value): Added descriptive comments.  Added function
        declaration for roundeven function.
        * doc/extend.texi (Other Builtins): List roundeven variants among
        functions which can be handled as builtins.

gcc/testsuite/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

        * gcc.dg/torture/builtin-round-roundeven.c: New test.
        * gcc.dg/torture/builtin-round-roundevenf128.c: New test.

From-SVN: r274927

5 years agore PR target/91522 (STV is slow)
Richard Biener [Mon, 26 Aug 2019 10:35:59 +0000 (10:35 +0000)]
re PR target/91522 (STV is slow)

2019-08-26  Richard Biener  <rguenther@suse.de>

PR target/91522
PR target/91527
* config/i386/i386-features.h (general_scalar_chain::defs_map):
New member.
(general_scalar_chain::replace_with_subreg): Remove.
(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
(general_scalar_chain::convert_reg): Adjust signature.
* config/i386/i386-features.c (scalar_chain::add_insn): Do not
iterate over all defs of a reg.
(general_scalar_chain::replace_with_subreg): Remove.
(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
(general_scalar_chain::make_vector_copies): Populate defs_map,
place copy only after defs that are used as vectors in the chain.
(general_scalar_chain::convert_reg): Emit a copy for a specific
def in a specific instruction.
(general_scalar_chain::convert_op): All reg uses are converted here.
(general_scalar_chain::convert_insn): Emit copies for scalar
uses of defs here.  Replace uses with the copies we created.
Replace and convert the def.  Adjust REG_DEAD notes, remove
REG_EQUIV/EQUAL notes.
(general_scalar_chain::convert_registers): Only handle copies
into the chain here.

From-SVN: r274926

5 years ago[PATCH 2/2] Add simplify rule for wrapped addition.
Robin Dapp [Mon, 26 Aug 2019 10:24:44 +0000 (10:24 +0000)]
[PATCH 2/2] Add simplify rule for wrapped addition.

Add the transform (T)(A) + CST -> (T)(A + CST).  This enables vrp to
simplify sequences like

_2 = a_7 - 1;
_3 = (long unsigned int) _2;
_5 = _3 + 1

that ivopts creates.

--

gcc/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * match.pd: Add (T)(A) + CST -> (T)(A + CST).

gcc/testsuite/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * gcc.dg/tree-ssa/copy-headers-5.c: Do not run vrp pass.
        * gcc.dg/tree-ssa/copy-headers-7.c: Do not run vrp pass.
        * gcc.dg/tree-ssa/loop-15.c: Remove XFAIL.
        * gcc.dg/tree-ssa/pr23744.c: Change search pattern.
        * gcc.dg/wrapped-binop-simplify.c: New test.

From-SVN: r274925

5 years ago[PATCH 1/2] Allow folding all statements.
Robin Dapp [Mon, 26 Aug 2019 10:18:24 +0000 (10:18 +0000)]
[PATCH 1/2] Allow folding all statements.

This patch allows users of the substitute_and_fold_engine to
enable folding all statements.  It is now enabled for VRP which
is needed for the match.pd pattern in patch 2/2.

The loop versioning pass was missing one case when
deconstructing addresses that would only be triggered after
this patch for me:
It could handle addition and subsequent convert/nop but not
a convert/nop directly.  This would cause the hash to be
calculated differently and, in turn, cause the pass to miss
a versioning opportunity.  Fixed this by adding the missing
case.

--

gcc/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * gimple-loop-versioning.cc (loop_versioning::record_address_fragment):
        Add nop_convert case.
        * tree-ssa-propagate.c (substitute_and_fold_dom_walker::before_dom_children):
        Fold all statements if requested.
        * tree-ssa-propagate.h (class substitute_and_fold_engine):
        Allow to fold all statements.
        * tree-vrp.c (class vrp_folder):
        Let substitute_and_fold_engine fold all statements.

From-SVN: r274923

5 years agore PR c/91526 (Unnecessary SSE and other instructions generated when compiling in...
Richard Biener [Mon, 26 Aug 2019 09:29:07 +0000 (09:29 +0000)]
re PR c/91526 (Unnecessary SSE and other instructions generated when compiling in C mode (vs. C++ mode))

2019-08-26  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91526
* passes.def: Note that after late FRE we do TODO_update_address_taken.
* tree-ssa-sccvn.c (pass_fre::execute): In late mode schedule
TODO_update_address_taken.

From-SVN: r274922

5 years agoRISC-V: Add testcase for testing li pseudo instruction
Kito Cheng [Mon, 26 Aug 2019 02:15:47 +0000 (02:15 +0000)]
RISC-V: Add testcase for testing li pseudo instruction

gcc/testsuite/ChangeLog:

gcc.target/riscv/li.c: New test.

From-SVN: r274920

5 years agoDaily bump.
GCC Administrator [Mon, 26 Aug 2019 00:16:48 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274919

5 years agogmm_malloc.h: Only use <errno.h> and errno if __STDC_HOSTED__.
Gerald Pfeifer [Sun, 25 Aug 2019 22:25:23 +0000 (22:25 +0000)]
gmm_malloc.h: Only use <errno.h> and errno if __STDC_HOSTED__.

* config/i386/gmm_malloc.h: Only use <errno.h> and errno if
__STDC_HOSTED__.

From-SVN: r274915

5 years agoDaily bump.
GCC Administrator [Sun, 25 Aug 2019 00:16:50 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274907

5 years ago[C++ PATCH] vfunc overrider simplification
Nathan Sidwell [Sat, 24 Aug 2019 22:44:06 +0000 (22:44 +0000)]
[C++ PATCH] vfunc overrider simplification

https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01674.html
cp/
* class.c (check_for_overrides): Conversion operators need
checking too.

testsuite/
* g++.dg/inherit/virtual14.C: New.

From-SVN: r274903

5 years agore PR fortran/91390 (treatment of extra parameter in a subroutine call)
Thomas Koenig [Sat, 24 Aug 2019 21:12:45 +0000 (21:12 +0000)]
re PR fortran/91390 (treatment of extra parameter in a subroutine call)

2019-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91519
* frontend-passes.c (check_externals_procedure): New
function. If a procedure is not in the translation unit, create
an "interface" for it, including its formal arguments.
(check_externals_code): Use check_externals_procedure for common
code with check_externals_expr.
(check_externals_expr): Vice versa.
* gfortran.h (gfc_get_formal_from_actual-arglist): New prototype.
(gfc_compare_actual_formal): New prototype.
* interface.c (compare_actual_formal): Rename to
(gfc_compare_actual_formal): New function, make global.
(gfc_get_formal_from_actual_arglist): Make global, and move here from
* trans-types.c (get_formal_from_actual_arglist): Remove here.
(gfc_get_function_type): Use gfc_get_formal_from_actual_arglist.

2019-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91519
* gfortran.dg/bessel_3.f90: Add type mismatch errors.
* gfortran.dg/coarray_7.f90: Rename subroutines to avoid
additional errors.
* gfortran.dg/g77/20010519-1.f: Add -std=legacy. Remove
warnings for ASSIGN. Add warnings for type mismatch.
* gfortran.dg/goacc/acc_on_device-1.f95: Add -std=legacy.
Add catch-all warning.
* gfortran.dg/internal_pack_9.f90: Rename subroutine to
avoid type error.
* gfortran.dg/internal_pack_9.f90: Add -std=legacy. Add
warnings for type mismatch.
* gfortran.dg/pr39937.f: Add -std=legacy and type warnings. Move
here from
* gfortran.fortran-torture/compile/pr39937.f: Move to
gfortran.dg.

From-SVN: r274902

5 years agosemantics.c (finish_switch_cond): Improve error message location.
Paolo Carlini [Sat, 24 Aug 2019 19:39:44 +0000 (19:39 +0000)]
semantics.c (finish_switch_cond): Improve error message location.

/cp
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

* semantics.c (finish_switch_cond): Improve error message location.

/testsuite
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/conversion/simd4.C: Test all the locations.

From-SVN: r274901

5 years agoDaily bump.
GCC Administrator [Sat, 24 Aug 2019 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274898

5 years agoFix handling of namespace-scope undeduced auto decls.
Jason Merrill [Fri, 23 Aug 2019 23:29:16 +0000 (19:29 -0400)]
Fix handling of namespace-scope undeduced auto decls.

* decl2.c (decl_dependent_p): New.
(mark_used): Check it instead of just processing_template_decl.

From-SVN: r274894

5 years ago* parser.c (cp_parser_nested_name_specifier_opt): Avoid redundant error.
Jason Merrill [Fri, 23 Aug 2019 23:29:10 +0000 (19:29 -0400)]
* parser.c (cp_parser_nested_name_specifier_opt): Avoid redundant error.

From-SVN: r274893

5 years agoPR c++/91521 - wrong error with operator->.
Marek Polacek [Fri, 23 Aug 2019 23:24:46 +0000 (23:24 +0000)]
PR c++/91521 - wrong error with operator->.

* decl.c (grokdeclarator): Return error_mark_node for an invalid
trailing return type.

* g++.dg/parse/operator8.C: New test.

From-SVN: r274891

5 years agocompiler: record pointer var values to remove write barriers
Ian Lance Taylor [Fri, 23 Aug 2019 22:38:58 +0000 (22:38 +0000)]
compiler: record pointer var values to remove write barriers

    Record when a local pointer variable is set to a value such that
    indirecting through the pointer does not require a write barrier.  Use
    that to eliminate write barriers when indirecting through that local
    pointer variable.  Only keep this information per-block, so it's not
    all that applicable.

    This reduces the number of write barriers generated when compiling the
    runtime package from 553 to 524.

    The point of this is to eliminate a bad write barrier in the bytes
    function in runtime/print.go.  Mark that function nowritebarrier so
    that the problem does not recur.

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

From-SVN: r274890

5 years agors6000: New darn testcase (PR91481)
Segher Boessenkool [Fri, 23 Aug 2019 22:19:40 +0000 (00:19 +0200)]
rs6000: New darn testcase (PR91481)

We used to implement darn with unspecs, not unspec_volatiles, which
means two darn instructions could be CSEd together.

This testcase tests it by adding together four random numbers.  If all
is well that means we get four darn instructions, because such a small
loop is unrolled fine at -O2 already.  If things go bad, combine will
combine it all to one darn and a shift left by two.

gcc/testsuite/
PR target/91481
* gcc.target/powerpc/darn-3.c: New testcase.

From-SVN: r274889

5 years agoPR c++/79817 - attribute deprecated on namespace.
Marek Polacek [Fri, 23 Aug 2019 22:04:32 +0000 (22:04 +0000)]
PR c++/79817 - attribute deprecated on namespace.

* cp-tree.h (cp_warn_deprecated_use_scopes): Declare.
* decl.c (grokdeclarator): Call cp_warn_deprecated_use_scopes.
(type_is_deprecated): Likewise.
* decl2.c (cp_warn_deprecated_use_scopes): New function.
* name-lookup.c (handle_namespace_attrs): Handle attribute deprecated.
* parser.c (cp_parser_namespace_alias_definition): Call
cp_warn_deprecated_use_scopes.
(cp_parser_using_declaration): Likewise.
(cp_parser_using_directive): Likewise.
* semantics.c (finish_id_expression_1): Likewise.

* g++.dg/cpp0x/attributes-namespace1.C: New test.
* g++.dg/cpp0x/attributes-namespace2.C: New test.
* g++.dg/cpp0x/attributes-namespace3.C: New test.
* g++.dg/cpp0x/attributes-namespace4.C: New test.
* g++.dg/cpp0x/attributes-namespace5.C: New test.
* g++.dg/cpp1z/namespace-attribs.C: Adjust.
* g++.dg/cpp1z/namespace-attribs2.C: Adjust.

From-SVN: r274888

5 years agoMakefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
Michael Forney [Fri, 23 Aug 2019 21:37:22 +0000 (21:37 +0000)]
Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.

* Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
* Makefile.in: Regenerate.

From-SVN: r274887

5 years agoFix libstdc++ lstat missing return type for Windows target.
Joseph Myers [Fri, 23 Aug 2019 21:04:33 +0000 (22:04 +0100)]
Fix libstdc++ lstat missing return type for Windows target.

Building for i686-mingw32 target (with some local changes) produced an
error

error: ISO C++ forbids declaration of 'lstat' with no type [-fpermissive]

in libstdc++-v3/src/filesystem/ops-common.h.  This patch adds the
missing return type.  OK to commit (trunk and GCC 9 branch)?

Note 1: I haven't run the testsuite with this patch, but it fixes the
build failure I see (in sources with other local changes).

Note 2: I don't know why this hasn't produced build failures for other
people, but the missing return type looks wrong in any case even if
other local changes are for some reason needed for it to produce an
error.

* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
(std::filesystem::__gnu_posix::lstat): Add return type.

From-SVN: r274885

5 years ago* zh_CN.po: Update.
Joseph Myers [Fri, 23 Aug 2019 19:47:30 +0000 (20:47 +0100)]
* zh_CN.po: Update.

From-SVN: r274868

5 years ago[C++ PATCH] vfunc overrider simplification
Nathan Sidwell [Fri, 23 Aug 2019 19:26:04 +0000 (19:26 +0000)]
[C++ PATCH] vfunc overrider simplification

https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01674.html
* class.c (check_for_override): Checking IDENTIFIER_VIRTUAL_P is
sufficient, reorder DECL_OVERRIDE_P check.

From-SVN: r274867

5 years agomips.md (mips_get_fcsr, [...]): Use SI machine mode for unspec_volatile operand.
Mihailo Stojanovic [Fri, 23 Aug 2019 19:04:56 +0000 (19:04 +0000)]
mips.md (mips_get_fcsr, [...]): Use SI machine mode for unspec_volatile operand.

        * config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
        machine mode for unspec_volatile operand.

        * gcc.target/mips/get-fcsr-3.c: New test.

From-SVN: r274863

5 years agopr78973.c: Make functions static to avoid failures with -fpic
Martin Sebor [Fri, 23 Aug 2019 16:16:42 +0000 (16:16 +0000)]
pr78973.c: Make functions static to avoid failures with -fpic

gcc/testsuite/ChangeLog:

* gcc.dg/pr78973.c: Make functions static to avoid failures
with -fpic
* gcc.dg/pr78973-2.c: Same.

From-SVN: r274860

5 years agoWarray-bounds-36.c: Make functions static to avoid failures with -fpic.
Martin Sebor [Fri, 23 Aug 2019 15:57:46 +0000 (15:57 +0000)]
Warray-bounds-36.c: Make functions static to avoid failures with -fpic.

gcc/testsuite/ChangeLog:

* gcc.dg/Warray-bounds-36.c: Make functions static to avoid failures
with -fpic.
* gcc.dg/Warray-bounds-41.c: Same.

From-SVN: r274859

5 years ago[ARM] Deprecate -mneon-for-64bits
Wilco Dijkstra [Fri, 23 Aug 2019 14:53:45 +0000 (14:53 +0000)]
[ARM] Deprecate -mneon-for-64bits

Deprecate -mneon-for-64bits since it no longer has any effect after
the DImode codegen improvements.

    gcc/
* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
(prefer_neon_for_64bits): Remove.
* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
(tune_params): Remove PREF_NEON_64_FALSE uses.
(arm_option_override): Remove prefer_neon selection code.
(arm_print_tune_info): Remove prefer_neon_for_64bits.
* gcc/config/arm/arm-protos.h (tune_params): Remove
prefer_neon_for_64bits.
(prefer_neon_for_64bits): Remove.

From-SVN: r274858

5 years agoPDF Layout
Mark Eggleston [Fri, 23 Aug 2019 13:03:26 +0000 (13:03 +0000)]
PDF Layout

Prevent lines overlapping the right hand margin, this occurred for
references in the "See also:" section, it is prevented by placing
references on their own lines. Two example programs overlapped the
right hand margin: fixed by adjusting the position and of the comments.
Some tables had overlapping colums: the column widths were adjusted
accordingly.

From-SVN: r274857

5 years ago[PATCH, c-family] Fix a PCH thinko (and thus PR61250).
Iain Sandoe [Fri, 23 Aug 2019 12:41:39 +0000 (12:41 +0000)]
[PATCH, c-family] Fix a PCH thinko (and thus PR61250).

When we are parsing a source file, the very first token might
be a PRAGMA_GCC_PCH_PREPROCESS.  This indicates that we are going
read in a PCH file (named as the value of the pragma).  If we don't
see this pragma, then we know that it's OK to release any resources
that the host might have set aside for the PCH file.

This fixes a thinko in the current implementation, in that the decision
to release resources was happening unconditionally right after the first
token is extracted but before it's been checked or acted upon.

This leads to the pch bug (seen on Darwin), because we actually do release
resources - which are subsequently (reasonably) assumed to be available
when reading a PCH file.  We then get random crashes or hangs depending
on the interaction between unmmap and malloc.

The bug is present everywhere but doesn't show on (say) Linux, since
the release of PCH resources is a NOP there.

This effects all the c-family front ends, because they all use c_lex_with_flags ()
to implement this.

The solution is to check for the PRAGMA_GCC_PCH_PREPROCESS and only call
c_common_no_more_pch () when that is not the first token.

A secondary effect of the collection is that the name of the PCH file
can be collected during the ggc_pch_read() reset of state.  Therefore
we should issue any diagnostic that might name the file before the
collections are triggered.

gcc/c-family/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

PR pch/61250
* c-lex.c (c_lex_with_flags):  Don't call
c_common_no_more_pch () from here.

gcc/c/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

PR pch/61250
* c-parser.c (c_parse_file): Call c_common_no_more_pch ()
after determining that the first token is not
PRAGMA_GCC_PCH_PREPROCESS.

gcc/cp/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

PR pch/61250
* parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
after determining that the first token is not
PRAGMA_GCC_PCH_PREPROCESS.

gcc/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

PR pch/61250
* ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
and issue any diagnostics needed before collecting the pre-PCH
state.

From-SVN: r274856

5 years agore PR middle-end/91283 (gcc.dg/torture/c99-contract-1.c FAILs)
Jakub Jelinek [Fri, 23 Aug 2019 11:37:29 +0000 (13:37 +0200)]
re PR middle-end/91283 (gcc.dg/torture/c99-contract-1.c FAILs)

PR middle-end/91283
* common.opt (fexcess-precision=): Add Optimization flag.  Use
flag_excess_precision variable instead of
flag_excess_precision_cmdline.
* flags.h (class target_flag_state): Remove x_flag_excess_precision
member.
(flag_excess_precision): Don't define.
* langhooks.c (lhd_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline.  Remove comment.
* opts.c (set_fast_math_flags): Use frontend_set_flag_excess_precision
and x_flag_excess_precision instead of
frontend_set_flag_excess_precision_cmdline and
x_flag_excess_precision_cmdline.
(fast_math_flags_set_p): Use x_flag_excess_precision instead of
x_flag_excess_precision_cmdline.
* toplev.c (init_excess_precision): Remove.
(lang_dependent_init_target): Don't call it.
ada/
* gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
brig/
* brig-lang.c (brig_langhook_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
c-family/
* c-common.c (c_ts18661_flt_eval_method): Use flag_excess_precision
instead of flag_excess_precision_cmdline.
* c-cppbuiltin.c (c_cpp_flt_eval_method_iec_559): Likewise.
* c-opts.c (c_common_post_options): Likewise.
d/
* d-lang.cc (d_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline.
fortran/
* options.c (gfc_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline.  Remove comment.
go/
* go-lang.c (go_langhook_post_options): Set flag_excess_precision
instead of flag_excess_precision_cmdline.
lto/
* lto-lang.c (lto_post_options): Set flag_excess_precision instead of
flag_excess_precision_cmdline.  Remove comment.

From-SVN: r274850

5 years agoMake -flto=jobserver parallel again.
Martin Liska [Fri, 23 Aug 2019 11:27:12 +0000 (13:27 +0200)]
Make -flto=jobserver parallel again.

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

* lto-wrapper.c (run_gcc): When setting jobserver
set also parallel to 1.  This was done so before r273908.

From-SVN: r274849

5 years agoIntrinsic documentation layout changes.
Mark Eggleston [Fri, 23 Aug 2019 10:16:47 +0000 (10:16 +0000)]
Intrinsic documentation layout changes.

Documentation of all intrinsics now have their sections in a consistent
order. Empty sections have been removed. Stray words have been removed.
Text in a wrong section has been moved.  A missing standard was inserted.

From-SVN: r274848

5 years agoABS Documentation fix
Mark Eggleston [Fri, 23 Aug 2019 09:31:48 +0000 (09:31 +0000)]
ABS Documentation fix

The specific intrinsics ZABS and CDABS return REAL(8) not COMPLEX(8).

From-SVN: r274847

5 years agore PR target/91306 ([MSP430] libgcc/crtstuff.c: Alignment of frame_dummy .init_array...
Jozef Lawrynowicz [Fri, 23 Aug 2019 09:21:26 +0000 (09:21 +0000)]
re PR target/91306 ([MSP430] libgcc/crtstuff.c: Alignment of frame_dummy .init_array entry is too big)

2019-08-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR target/91306
* crtstuff.c (__CTOR_LIST__): Align to the "__alignof__" the array
element type, instead of "sizeof" the element type.
(__DTOR_LIST__): Likewise.
(__TMC_LIST__): Likewise.
(__do_global_dtors_aux_fini_array_entry): Likewise.
(__frame_dummy_init_array_entry): Likewise.
(__CTOR_END__): Likewise.
(__DTOR_END__): Likweise.
(__FRAME_END__): Likewise.
(__TMC_END__): Likewise.

From-SVN: r274846

5 years ago[Arm] Add support for missing CPUs
Dennis Zhang [Fri, 23 Aug 2019 08:25:44 +0000 (08:25 +0000)]
[Arm] Add support for missing CPUs

This patch adds '-mcpu' options for following CPUs:
Cortex-M35P, Cortex-A77, Cortex-A76AE.

Related specifications are as following:
https://developer.arm.com/ip-products/processors/cortex-m
https://developer.arm.com/ip-products/processors/cortex-a

2019-08-23  Dennis Zhang  <dennis.zhang@arm.com>

* config/arm/arm-cpus.in (cortex-m35p): New entry.
(cortex-a76ae): Likewise.
(cortex-a77): Likewise
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Likewise.
* doc/invoke.texi (ARM Options): Document cortex-m35p, cortx-a76ae,
cortex-a77 CPU options.

From-SVN: r274845

5 years agoClean up value-prof.c a bit.
Martin Liska [Fri, 23 Aug 2019 07:48:34 +0000 (09:48 +0200)]
Clean up value-prof.c a bit.

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

* profile.c (instrument_values): Do not set
0 as last argument.
* tree-profile.c (gimple_gen_interval_profiler): Remove
last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.
* value-prof.c (dump_histogram_value): Use default
in switch statement instead of HIST_TYPE_MAX.
(stream_in_histogram_value): Likewise.
(gimple_duplicate_stmt_histograms): Do not
use NULL for implicitly set arguments.
(gimple_divmod_values_to_profile): Do not use
reserve+quick_push.
(gimple_indirect_call_to_profile): Likewise.
(gimple_find_values_to_profile): Use implicit
function call arguments.
* value-prof.h (gimple_alloc_histogram_value):
Set default values.
(gimple_gen_interval_profiler): Remove last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.

From-SVN: r274844

5 years agoDaily bump.
GCC Administrator [Fri, 23 Aug 2019 00:16:54 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274843

5 years agoPR c++/91304 - prefix attributes ignored in condition.
Marek Polacek [Fri, 23 Aug 2019 00:06:25 +0000 (00:06 +0000)]
PR c++/91304 - prefix attributes ignored in condition.

* parser.c (cp_parser_condition): Handle prefix attributes.

* g++.dg/cpp0x/gen-attrs-70.C: New test.

From-SVN: r274839

5 years agointrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in co_broadcast, co_max, co_mi...
Steven G. Kargl [Thu, 22 Aug 2019 23:50:57 +0000 (23:50 +0000)]
intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in co_broadcast, co_max, co_min, co_reduce, and co_sum.

2019-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>

* intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in
co_broadcast, co_max, co_min, co_reduce, and  co_sum.

From-SVN: r274838

5 years agoPR middle-end/91490 - bogus argument missing terminating nul warning on strlen of...
Martin Sebor [Thu, 22 Aug 2019 23:09:26 +0000 (23:09 +0000)]
PR middle-end/91490 - bogus argument missing terminating nul warning on strlen of a flexible array member

gcc/c-family/ChangeLog:

PR middle-end/91490
* c-common.c (braced_list_to_string): Add argument and overload.
Handle flexible length arrays and unions.

gcc/testsuite/ChangeLog:

PR middle-end/91490
* c-c++-common/Warray-bounds-7.c: New test.
* gcc.dg/Warray-bounds-39.c: Expect either -Warray-bounds or
-Wstringop-overflow.
* gcc.dg/strlenopt-78.c: New test.

gcc/ChangeLog:

PR middle-end/91490
* builtins.c (c_strlen): Rename argument and introduce new local.
Set no-warning bit on original argument.
* expr.c (string_constant): Pass argument type to fold_ctor_reference.
Fold empty and zero constructors into empty strings.
* gimple-fold.c (fold_nonarray_ctor_reference): Return a STRING_CST
for missing initializers.
* tree.c (build_string_literal): Handle optional argument.
* tree.h (build_string_literal): Add defaulted argument.
* gimple-ssa-warn-restrict.c (maybe_diag_access_bounds): Check
no-warning bit on original expression.

From-SVN: r274837

5 years agoFix gcc.target/i386/minmax-4.c etc. on 32-bit Solaris/x86
Rainer Orth [Thu, 22 Aug 2019 21:55:19 +0000 (21:55 +0000)]
Fix gcc.target/i386/minmax-4.c etc. on 32-bit Solaris/x86

* gcc.target/i386/minmax-4.c: Add -mno-stackrealign to dg-options.
* gcc.target/i386/minmax-5.c: Likewise.
* gcc.target/i386/minmax-6.c: Likewise.
* gcc.target/i386/minmax-7.c: Likewise.
* gcc.target/i386/pr91154.c: Likewise.

From-SVN: r274836

5 years agors6000: Use unspec_volatile for darn (PR91481)
Segher Boessenkool [Thu, 22 Aug 2019 19:36:21 +0000 (21:36 +0200)]
rs6000: Use unspec_volatile for darn (PR91481)

Every call to darn should deliver a *new* random number; such calls
should not be CSEd together.  So they should be unspec_volatile, not
plain unspec.

PR target/91481
* config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
and UNSPEC_DARN_RAW.
(unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
UNSPECV_DARN_RAW.
(darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
(darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
(darn): Use an unspec_volatile, and UNSPECV_DARN.

From-SVN: r274835

5 years agors6000: Move various non-vector things out of altivec.md
Segher Boessenkool [Thu, 22 Aug 2019 19:33:38 +0000 (21:33 +0200)]
rs6000: Move various non-vector things out of altivec.md

* config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
* config/rs6000/rs6000.md (unspec): ... here.
* config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
cmpeqb, *cmpeqb_internal): Delete, move to...
* config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
*cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
cmpeqb, *cmpeqb_internal): ... here.

From-SVN: r274834

5 years agoc-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a FUNCTION_DECL...
Eric Botcazou [Thu, 22 Aug 2019 17:31:02 +0000 (17:31 +0000)]
c-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a FUNCTION_DECL to the right value in the presence of...

* c-parser.c (c_parser_declaration_or_fndef): Set DECL_ARGUMENTS of a
FUNCTION_DECL to the right value in the presence of nested declarators.

From-SVN: r274828

5 years ago[arm] Fix use of CRC32 intrinsics with Armv8-a and hard-float
Kyrylo Tkachov [Thu, 22 Aug 2019 15:55:39 +0000 (15:55 +0000)]
[arm] Fix use of CRC32 intrinsics with Armv8-a and hard-float

We currently have a nasty error when trying to use the __crc* intrinsics
with an -mfloat-abi=hard.
That is because the target pragma guarding them uses armv8-a+crc that
does not include fp by default.
So we get errors like:
error: '-mfloat-abi=hard': selected processor lacks an FPU

This patch fixes that by using an FP-enabled arch target pragma to guard
these intrinsics when floating-point is available.
That way both the softfloat and hardfloat variants work.

     * config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
     intrinsics if __ARM_FP.
     Use __ARM_FEATURE_CRC32 ifdef guard.

     * gcc.target/arm/acle/crc_hf_1.c: New test.

From-SVN: r274827

5 years ago[ARM] Remove remaining Neon DImode support
Wilco Dijkstra [Thu, 22 Aug 2019 15:19:58 +0000 (15:19 +0000)]
[ARM] Remove remaining Neon DImode support

Remove the remaining Neon adddi3, subdi3 and negdi2 patterns.  As a result
adddi3, subdi3 and negdi2 can now always be expanded early irrespectively of
whether Neon is available.  Also expand the extenddi patterns at the same
time.  Several Neon arch attributes are no longer used and removed.

Code generation is improved in all cases, saving another 400-500 instructions
from the PR77308 testcase (total improvement is over 1700 instructions with
-mcpu=cortex-a57 -O2).

Bootstrap & regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57

    gcc/
* config/arm/arm.md (neon_for_64bits): Remove.
(avoid_neon_for_64bits): Remove.
(arm_adddi3): Always split early.
(arm_subdi3): Always split early.
(negdi2): Remove Neon expansion.
(split zero_extend): Split before reload.
(split sign_extend): Split before reload.

From-SVN: r274825

5 years ago[ARM] Cleanup DImode shifts
Wilco Dijkstra [Thu, 22 Aug 2019 15:06:37 +0000 (15:06 +0000)]
[ARM] Cleanup DImode shifts

Like the logical operations, expand all shifts early rather than only
sometimes.  The Neon shift expansions are never emitted (not even with
-fneon-for-64bits), so they are not useful.  So all the late expansions
and Neon shift patterns can be removed, and shifts are more optimized
as a result.  Since some extend patterns use Neon DImode shifts, remove
the Neon extend variants and related splits.

A simple example now generates the same efficient code after this
patch with -mfpu=neon and -mfpu=vfp (previously just the fact of
having Neon enabled resulted inefficient code for no reason).

unsigned long long f(unsigned long long x, unsigned long long y)
{ return x & (y >> 33); }

Before:
strd    r4, r5, [sp, #-8]!
lsr     r4, r3, #1
mov     r5, #0
and     r1, r1, r5
and     r0, r0, r4
ldrd    r4, r5, [sp]
add     sp, sp, #8
bx      lr

After:
and     r0, r0, r3, lsr #1
mov     r1, #0
bx      lr

Bootstrap and regress OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57

    gcc/
* config/arm/iterators.md (qhs_extenddi_cstr): Update.
(qhs_extenddi_cstr): Likewise.
* config/arm/arm.md (ashldi3): Always expand early.
(ashlsi3): Likewise.
(ashrsi3): Likewise.
(zero_extend<mode>di2): Remove Neon variants.
(extend<mode>di2): Likewise.
* config/arm/neon.md (ashldi3_neon_noclobber): Remove.
(signed_shift_di3_neon): Likewise.
(unsigned_shift_di3_neon): Likewise.
(ashrdi3_neon_imm_noclobber): Likewise.
(lshrdi3_neon_imm_noclobber): Likewise.
(<shift>di3_neon): Likewise.
(split extend): Remove DI extend split patterns.

   gcc/testsuite/
* gcc.target/arm/neon-extend-1.c: Remove test.
* gcc.target/arm/neon-extend-2.c: Remove test.

From-SVN: r274824

5 years ago[ARM] Cleanup logical DImode operations
Wilco Dijkstra [Thu, 22 Aug 2019 14:52:24 +0000 (14:52 +0000)]
[ARM] Cleanup logical DImode operations

Cleanup the logical DImode operations since the current implementation is way
too complicated.  Thumb-1, Thumb-2, VFP/Neon and iwMMXt all work differently,
resulting in a bewildering number of expansions, patterns and splits across
several md files.  All this complexity is counterproductive and results in
inefficient code.

A much simpler approach is to split these operations early in the expander
so that optimizations and register allocation are applied on the 32-bit halves.
Codegeneration is unchanged on Thumb-1 and Arm/Thumb-2 without Neon or iwMMXt
(which already expand these instructions early).  With Neon these changes save
~1000 instructions from the PR77308 testcase, mostly by significantly reducing
register pressure and spilling.

Bootstrap OK on arm-none-linux-gnueabihf --with-cpu=cortex-a57

    gcc/
* config/arm/arm.md (split and/eor/ior): Remove Neon check.
(split not): Add DImode not splitter.
(anddi3): Remove pattern.
(anddi3_insn): Likewise.
(anddi_zesidi_di): Likewise.
(anddi_sesdi_di): Likewise.
(anddi_notdi_di): Likewise.
(anddi_notzesidi_di): Likewise.
(anddi_notsesidi_di): Likewise.
(iordi3): Likewise.
(iordi3_insn): Likewise.
(iordi_zesidi_di): Likewise.
(iordi_sesidi_di): Likewise.
(xordi3): Likewise.
(xordi3_insn): Likewise.
(xordi_sesidi_di): Likewise.
(xordi_zesidi_di): Likewise.
(one_cmpldi2): Likewise.
(one_cmpldi2_insn): Likewise.
* config/arm/constraints.md: Remove De, Df, Dg constraints.
* config/arm/iwmmxt.md (iwmmxt_iordi3): Remove general register
alternative.
(iwmmxt_xordi3): Likewise.
(iwmmxt_anddi3): Likewise.
* config/arm/neon.md (orndi3_neon): Remove pattern.
(anddi_notdi_di): Likewise.
* config/arm/predicates.md (arm_anddi_operand_neon): Remove.
(arm_iordi_operand_neon): Likewise.
(arm_xordi_operand_neon): Likewise.
* config/arm/thumb2.md(iordi_notdi_di): Remove pattern.
(iordi_notzesidi_di): Likewise.
(iordi_notdi_zesidi): Likewise.
(iordi_notsesidi_di): Likewise.

From-SVN: r274823

5 years ago[Arm] Add 16-bit thumb alternatives to iorsi3_compare0[_scratch]
Richard Earnshaw [Thu, 22 Aug 2019 14:40:52 +0000 (14:40 +0000)]
[Arm] Add 16-bit thumb alternatives to iorsi3_compare0[_scratch]

The iorsi3_compare0 and iorsi3_compare0_scratch patterns can make use
of the 16-bit thumb orrs instruction if suitable registers are
allocated.  This patch adds the alternative to allow this to happen.

* config/arm/arm.md (iorsi3_compare0): Add alternative for 16-bit thumb
insn.
(iorsi3_compare0_scratch): Likewise.

From-SVN: r274822

5 years ago[aarch64]: add intrinsics for vld1(q)_x4 and vst1(q)_x4
Sylvia Taylor [Thu, 22 Aug 2019 11:28:26 +0000 (11:28 +0000)]
[aarch64]: add intrinsics for vld1(q)_x4 and vst1(q)_x4

This patch adds the intrinsic functions for:
- vld1_<mode>_x4
- vst1_<mode>_x4
- vld1q_<mode>_x4
- vst1q_<mode>_x4

Bootstrapped and tested on aarch64-none-linux-gnu.

Committed on behalf of Sylvia Taylor.

2019-08-22  Sylvia Taylor  <sylvia.taylor@arm.com>

* config/aarch64/aarch64-simd-builtins.def:
(ld1x4): New.
(st1x4): Likewise.
* config/aarch64/aarch64-simd.md:
(aarch64_ld1x4<VALLDIF:mode>): New pattern.
(aarch64_st1x4<VALLDIF:mode>): Likewise.
(aarch64_ld1_x4_<mode>): Likewise.
(aarch64_st1_x4_<mode>): Likewise.
* config/aarch64/arm_neon.h:
(vld1_s8_x4): New function.
(vld1q_s8_x4): Likewise.
(vld1_s16_x4): Likewise.
(vld1q_s16_x4): Likewise.
(vld1_s32_x4): Likewise.
(vld1q_s32_x4): Likewise.
(vld1_u8_x4): Likewise.
(vld1q_u8_x4): Likewise.
(vld1_u16_x4): Likewise.
(vld1q_u16_x4): Likewise.
(vld1_u32_x4): Likewise.
(vld1q_u32_x4): Likewise.
(vld1_f16_x4): Likewise.
(vld1q_f16_x4): Likewise.
(vld1_f32_x4): Likewise.
(vld1q_f32_x4): Likewise.
(vld1_p8_x4): Likewise.
(vld1q_p8_x4): Likewise.
(vld1_p16_x4): Likewise.
(vld1q_p16_x4): Likewise.
(vld1_s64_x4): Likewise.
(vld1_u64_x4): Likewise.
(vld1_p64_x4): Likewise.
(vld1q_s64_x4): Likewise.
(vld1q_u64_x4): Likewise.
(vld1q_p64_x4): Likewise.
(vld1_f64_x4): Likewise.
(vld1q_f64_x4): Likewise.
(vst1_s8_x4): Likewise.
(vst1q_s8_x4): Likewise.
(vst1_s16_x4): Likewise.
(vst1q_s16_x4): Likewise.
(vst1_s32_x4): Likewise.
(vst1q_s32_x4): Likewise.
(vst1_u8_x4): Likewise.
(vst1q_u8_x4): Likewise.
(vst1_u16_x4): Likewise.
(vst1q_u16_x4): Likewise.
(vst1_u32_x4): Likewise.
(vst1q_u32_x4): Likewise.
(vst1_f16_x4): Likewise.
(vst1q_f16_x4): Likewise.
(vst1_f32_x4): Likewise.
(vst1q_f32_x4): Likewise.
(vst1_p8_x4): Likewise.
(vst1q_p8_x4): Likewise.
(vst1_p16_x4): Likewise.
(vst1q_p16_x4): Likewise.
(vst1_s64_x4): Likewise.
(vst1_u64_x4): Likewise.
(vst1_p64_x4): Likewise.
(vst1q_s64_x4): Likewise.
(vst1q_u64_x4): Likewise.
(vst1q_p64_x4): Likewise.
(vst1_f64_x4): Likewise.
(vst1q_f64_x4): Likewise.

* gcc.target/aarch64/advsimd-intrinsics/vld1x4.c: New test.
* gcc.target/aarch64/advsimd-intrinsics/vst1x4.c: New test.

From-SVN: r274820

5 years agoaarch64-sve.md (vcond_mask): Add "@".
Prathamesh Kulkarni [Thu, 22 Aug 2019 08:48:42 +0000 (08:48 +0000)]
aarch64-sve.md (vcond_mask): Add "@".

2019-08-22  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* config/aarch64/aarch64-sve.md (vcond_mask): Add "@".

From-SVN: r274817

5 years agoDaily bump.
GCC Administrator [Thu, 22 Aug 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r274816

5 years agore PR target/88839 ([SVE] Poor implementation of blend-like permutes)
Prathamesh Kulkarni [Wed, 21 Aug 2019 20:41:41 +0000 (20:41 +0000)]
re PR target/88839 ([SVE] Poor implementation of blend-like permutes)

2019-08-22  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
    Richard Sandiford  <richard.sandiford@arm.com>

PR target/88839
* config/aarch64/aarch64.c (aarch64_evpc_sel): New function.
(aarch64_expand_vec_perm_const_1): Call aarch64_evpc_sel.

testsuite/
* gcc.target/aarch64/sve/sel_1.c: New test.
* gcc.target/aarch64/sve/sel_2.c: Likewise.
* gcc.target/aarch64/sve/sel_3.c: Likewise.
* gcc.target/aarch64/sve/sel_4.c: Likewise.
* gcc.target/aarch64/sve/sel_5.c: Likewise.
* gcc.target/aarch64/sve/sel_6.c: Likewise.

Co-Authored-By: Richard Sandiford <richard.sandiford@arm.com>
From-SVN: r274810

5 years agore PR target/90724 (ICE with __sync_bool_compare_and_swap with -march=armv8.2-a+sve)
Prathamesh Kulkarni [Wed, 21 Aug 2019 18:34:43 +0000 (18:34 +0000)]
re PR target/90724 (ICE with __sync_bool_compare_and_swap with -march=armv8.2-a+sve)

2019-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR target/90724
* config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): Force y
in reg if it fails aarch64_plus_operand predicate.

From-SVN: r274805

5 years agocompiler: don't use pkgpath for fieldtrack of unexported field
Ian Lance Taylor [Wed, 21 Aug 2019 17:19:52 +0000 (17:19 +0000)]
compiler: don't use pkgpath for fieldtrack of unexported field

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

From-SVN: r274803

5 years agocompiler: if hidden function referenced by inline, don't hide descriptor
Ian Lance Taylor [Wed, 21 Aug 2019 14:11:24 +0000 (14:11 +0000)]
compiler: if hidden function referenced by inline, don't hide descriptor

    Fixes golang/go#33739

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

From-SVN: r274800

5 years ago[C++] Protect call to copy_attributes_to_builtin (PR91505)
Richard Sandiford [Wed, 21 Aug 2019 13:59:31 +0000 (13:59 +0000)]
[C++] Protect call to copy_attributes_to_builtin (PR91505)

copy_attributes_to_builtin only handles BUILT_IN_NORMAL, but C++ was
calling it immediately after the:

  if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)

block.  The corresponding C code calls it inside the block instead.

2019-08-21  Richard Sandiford  <richard.sandiford@arm.com>

gcc/cp/
PR c++/91505
* decl.c (duplicate_decls): Call copy_attributes_to_builtin inside
the BUILT_IN_NORMAL block rather than afterward.

gcc/testsuite/
PR c++/91505
* g++.target/i386/crc32-4.C: New test.

From-SVN: r274799

5 years agore PR tree-optimization/91482 (__builtin_assume_aligned should not break write combining)
Richard Biener [Wed, 21 Aug 2019 11:45:34 +0000 (11:45 +0000)]
re PR tree-optimization/91482 (__builtin_assume_aligned should not break write combining)

2019-08-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/91482
* tree-ssa-ccp.c (ccp_folder::fold_stmt): Remove useless
BUILT_IN_ASSUME_ALIGNED calls.

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

From-SVN: r274796

5 years agoc-ada-spec.c (dump_ada_function_declaration): Be prepared for broken function declara...
Eric Botcazou [Wed, 21 Aug 2019 09:54:04 +0000 (09:54 +0000)]
c-ada-spec.c (dump_ada_function_declaration): Be prepared for broken function declarations where arguments are missing.

* c-ada-spec.c (dump_ada_function_declaration): Be prepared for broken
function declarations where arguments are missing.  Rename variables.

From-SVN: r274794

5 years ago[testsuite][arm] Add missing quotes to expected warning messages.
Christophe Lyon [Wed, 21 Aug 2019 09:40:51 +0000 (09:40 +0000)]
[testsuite][arm] Add missing quotes to expected warning messages.

2019-08-21  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/arm/cmse/cmse-9.c: Add quotes to expected
warning messages.

From-SVN: r274793

5 years agore PR target/91498 (STV change in r274481 causes 300.twolf regression on Haswell)
Richard Biener [Wed, 21 Aug 2019 08:44:59 +0000 (08:44 +0000)]
re PR target/91498 (STV change in r274481 causes 300.twolf regression on Haswell)

2019-08-21  Richard Biener  <rguenther@suse.de>

PR target/91498
PR target/91503
* config/i386/i386-features.c
(general_scalar_chain::make_vector_copies): Copy stack temporary
rtx when using it multiple times.
(general_scalar_chain::convert_reg): Likewise.

From-SVN: r274792

5 years ago[Ada] Improve detection of end of the process by GNAT.Expect
Vadim Godunko [Wed, 21 Aug 2019 08:31:20 +0000 (08:31 +0000)]
[Ada] Improve detection of end of the process by GNAT.Expect

'read' system call may be interrupted by signal with 'errno' is set to
EINTER. In this case, re-try a few times.

2019-08-21  Vadim Godunko  <godunko@adacore.com>

gcc/ada/

* libgnat/g-expect.adb (Expect_Internal): Attempt to read
several times when 'read' returns non-positive.

From-SVN: r274791

5 years ago[Ada] Minor refactorings/reformattings
Piotr Trojanek [Wed, 21 Aug 2019 08:31:16 +0000 (08:31 +0000)]
[Ada] Minor refactorings/reformattings

2019-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* einfo.adb (Is_Discriminal): Remove extra parens.
(Is_Constant_Object): Simplify by reusing Ekind_In.
(Is_Prival): Remove extra parens.
* checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor
reformattings.

From-SVN: r274790

5 years ago[Ada] Allow for of iteration on formal vectors
Claire Dross [Wed, 21 Aug 2019 08:31:11 +0000 (08:31 +0000)]
[Ada] Allow for of iteration on formal vectors

2019-08-21  Claire Dross  <dross@adacore.com>

gcc/ada/

* libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow
iteration.
(Iter_First, Iter_Next): Primitives used for iteration.

From-SVN: r274789

5 years ago[Ada] More precise propagation of Size attribute in generic instances
Yannick Moy [Wed, 21 Aug 2019 08:31:07 +0000 (08:31 +0000)]
[Ada] More precise propagation of Size attribute in generic instances

GNATprove analyzer for SPARK code depends on the frontend to accurately
propagate the known value of Size attribute. This was not done for
formal type parameters in generic instantiations. Now fixed.

There is no impact on compilation.

2019-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size
field for formal type parameters in generic instantiations.

From-SVN: r274788

5 years ago[Ada] Update references to the SPARK RM
Yannick Moy [Wed, 21 Aug 2019 08:31:03 +0000 (08:31 +0000)]
[Ada] Update references to the SPARK RM

2019-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_spark.adb: Update references to the SPARK RM.

From-SVN: r274787

5 years ago[Ada] More complete information level for -gnatR4 output
Eric Botcazou [Wed, 21 Aug 2019 08:30:58 +0000 (08:30 +0000)]
[Ada] More complete information level for -gnatR4 output

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

package P3 is

    type idx is range 1 .. 100;

    type Arr is array (Idx range <>) of Character;

    type Rec is record
       C : Arr (1 .. 5);
    end record;

end P3;

2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* repinfo.adb (List_Array_Info): In -gnatR4 mode, set the
relevant flag on the component type here instead of...
(List_Object_Info): Likewise for the object type.
(List_Entities): ...here.  In -gnatR4 mode, recurse into
entities local to a record type.
(List_Component_Layout): In -gnatR4 mode, mark the type as
relevant.

From-SVN: r274786

5 years ago[Ada] Add the System.Bitfield_Utils runtime unit
Bob Duff [Wed, 21 Aug 2019 08:30:53 +0000 (08:30 +0000)]
[Ada] Add the System.Bitfield_Utils runtime unit

2019-08-21  Bob Duff  <duff@adacore.com>

gcc/ada/

* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and
s-biutin.o.
* exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to
generate a call to Copy_Bitfield. This is disabled for now.
(Expand_Assign_Array_Loop_Or_Bitfield): New function to decide
whether to call Expand_Assign_Array_Bitfield.
(Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield
instead of Expand_Assign_Array_Loop.
* libgnat/s-bitfie.ads, libgnat/s-bituti.adb,
libgnat/s-bituti.ads: New units.
* rtsfind.ads: Add enum literals for accessing Copy_Bitfield.

From-SVN: r274785

5 years ago[Ada] Bindo.Graphs: Minor typo fixes
Piotr Trojanek [Wed, 21 Aug 2019 08:30:32 +0000 (08:30 +0000)]
[Ada] Bindo.Graphs: Minor typo fixes

2019-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in
pragma Inline.
* bindo-graphs.adb (Delete_Edge): Fix layout in parameter list.

From-SVN: r274784

5 years ago[Ada] Undefined master in task with limited class-wide aliased entry formal
Gary Dismukes [Wed, 21 Aug 2019 08:30:17 +0000 (08:30 +0000)]
[Ada] Undefined master in task with limited class-wide aliased entry formal

In the case of a task declaring an entry with an aliased formal
parameter of a limited class-wide type, the front end was creating a
master object (_master) for the access type generated for such an entry
formal inside the task specification, even though such access types
don't need an associated master.  The master object wasn't being copied
into the procedure expanded for the task body, but a renaming for the
master appeared in the statements of the task body, and the LLVM back
end rejects this since the master object doesn't appear in the expanded
task procedure (for some reason, gigi doesn't complain). This is fixed
by suppressing the creation of the master object in the case where the
access-to-limited-class-wide access type is the type of a component in
an entry's parameter block.  This is similar to the suppression done for
the master object in other cases, where the access type designates a
type explicitly containing tasks (though the suppression involves
testing Comes_From_Source in that case).

No simple test (and this only affects the LLVM-based compiler).

2019-08-21  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* exp_ch3.adb (Build_Master): Suppress call to
Build_Class_Wide_Master in the case where the
access-to-limited-class-wide type was created for a component in
an entry's formal parameter
block (Is_Parameter_Block_Component_Type), to prevent a master
from being created for such access types generated by the front
end in a task spec for entry formals in a parameter block.  Add
a ??? about whether this suppression should be done more
generally (such as by using Comes_From_Source).

From-SVN: r274783

5 years ago[Ada] Fix type mismatch in extended return statement expansion
Eric Botcazou [Wed, 21 Aug 2019 08:30:00 +0000 (08:30 +0000)]
[Ada] Fix type mismatch in extended return statement expansion

This fixes a (sub)type mismatch in the expansion of an extended return
statement generated for a built-in-place function that doesn't need a
BIP_Alloc_Form parameter but returns unconstrained.

No functional changes.

2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case
of a built-in-place function that doesn't need a BIP_Alloc_Form
parameter but returns unconstrained, build the return
consistently using the function's result subtype.  Remove bypass
added in previous change.

From-SVN: r274782

5 years ago[Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis
Piotr Trojanek [Wed, 21 Aug 2019 08:29:56 +0000 (08:29 +0000)]
[Ada] Do not rewrite argument of pragma Entry_Queue_Length in analysis

It was unusual for the analysis phase of compiler to rewrite static
expression of pragma Entry_Queue_Length with its value. This typically
happens when expanding the AST and only if needed for a given backend.
In particular, GNATprove doesn't need such an expansion and actually
needs the unrewritten AST to detect references to constants declared
with SPARK_Mode => Off within a code with SPARK_Mode => On.

This change has no impact on compilation, so no frontend test is
provided.

2019-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_prag.adb (Max_Entry_Queue_Length): Do not substitute
expression of the pragma argument with its value during
analysis.
* sem_util.adb (Get_Max_Queue_Length): Compute value of the
pragma argument when needed.

From-SVN: r274781

5 years ago[Ada] Avoid spurious error in GNATprove mode on non-null access types
Yannick Moy [Wed, 21 Aug 2019 08:29:51 +0000 (08:29 +0000)]
[Ada] Avoid spurious error in GNATprove mode on non-null access types

GNATprove directly handles non-null access checks, and requires that the
frontend does not insert explicit checks in the form of conditional
exceptions being raised. Now fixed.

There is no impact on compilation.

2019-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

* checks.adb (Install_Null_Excluding_Check): Do not install
check in GNATprove mode.

From-SVN: r274780

5 years ago[Ada] Ignore subprogram address in ownership checking
Yannick Moy [Wed, 21 Aug 2019 08:29:47 +0000 (08:29 +0000)]
[Ada] Ignore subprogram address in ownership checking

Ownership checking done as in GNATprove should ignore address of
subprograms, as it applies only on objects. Now fixed.

There is no impact on compilation.

2019-08-21  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_spark.adb (Process_Path): Do nothing on address of
subprogram.

From-SVN: r274779

5 years ago[Ada] Fix assertion failure on derived private protected type
Eric Botcazou [Wed, 21 Aug 2019 08:29:42 +0000 (08:29 +0000)]
[Ada] Fix assertion failure on derived private protected type

This fixes an assertion failure on the instantiation of a generic
package on a type derived from the private view of a protected type,
ultimately caused by Finalize_Address returning Empty for the subtype
built for the generic actual type of the instantiation.

Finalize_Address has a special processing for untagged derivations of
private views, but it would no longer trigger for the subtype because
this subtype is now represented as a subtype of an implicit derived base
type instead of as the derived type of an implicit subtype previously.

2019-08-21  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_util.adb (Finalize_Address): Deal consistently with
subtypes of private protected types.

gcc/testsuite/

* gnat.dg/prot9.adb, gnat.dg/prot9_gen.ads,
gnat.dg/prot9_pkg1.ads, gnat.dg/prot9_pkg2.ads: New testcase.

From-SVN: r274778

5 years ago[Ada] Replace low-level membership tests with high-level routines
Piotr Trojanek [Wed, 21 Aug 2019 08:29:37 +0000 (08:29 +0000)]
[Ada] Replace low-level membership tests with high-level routines

Code cleanup to improve readablity. Semantics unaffected.

2019-08-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* exp_util.adb (Corresponding_Runtime_Package): Use high-level
Is_Protected_Type.
* sem_ch8.adb (Analyze_Renamed_Entry): Likewise.
* sem_ch9.adb (Analyze_Requeue): Likewise.

From-SVN: r274777

5 years ago[Ada] Missing attribute update in new_copy_tree
Javier Miranda [Wed, 21 Aug 2019 08:29:33 +0000 (08:29 +0000)]
[Ada] Missing attribute update in new_copy_tree

The compiler crashes processing an internally generated cloned tree that
has a subprogram call with a named actual parameter.

2019-08-21  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_util.adb (Update_Named_Associations): Update
First_Named_Actual when the subprogram call has a single named
actual.

gcc/testsuite/

* gnat.dg/implicit_param.adb, gnat.dg/implicit_param_pkg.ads:
New testcase.

From-SVN: r274776

5 years ago[Ada] doc/Makefile: automatically create doc/share/_static
Joel Brobecker [Wed, 21 Aug 2019 08:29:27 +0000 (08:29 +0000)]
[Ada] doc/Makefile: automatically create doc/share/_static

2019-08-21  Joel Brobecker  <brobecker@adacore.com>

gcc/ada/

* doc/Makefile (mk_empty_dirs): New (PHONY) rule.
(%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on
mk_empty_dirs.

From-SVN: r274775

5 years ago[Ada] Max_Entry_Queue_Length aspect for protected entries
Justin Squirek [Wed, 21 Aug 2019 08:29:23 +0000 (08:29 +0000)]
[Ada] Max_Entry_Queue_Length aspect for protected entries

Allow values of negative one to be accepted as a valid parameter as a
special case.

2019-08-21  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* doc/gnat_rm/implementation_defined_pragmas.rst: Modify
documentation to reflect expected behavior.
* gnat_rm.texi: Regenerate.
* sem_prag.adb (Analyze_Pragma): Modify handling of pragma
Max_Entry_Queue_Length to not reject integer values of negative
one.
* sem_util.adb (Get_Max_Queue_Length): Add processing for values
of negative one to fit within the current scheme.

From-SVN: r274774

5 years agolibphobos: Merge upstream druntime 5bb8ce19
Iain Buclaw [Wed, 21 Aug 2019 07:54:34 +0000 (07:54 +0000)]
libphobos: Merge upstream druntime 5bb8ce19

Synchronizes extern(C) bindings with latest release.

Reviewed-on: https://github.com/dlang/druntime/pull/2741

libphobos/ChangeLog:

* libdruntime/Makefile.am (DRUNTIME_DSOURCES_BIONIC): Add
core/sys/bionic/string.d.
(DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/string.d.
(DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/string.d,
core/sys/dragonflybsd/sys/socket.d.
(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/string.d.
(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/string.d.
(DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/string.d,
core/sys/netbsd/sys/featuretest.d.
* libdruntime/Makefile.in: Regenerate.

From-SVN: r274773

5 years agolibphobos: Merge upstream druntime 94686651
Iain Buclaw [Wed, 21 Aug 2019 07:54:19 +0000 (07:54 +0000)]
libphobos: Merge upstream druntime 94686651

Adds extern(C) bindings for version OpenBSD.

Reviewed-on: https://github.com/dlang/druntime/pull/2748

libphobos/ChangeLog:

* libdruntime/Makefile.am (DRUNTIME_DSOURCES_OPENBSD): Add
core/sys/openbsd/sys/cdefs.d, core/sys/openbsd/sys/elf.d,
core/sys/openbsd/sys/elf32.d, core/sys/openbsd/sys/elf64.d,
core/sys/openbsd/sys/elf_common.d, core/sys/openbsd/sys/link_elf.d,
core/sys/openbsd/sys/mman.d, core/sys/openbsd/time.d.
* libdruntime/Makefile.in: Regenerate.

From-SVN: r274772

5 years agore PR d/91339 (libphobos: ftbfs when the path contains '~')
Iain Buclaw [Wed, 21 Aug 2019 07:54:06 +0000 (07:54 +0000)]
re PR d/91339 (libphobos: ftbfs when the path contains '~')

PR d/91339
d/dmd: Merge upstream dmd b37a537d3

Fixes the error: cannot find source code for runtime library file
'object.d' when the path contains '~'.

Reviewed-on: https://github.com/dlang/dmd/pull/10309

From-SVN: r274771

5 years agolibphobos: Merge upstream phobos 66ae77ac3
Iain Buclaw [Wed, 21 Aug 2019 07:53:55 +0000 (07:53 +0000)]
libphobos: Merge upstream phobos 66ae77ac3

Finishes off phobos support for musl targets.

Reviewed-on: https://github.com/dlang/phobos/pull/7108

From-SVN: r274770

5 years agod: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40
Iain Buclaw [Wed, 21 Aug 2019 07:53:44 +0000 (07:53 +0000)]
d: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40

gcc/d/ChangeLog:

PR d/88722
* modules.cc: Include diagnostic.h.
(register_moduleinfo): Use sorry instead of gcc_assert for targets
without named sections.

From-SVN: r274769

5 years agod/dmd: Merge upstream dmd 375ed10aa
Iain Buclaw [Wed, 21 Aug 2019 07:53:35 +0000 (07:53 +0000)]
d/dmd: Merge upstream dmd 375ed10aa

Don't crash when compiling for 16-bit platforms.

Reviewed-on: https://github.com/dlang/dmd/pull/10306

gcc/d/ChangeLog:

* d-target.cc: Include diagnostic.h.
(Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if
the target pointer size is 2.  Add sorry if the pointer size is not
either 2, 4, or 8.

From-SVN: r274768

5 years agod: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539
Iain Buclaw [Wed, 21 Aug 2019 07:53:25 +0000 (07:53 +0000)]
d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539

gcc/d/ChangeLog:

PR d/90446
* d-lang.cc (d_type_for_mode): Check for all internal __intN types.
(d_type_for_size): Likewise.

From-SVN: r274767

5 years agod: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783
Iain Buclaw [Wed, 21 Aug 2019 07:53:15 +0000 (07:53 +0000)]
d: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783

gcc/d/ChangeLog:

PR d/90445
* d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting
uintmax_type_node.  Set signed_size_type_node as the signed_type_for
size_type_node.

From-SVN: r274766

5 years agod: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121
Iain Buclaw [Wed, 21 Aug 2019 07:53:05 +0000 (07:53 +0000)]
d: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121

gcc/d/ChangeLog:

PR d/90444
* d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE
nodes as well, push all fields to the struct members.
(d_build_builtins_module): Push anonymous va_list structs to the
builtins module, naming them __builtin_va_list.
(d_init_builtins): Use sorry instead of gcc_unreachable if va_list did
not succeed in being represented as a D type.

From-SVN: r274765