platform/upstream/gcc.git
5 years agoPR c++/89241 - ICE with lambda in template parameter list.
Jason Merrill [Wed, 27 Mar 2019 18:39:20 +0000 (14:39 -0400)]
PR c++/89241 - ICE with lambda in template parameter list.

We were getting confused by a lambda in template definition context that
isn't actually in the scope of any templated entity.  Fixed by telling
type_dependent_expression_p that such a lambda is type-dependent even if we
can't tell that from its closure type.  I've also restored the error for
defining a non-lambda class in a default template argument, and for a lambda
befor C++20.

* parser.c (cp_parser_lambda_expression): Also reject a lambda in a
template parameter list before C++20.
* pt.c (type_dependent_expression_p): True for LAMBDA_EXPR.
* semantics.c (begin_class_definition): Restore error about defining
non-lambda class in template parm list.

From-SVN: r269972

5 years agoteam.c (gomp_team_start): Initialize pool->threads[0].
Kevin Buettner [Wed, 27 Mar 2019 18:30:44 +0000 (18:30 +0000)]
team.c (gomp_team_start): Initialize pool->threads[0].

libgomp/ChangeLog:

* team.c (gomp_team_start): Initialize pool->threads[0].

From-SVN: r269971

5 years agoFix scc clobber in movdi_symbol.
Andrew Stubbs [Wed, 27 Mar 2019 17:06:26 +0000 (17:06 +0000)]
Fix scc clobber in movdi_symbol.

2019-03-27  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn.md (CC_SAVE_REG): New constant.
(movdi): Call gen_movdi_symbol_save_scc.
(gen_movdi_symbol_save_scc): New insn and split.

From-SVN: r269970

5 years agore PR rtl-optimization/89313 (ICE in process_alt_operands, at lra-constraints.c:2962)
Peter Bergner [Wed, 27 Mar 2019 16:59:15 +0000 (16:59 +0000)]
re PR rtl-optimization/89313 (ICE in process_alt_operands, at lra-constraints.c:2962)

gcc/
PR rtl-optimization/89313
* function.c (matching_constraint_num): New static function.
(match_asm_constraints_1): Use it.  Fixup white space and comment.
Don't replace inputs with non-matching constraints which conflict
with early clobber outputs.

gcc/testsuite/
PR rtl-optimization/89313
* gcc.dg/pr89313.c: New test.

From-SVN: r269969

5 years agore PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c ...
Jeff Law [Wed, 27 Mar 2019 16:18:06 +0000 (10:18 -0600)]
re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c   -O1 start with r265398)

PR rtl-optimization/87761
PR rtl-optimization/89826
* regcprop.c (copyprop_hardreg_forward_1): Move may_trap_p test
slightly later.
(pass_cprop_hardreg::execute): Call df_analyze after adding the
note problem to get REG_DEAD/REG_UNUSED notes updated.

PR rtl-optimization/87761
PR rtl-optimization/89826
* gcc.c-torture/execute/pr89826.c: New test.

From-SVN: r269967

5 years agoPR c++/86932 - missed SFINAE with empty pack.
Jason Merrill [Wed, 27 Mar 2019 14:27:00 +0000 (10:27 -0400)]
PR c++/86932 - missed SFINAE with empty pack.

The issue here was that when processing the explicit template args in
fn_type_unification we added an empty argument pack for the parameter pack,
so we never tried to do any deduction for it, and therefore never looked at
its type.  We need that empty pack behavior for partial ordering, but we
don't want it here, so let's make it conditional on tf_partial.

* pt.c (coerce_template_parms): Don't add an empty pack if
tf_partial.
(fn_type_unification): Pass tf_partial to coerce_template_parms.

From-SVN: r269965

5 years ago20190327-1.c: New testcase.
Richard Biener [Wed, 27 Mar 2019 13:18:39 +0000 (13:18 +0000)]
20190327-1.c: New testcase.

2019-03-27  Richard Biener  <rguenther@suse.de>

* gcc.dg/torture/20190327-1.c: New testcase.

From-SVN: r269964

5 years agore PR fortran/88247 (ICE in get_array_ctor_var_strlen, at fortran/trans-array.c:2068)
Paul Thomas [Wed, 27 Mar 2019 12:51:43 +0000 (12:51 +0000)]
re PR fortran/88247 (ICE in get_array_ctor_var_strlen, at fortran/trans-array.c:2068)

2019-03-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88247
* expr.c (is_subref_array): Permit substrings to be detected
as subref arrays.
* trans-array.c (get_array_ctor_var_strlen): Obtain the length
of deferred length strings. Handle substrings with a NULL end
expression.
(trans_array_constructor): Remove an unnecessary blank line.
(gfc_conv_scalarized_array_ref): Skip to label 'done' if 'decl'
is a pointer array.
(get_array_charlen): If the expression is an array, convert the
first element of the constructor and use its string length. Get
a new charlen if necessary.
(gfc_conv_expr_descriptor): Call 'get_array_charlen' for array
constructor expressions. If the ss_info string length is
available, use that to set the span of character arrays.
* trans-expr.c (gfc_get_expr_charlen): Handle substrings
* trans-stmt.c (trans_associate_var): Set the pointer array
flag for variable targets and constant array constructors. Take
care not to reset the string length or the span in the case of
expressions that are not converted as direct by reference.

2019-03-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88247
* gfortran.dg/associate_47.f90: New test.

From-SVN: r269962

5 years agore PR debug/89463 (debug information for iterator of an empty loop is gone (at -O3))
Richard Biener [Wed, 27 Mar 2019 09:31:53 +0000 (09:31 +0000)]
re PR debug/89463 (debug information for iterator of an empty loop is gone (at -O3))

2019-03-27  Richard Biener  <rguenther@suse.de>

PR tree-optimization/89463
* tree-ssa-dce.c (remove_dead_stmt): Take output vector to
queue edges to remove.
(eliminate_unnecessary_stmts): Remove dead PHIs alongside
dead stmts.  Delay edge removal until PHIs are removed to
make debug-stmt creation not confused by seemingly degenerate
PHIs.

* gcc.dg/guality/pr89463.c: New testcase.

From-SVN: r269961

5 years ago[RS6000] Rename NON_SPECIAL_REGS to GEN_OR_FLOAT_REGS
Alan Modra [Wed, 27 Mar 2019 01:15:50 +0000 (11:45 +1030)]
[RS6000] Rename NON_SPECIAL_REGS to GEN_OR_FLOAT_REGS

* config/rs6000/rs6000.h: Rename NON_SPECIAL_REGS to GEN_OR_FLOAT_REGS
throughout file.
* config/rs6000/darwin.h: Likewise.
* config/rs6000/rs6000.c: Likewise.

From-SVN: r269960

5 years ago[RS6000] Don't rely on rs6000_hard_regno_mode_ok being zero
Alan Modra [Wed, 27 Mar 2019 01:12:35 +0000 (11:42 +1030)]
[RS6000] Don't rely on rs6000_hard_regno_mode_ok being zero

* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Always
assign rs6000_hard_regno_mode_ok_p[m][r].  Formatting.

From-SVN: r269959

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

From-SVN: r269958

5 years agoRISC-V: Add sifive-7 pipeline description.
Andrew Waterman [Tue, 26 Mar 2019 19:41:02 +0000 (19:41 +0000)]
RISC-V: Add sifive-7 pipeline description.

* config/riscv/generic.md (generic_alu, generic_load, generic_store)
(generic_xfer, generic_branch, generic_imul, generic_idivsi)
(generic_idivdi, generic_fmul_single, generic_fmul_double)
(generic_fdiv, generic_fsqrt): Add check for generic tune.
(generic_alu): Add auipc to type list.
* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): New.
(riscv_microarchitecture): Declare.
* config/riscv/riscv-protos.h (riscv_store_data_bypass_p): Declare.
* config/riscv/riscv.c (struct riscv_cpu_info): Add microarchitecture
field.
(riscv_microarchitecture): New.
(sifive_7_tune_info): New.
(riscv_cpu_info_table): Add microarchitecture value for rocket and
size.  Add sifive-3-series, sifive-5-series, and sifive-7-series
entries.
(riscv_store_data_bypass_p): New.
(riscv_option_override): Set riscv_microarchitecture from
cpu->microarchitecture.
* config/riscv/riscv.md: Include sifive-7.md.
(type): Add auipc.
(tune): New.
(auipc<mode>): Change type to auipc.
(restore_stack_nonlocal): New.
* config/riscv/sifive-7.md: New.
* doc/invoke.texi (RISC-V Options): Update mtune docs.

Co-Authored-By: Jim Wilson <jimw@sifive.com>
From-SVN: r269954

5 years agore PR target/89827 (ICE: in convert_op, at config/i386/i386.c:2098 with -Os -maes)
Uros Bizjak [Tue, 26 Mar 2019 18:59:14 +0000 (19:59 +0100)]
re PR target/89827 (ICE: in convert_op, at config/i386/i386.c:2098 with -Os -maes)

PR target/89827
* config/i386/i386.c (dimode_scalar_chain::convert_reg):
Also process XEXP (src, 0) of a shift insn.

testsuite/ChangeLog:

PR target/89827
* gcc.target/i386/pr89827.c: New test.

From-SVN: r269953

5 years agoFix g++.dg/abi/lambda-static-1.C with Solaris as
Rainer Orth [Tue, 26 Mar 2019 18:29:16 +0000 (18:29 +0000)]
Fix g++.dg/abi/lambda-static-1.C with Solaris as

* g++.dg/abi/lambda-static-1.C: Handle Solaris as comdat group
syntax.

From-SVN: r269952

5 years agoPR c++/86429 - constexpr variable in lambda.
Jason Merrill [Tue, 26 Mar 2019 16:02:19 +0000 (12:02 -0400)]
PR c++/86429 - constexpr variable in lambda.

When we refer to a captured variable from a constant-expression context
inside a lambda, the closure (like any function parameter) is not constant
because we aren't in a call, so we don't have an argument.  So the capture
is non-constant.  But if the captured variable is constant, we might be able
to use it directly in constexpr evaluation.

PR c++/82643
PR c++/87327
* constexpr.c (cxx_eval_constant_expression): In a lambda function,
try evaluating the captured variable directly.

From-SVN: r269951

5 years agoPR libstdc++/85965 delay static assertions until types are complete
Jonathan Wakely [Tue, 26 Mar 2019 15:28:48 +0000 (15:28 +0000)]
PR libstdc++/85965 delay static assertions until types are complete

The static assertions added for PR libstdc++/48101 were at class scope
and so were evaluated too eagerly, when it might not be possible to
determine whether the function objects are invocable with the key types.
The problematic cases are where the key type is not known to be
convertible to the argument type(s) of the function object until later,
after a type has been completed. Specifically, if the key type is a
pointer to a derived class and the function object's argument type is a
pointer to a base class, then the derived-to-base conversion is only
valid once the derived type is complete.

By moving the static assertions to the destructor they will only be
evaluated when the destructor is instantiated, at which point whether
the key type can be passed to the function object should be knowable.
The ideal place to do the checks would be only when the function objects
are actually invoked, but that would mean adding the checks in numerous
places, so the destructor is used instead.

The tests need to be adjusted because the "required from here" line is
now the location of the destructor, not the point of instantiation in
the test file. For the map and multimap tests which check two
specializations, the dg-error matching the assertion text matches both
cases. Also check the diagnostic output for the template arguments, to
ensure both specializations trigger the assertion.

PR libstdc++/85965
* include/bits/hashtable.h (_Hashtable): Move static assertions to
destructor so they are not evaluated until the _Key type is complete.
* include/bits/stl_tree.h (_Rb_tree): Likewise.
* testsuite/23_containers/set/85965.cc: New test.
* testsuite/23_containers/unordered_set/85965.cc: New test.
* testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
with regexp matching the corresponding _Rb_tree specialization.
* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
* testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
* testsuite/23_containers/set/48101_neg.cc: Likewise.
* testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
* testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
* testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
* testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.

From-SVN: r269949

5 years agolibphobos: Backport extern(C) bindings from druntime 2.085.
Iain Buclaw [Tue, 26 Mar 2019 15:18:19 +0000 (15:18 +0000)]
libphobos: Backport extern(C) bindings from druntime 2.085.

Merges upstream druntime b9564bef.

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

libphobos/ChangeLog:

2019-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

* libdruntime/Makefile.am (DRUNTIME_DSOURCES_DARWIN): Add
core/sys/darwin/crt_externs.d.
(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/unistd.d.
(DRUNTIME_DSOURCES_POSIX): Add core/sys/posix/spawn.d.
* libdruntime/Makefile.in: Regenerate.

From-SVN: r269948

5 years agore PR libstdc++/89825 (Jump table for variant visitation could be shortened for never...
Ville Voutilainen [Tue, 26 Mar 2019 15:00:05 +0000 (17:00 +0200)]
re PR libstdc++/89825 (Jump table for variant visitation could be shortened for never empty variants)

PR libstdc++/89825

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (_Extra_visit_slot_needed): New.
(_Multi_array): Use it.
(_S_apply_all_alts): Likewise.

From-SVN: r269947

5 years agotree-inline.c (remap_gimple_stmt): Cache gimple_block.
Richard Biener [Tue, 26 Mar 2019 14:56:30 +0000 (14:56 +0000)]
tree-inline.c (remap_gimple_stmt): Cache gimple_block.

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

* tree-inline.c (remap_gimple_stmt): Cache gimple_block.
(copy_debug_stmt): Likewise.
(expand_call_inline): Likewise.
(copy_bb): Avoid redundant lookup & set of gimple_block.
* gimple-low.c (lower_gimple_return): Likewise.
(lower_builtin_setjmp): Likewise.

From-SVN: r269946

5 years agod/dmd: Merge upstream dmd ab702e73e
Iain Buclaw [Tue, 26 Mar 2019 14:40:06 +0000 (14:40 +0000)]
d/dmd: Merge upstream dmd ab702e73e

Fixes memory leak in the front-end symbol mangler, and introduces
recognition and rejection of a few more C types and directives.

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

From-SVN: r269945

5 years agohash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS is constant 0...
Jakub Jelinek [Tue, 26 Mar 2019 13:40:43 +0000 (14:40 +0100)]
hash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS is constant 0...

* hash-table.h (hash_table::m_gather_mem_stats): If GATHER_STATISTICS
is constant 0, turn into static const data member initialized to false.
(hash_table::hash_table): Only initialize m_gather_mem_stats #if
GATHER_STATISTICS.  Add ATTRIBUTE_UNUSED to gather_mem_stats param.

From-SVN: r269944

5 years agomem-stats.h (mem_alloc_description::unregister_descriptor): New method.
Jason Merrill [Tue, 26 Mar 2019 13:38:53 +0000 (09:38 -0400)]
mem-stats.h (mem_alloc_description::unregister_descriptor): New method.

* mem-stats.h (mem_alloc_description::unregister_descriptor): New
method.
(mem_alloc_description::release_object_overhead): Fix comment typos.
* hash-table.h (hash_table::~hash_table): Call
release_instance_overhead only if m_entries is non-NULL, otherwise
call unregister_descriptor.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r269943

5 years agore PR libstdc++/89824 (Variant jump table reserves space for __variant_cookie twice)
Ville Voutilainen [Tue, 26 Mar 2019 12:41:59 +0000 (14:41 +0200)]
re PR libstdc++/89824 (Variant jump table reserves space for __variant_cookie twice)

PR libstdc++/89824

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (__gen_vtable): Don't reserve an
additional table slot, _Multi_array already does that.

From-SVN: r269941

5 years agore PR libstdc++/89816 (std::variant move construction regressed since GCC 8.3)
Ville Voutilainen [Tue, 26 Mar 2019 12:07:26 +0000 (14:07 +0200)]
re PR libstdc++/89816 (std::variant move construction regressed since GCC 8.3)

PR libstdc++/89816

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (__variant_construct): Capture a pointer
to the storage and visit just one variant.

From-SVN: r269940

5 years agore PR tree-optimization/81740 (wrong code at -O3 in both 32-bit and 64-bit modes...
Bin Cheng [Tue, 26 Mar 2019 11:12:37 +0000 (11:12 +0000)]
re PR tree-optimization/81740 (wrong code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu)

2019-03-26  Bin Cheng  <bin.cheng@linux.alibaba.com>

PR tree-optimization/81740
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
In case of outer loop vectorization, check for backward dependence
at the inner loop if outer loop dependence is reversed.

* gcc.dg/vect/pr81740-1.c: New testcase.
* gcc.dg/vect/pr81740-2.c: Likewise.

From-SVN: r269938

5 years agogdc-test.exp (gdc-do-test): Sort and remove duplicate options in permute args tests.
Iain Buclaw [Tue, 26 Mar 2019 11:02:42 +0000 (11:02 +0000)]
gdc-test.exp (gdc-do-test): Sort and remove duplicate options in permute args tests.

gcc/testsuite/ChangeLog:

2019-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

* gdc.test/gdc-test.exp (gdc-do-test): Sort and remove duplicate
options in permute args tests.

From-SVN: r269937

5 years agore PR c++/84598 (internal compiler error: Segmentation fault (cp_default_conversion()))
Paolo Carlini [Tue, 26 Mar 2019 10:16:13 +0000 (10:16 +0000)]
re PR c++/84598 (internal compiler error: Segmentation fault (cp_default_conversion()))

2019-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84598
* g++.dg/ext/pr84598.C: New.

From-SVN: r269936

5 years agoAdd missing dot.
Martin Liska [Tue, 26 Mar 2019 09:58:34 +0000 (09:58 +0000)]
Add missing dot.

From-SVN: r269935

5 years agoFix wrong option wrapping.
Martin Liska [Tue, 26 Mar 2019 09:57:29 +0000 (10:57 +0100)]
Fix wrong option wrapping.

2019-03-26  Martin Liska  <mliska@suse.cz>

* lto-symtab.c (lto_symtab_merge_decls_2): Fix option name
wrapping

From-SVN: r269934

5 years agore PR c++/89796 (Incorrect warning generated with OpenMP atomic capture)
Jakub Jelinek [Tue, 26 Mar 2019 07:54:02 +0000 (08:54 +0100)]
re PR c++/89796 (Incorrect warning generated with OpenMP atomic capture)

PR c++/89796
* semantics.c (finish_omp_atomic): Add warning_sentinel for
-Wunused-value around finish_expr_stmt call.

* g++.dg/gomp/pr89796.C: New test.
* gcc.dg/gomp/pr89796.c: New test.

From-SVN: r269933

5 years ago[RS6000] Fix typos
Alan Modra [Tue, 26 Mar 2019 05:16:14 +0000 (15:46 +1030)]
[RS6000] Fix typos

* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Correct
rs6000_vector_mem init.  Correct wI and wJ comment

From-SVN: r269932

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

From-SVN: r269931

5 years agore PR rtl-optimization/88347 (ICE in begin_move_insn, at sched-ebb.c:175)
Jeff Law [Mon, 25 Mar 2019 23:33:36 +0000 (17:33 -0600)]
re PR rtl-optimization/88347 (ICE in begin_move_insn, at sched-ebb.c:175)

PR rtl-optimization/88347
PR rtl-optimization/88423
* sched-deps.c (sched_analyze_insn): Take into account that for
tablejumps the barrier appears after a label and a jump_table_data.

* gcc.c-torture/compile/pr88347.c: New test.
* gcc.c-torture/compile/pr88423.c: New test.

From-SVN: r269928

5 years agoPR c/89812 - incorrect maximum in error: requested alignment '536870912' exceeds...
Martin Sebor [Mon, 25 Mar 2019 22:56:40 +0000 (22:56 +0000)]
PR c/89812 - incorrect maximum in error: requested alignment '536870912' exceeds maximum 2147483648

gcc/c-family/ChangeLog:

PR c/89812
* c-common.c (check_user_alignment): Rename local.  Correct maximum
alignment in diagnostic.  Avoid assuming argument fits in SHWI,
convert it to UHWI when it fits.

gcc/testsuite/ChangeLog:

PR c/89812
* gcc.dg/attr-aligned-3.c: New test.

From-SVN: r269927

5 years agoUpdate .po files.
Joseph Myers [Mon, 25 Mar 2019 21:49:28 +0000 (21:49 +0000)]
Update .po files.

* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.

From-SVN: r269926

5 years agore PR debug/86964 (Too many debug symbols included, especially for extern globals)
Johan Karlsson [Mon, 25 Mar 2019 21:19:09 +0000 (21:19 +0000)]
re PR debug/86964 (Too many debug symbols included, especially for extern globals)

PR debug/86964
* dwarf2out.c (premark_used_variables): New function.
(prune_unused_types_walk): Do not mark not premarked external
variables.
(prune_unused_types): Call premark_used_variables.

* gcc.dg/debug/dwarf2/pr86964.c: New testcase.

From-SVN: r269925

5 years agore PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)
Vladimir Makarov [Mon, 25 Mar 2019 21:14:40 +0000 (21:14 +0000)]
re PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)

2019-03-25  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89676
* lra-constraints.c (curr_insn_transform): Do match reload for
early clobbers when the match was successful only for different
registers.

From-SVN: r269924

5 years agore PR c++/84661 (internal compiler error: Segmentation fault (strip_array_types()))
Paolo Carlini [Mon, 25 Mar 2019 20:43:36 +0000 (20:43 +0000)]
re PR c++/84661 (internal compiler error: Segmentation fault (strip_array_types()))

/cp
2019-03-25  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84661
PR c++/85013
* parser.c (cp_parser_binary_expression): Don't call cp_fully_fold
to undo the disabling of warnings.

/testsuite
2019-03-25  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/84661
PR c++/85013
* g++.dg/concepts/pr84661.C: New.
* g++.dg/torture/pr85013.C: Likewise.

From-SVN: r269923

5 years agoPR c++/87748 - substitution failure error with decltype.
Jason Merrill [Mon, 25 Mar 2019 18:27:08 +0000 (14:27 -0400)]
PR c++/87748 - substitution failure error with decltype.

This issue is similar to PR 87480; in both cases we were doing non-dependent
substitution with processing_template_decl set, leading to member access
expressions seeming still instantiation-dependent, and therefore decltype
not being simplified to its actual type.  And as in that PR, the fix is to
clear processing_template_decl while substituting a default template
argument.

* pt.c (most_specialized_partial_spec): Clear
processing_template_decl.

From-SVN: r269921

5 years agoextend.texi (Common Type Attributes): Document vector_size.
Martin Sebor [Mon, 25 Mar 2019 17:23:31 +0000 (17:23 +0000)]
extend.texi (Common Type Attributes): Document vector_size.

gcc/ChangeLog:
* doc/extend.texi (Common Type Attributes): Document vector_size.
(Common Variable Attributes): Mention size constraint.  Correct
quoting and typos.
(Vector Extensions): Use @dfn when defining bas type.  Clarify
base type and size constraints.

From-SVN: r269920

5 years agoPR c++/89214 - ICE when initializing aggregates with bases.
Marek Polacek [Mon, 25 Mar 2019 16:38:48 +0000 (16:38 +0000)]
PR c++/89214 - ICE when initializing aggregates with bases.

* typeck2.c (digest_init_r): Warn about object slicing instead of
crashing.

* g++.dg/cpp1z/aggr-base8.C: New test.
* g++.dg/cpp1z/aggr-base9.C: New test.

From-SVN: r269919

5 years agoPR c++/89705 - ICE with reference binding with conversion function.
Marek Polacek [Mon, 25 Mar 2019 16:10:06 +0000 (16:10 +0000)]
PR c++/89705 - ICE with reference binding with conversion function.

* call.c (reference_binding): If the result of the conversion function
is a prvalue of non-class type, use the cv-unqualified type.

* g++.dg/cpp0x/rv-conv2.C: New test.

From-SVN: r269918

5 years agore PR tree-optimization/89789 (Compile time hog during RPO VN)
Richard Biener [Mon, 25 Mar 2019 13:53:50 +0000 (13:53 +0000)]
re PR tree-optimization/89789 (Compile time hog during RPO VN)

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

PR tree-optimization/89789
* tree-ssa-sccvn.c (set_ssa_val_to): Do not allow lattice
changes from non-undefined back to undefined.

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

From-SVN: r269917

5 years agodwarf2out.c (comp_dir_string): cached_wd could be set to both a heap string and a...
Thomas Otto [Mon, 25 Mar 2019 13:50:46 +0000 (13:50 +0000)]
dwarf2out.c (comp_dir_string): cached_wd could be set to both a heap string and a gc string...

2019-03-25  Thomas Otto  <thomas.otto@pdv-fs.de>

* dwarf2out.c (comp_dir_string): cached_wd could be set to both a
heap string and a gc string, but since this variable is unknown to
ggc the gc string might get reused and corrupted. Fixed by always
using a heap string.

From-SVN: r269916

5 years ago[C++] compiler incompatibility with lambdas
Nathan Sidwell [Mon, 25 Mar 2019 12:22:47 +0000 (12:22 +0000)]
[C++] compiler incompatibility with lambdas

https://gcc.gnu.org/ml/gcc-patches/2019-03/msg00982.html
* lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.
* g++.dg/abi/lambda-static-1.C: New.

From-SVN: r269915

5 years agore PR middle-end/89779 (internal compiler error: tree check: expected class ‘type...
Richard Biener [Mon, 25 Mar 2019 12:18:38 +0000 (12:18 +0000)]
re PR middle-end/89779 (internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in tree_nop_conversion_p, at tree.c:12798)

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

PR tree-optimization/89779
* tree-ssa-loop-ivopts.c (remove_unused_ivs): Return
to remove IV defs, delay actual removal.
(tree_ssa_iv_optimize_loop): Likewise.  Avoid SCEV reset.
(tree_ssa_iv_optimize): Remove eliminated IV defs at the
very end, properly also reset loop control IV information.

From-SVN: r269914

5 years agore PR tree-optimization/89802 ([9 Regresssion] ICE: verify_gimple failed (error:...
Richard Biener [Mon, 25 Mar 2019 12:15:59 +0000 (12:15 +0000)]
re PR tree-optimization/89802 ([9 Regresssion] ICE: verify_gimple failed (error: dead STMT in EH table))

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

PR tree-optimization/89802
* tree-ssa-math-opts.c (convert_mult_to_fma_1): Properly
move EH data to folded stmt.

* g++.dg/tree-ssa/pr89802.C: New testcase.

From-SVN: r269913

5 years agore PR c++/60702 (thread_local initialization)
Jakub Jelinek [Mon, 25 Mar 2019 11:53:56 +0000 (12:53 +0100)]
re PR c++/60702 (thread_local initialization)

PR c++/60702
* g++.dg/tls/thread_local11.C: Remove scan-tree-dump-times directives
for _ZTH* calls.
* g++.dg/tls/thread_local11a.C: New test.

From-SVN: r269912

5 years agore PR libfortran/79540 (FAIL: gfortran.dg/fmt_fw_d.f90 -O0 execution test)
John David Anglin [Mon, 25 Mar 2019 11:48:36 +0000 (11:48 +0000)]
re PR libfortran/79540 (FAIL: gfortran.dg/fmt_fw_d.f90   -O0  execution test)

PR libgfortran/79540
* io/write_float.def (build_float_string): Don't copy digits when
ndigits is negative.

From-SVN: r269911

5 years agoS/390: Cleanup builtin types file
Andreas Krebbel [Mon, 25 Mar 2019 10:10:31 +0000 (10:10 +0000)]
S/390: Cleanup builtin types file

gcc/ChangeLog:

2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Remove few unused types and
fix sort order for others.

From-SVN: r269909

5 years agoS/390: Improve debug output for builtin matching
Andreas Krebbel [Mon, 25 Mar 2019 10:09:43 +0000 (10:09 +0000)]
S/390: Improve debug output for builtin matching

gcc/ChangeLog:

2019-03-25  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-c.c (s390_fn_types_compatible): Print the
expected and found types with -mdebug during builtin matching.

From-SVN: r269908

5 years agore PR middle-end/89790 (ICE segfault in operand_equal_p() at fold-const.c:3000 with...
Richard Biener [Mon, 25 Mar 2019 10:05:15 +0000 (10:05 +0000)]
re PR middle-end/89790 (ICE segfault in operand_equal_p() at fold-const.c:3000 with -Wduplicated-cond since r269838)

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

PR middle-end/89790
* fold-const.c (operand_equal_p): Revert last change with
updated comment.

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

From-SVN: r269907

5 years ago[doc] Fix typos in MINLOC, MAXLOC documentation
Kyrylo Tkachov [Mon, 25 Mar 2019 09:25:07 +0000 (09:25 +0000)]
[doc] Fix typos in MINLOC, MAXLOC documentation

I think there's a typo in the documentation of the MINLOC and MAXLOC intrinsics.
It implies that when the BACK argument is true it returns the first occurrence of the min/max value,
but my understanding is that it should return the last occurrence.

This patch fixes the documentation.

* intrinsic.texi (MINLOC): Fix typo in BACK argument documentation.
(MAXLOC): Likewise.

From-SVN: r269906

5 years agoDaily bump.
GCC Administrator [Mon, 25 Mar 2019 00:16:41 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r269905

5 years agors6000: Make CSE'ing __tls_get_addr calls possible
Segher Boessenkool [Sun, 24 Mar 2019 20:26:53 +0000 (21:26 +0100)]
rs6000: Make CSE'ing __tls_get_addr calls possible

CSE does not consider calls, not even const calls.  This patch puts a
REG_EQUAL note on the pseudo we assign the __tls_get_addr result to,
so that those pseudos can be CSE'd and the extra calls deleted as dead
code.

CSE should really handle const calls directly, but it is stage 4.

* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add REG_EQUAL
notes for the result of the __tls_get_addr calls.
* config/rs6000/rs6000.md (unspec UNSPEC_TLS_GET_ADDR): New.

From-SVN: r269902

5 years ago* testsuite/ChangeLog: Fix ChangeLog entry.
Uros Bizjak [Sun, 24 Mar 2019 19:47:03 +0000 (20:47 +0100)]
* testsuite/ChangeLog: Fix ChangeLog entry.

From-SVN: r269901

5 years agopr82281.c: Compile only for ia32 effective target.
Uros Bizjak [Sun, 24 Mar 2019 19:39:59 +0000 (20:39 +0100)]
pr82281.c: Compile only for ia32 effective target.

* gcc.target/i386/pr82281.c: Compile only for ia32 effective target.
(dg-options): Remove -m32. Add -msse2 -mtune=znver1.
* gcc.target/i386/pr89676.c: Compile only for ia32 effective target.
(dg-options): Remove -m32 and -march=i686. Add -mno-stv.

From-SVN: r269900

5 years ago* config/bfin/bfin.md (movpdi): Fix length for alternative 1.
Jeff Law [Sun, 24 Mar 2019 19:25:49 +0000 (13:25 -0600)]
* config/bfin/bfin.md (movpdi): Fix length for alternative 1.

From-SVN: r269899

5 years agod/dmd: Merge upstream dmd 74ac873be
Iain Buclaw [Sun, 24 Mar 2019 16:20:43 +0000 (16:20 +0000)]
d/dmd: Merge upstream dmd 74ac873be

Introduces a fix for a segfault when building without object.d being
present, as well as MinGW host build errors in dmd/root/filename.c.

Updates a couple of non-portable tests, removing one and fixing the
other.

From-SVN: r269897

5 years agore PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c ...
Jeff Law [Sun, 24 Mar 2019 15:20:52 +0000 (09:20 -0600)]
re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c   -O1 start with r265398)

PR rtl-optimization/87761
* regcprop.c (copyprop_hardreg_forward_1): Check may_trap_p on SET,
not INSN.  Also check RTX_FRAME_RELATED_P.  Queue insns for DF rescan
as needed.
(pass_cprop_hardreg::execute): Add df note problem and defer insn
rescans.  Reprocess blocks as needed, calling df_analyze before
reprocessing.  Always call df_analyze before fixing up debug bind
insns.

From-SVN: r269896

5 years agore PR fortran/78865 (ICE in create_tmp_var, at gimple-expr.c:473)
Thomas Koenig [Sun, 24 Mar 2019 12:51:19 +0000 (12:51 +0000)]
re PR fortran/78865 (ICE in create_tmp_var, at gimple-expr.c:473)

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

PR fortran/78865
* interface.c (compare_actual_formal): Change errors about
missing or extra to gfc_error_now to make sure they are issued.
Change "spec" to "specifier" in message.
* resolve.c (resolve_global_procedure): Also check for mismatching
interface with global symbols if the namespace has already been
resolved.

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

PR fortran/78865
* gfortran.dg/altreturn_10.f90: New test.
* gfortran.dg/whole_file_3.f90: Change dg-warning to dg-error.

From-SVN: r269895

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

From-SVN: r269894

5 years agors6000: Fix _mm_movemask_pi8 emulation for 32 bit
Segher Boessenkool [Sat, 23 Mar 2019 16:15:48 +0000 (17:15 +0100)]
rs6000: Fix _mm_movemask_pi8 emulation for 32 bit

* config/rs6000/xmmintrin.h (_mm_movemask_pi8): Implement for 32-bit
big endian.

From-SVN: r269891

5 years ago[libphobos] Update info about required autotools versions
Johannes Pfau [Sat, 23 Mar 2019 15:07:25 +0000 (15:07 +0000)]
[libphobos] Update info about required autotools versions

From-SVN: r269888

5 years ago[libphobos] Update MERGE file, remove ill-formatted changelog entry
Johannes Pfau [Sat, 23 Mar 2019 15:07:16 +0000 (15:07 +0000)]
[libphobos] Update MERGE file, remove ill-formatted changelog entry

Changelog entries are not required for upstream merges.

From-SVN: r269887

5 years ago[AARCH64] Fix zero_extendsidi2_aarch64 type attribute
Andrew Pinski [Sat, 23 Mar 2019 00:22:33 +0000 (00:22 +0000)]
[AARCH64] Fix zero_extendsidi2_aarch64 type attribute

2019-03-22  Andrew Pinski  <apinski@marvell.com>

        * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Fix type
        attrribute for uxtw.

From-SVN: r269886

5 years agoDaily bump.
GCC Administrator [Sat, 23 Mar 2019 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r269885

5 years ago* gcc.pot: Regenerate.
Joseph Myers [Fri, 22 Mar 2019 21:59:36 +0000 (21:59 +0000)]
* gcc.pot: Regenerate.

From-SVN: r269882

5 years agoRemove broken links from libstdc++ manual to Doxygen pages
Jonathan Wakely [Fri, 22 Mar 2019 20:57:35 +0000 (20:57 +0000)]
Remove broken links from libstdc++ manual to Doxygen pages

The Doxygen docs do not have stable URLs, so linking to specific pages
doesn't work well.

* doc/xml/manual/backwards_compatibility.xml: Remove link to
Doxygen-generated pages with unstable URL.
* doc/xml/manual/concurrency_extensions.xml: Likewise.
* doc/xml/manual/extensions.xml: Likewise.
* doc/xml/manual/parallel_mode.xml: Likewise.
* doc/xml/manual/support.xml: Likewise.

From-SVN: r269881

5 years agore PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c ...
Jeff Law [Fri, 22 Mar 2019 18:14:56 +0000 (12:14 -0600)]
re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c   -O1 start with r265398)

PR rtl-optimization/87761
* config/mips/mips-protos.h (mips_split_move): Add new argument.
(mips_emit_move_or_split): Pass NULL for INSN into mips_split_move.
(mips_split_move): Accept new INSN argument.  Try to forward SRC
into the next instruction.
(mips_split_move_insn): Pass INSN through to mips_split_move.

From-SVN: r269880

5 years agore PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)
Vladimir Makarov [Fri, 22 Mar 2019 16:59:21 +0000 (16:59 +0000)]
re PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)

2019-03-22  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89676
* lra-constraints.c (curr_insn_transform): Do match reload for
early clobbers even if the match was successful.

2019-03-22  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89676
* gcc.target/i386/pr89676.c: New.

From-SVN: r269878

5 years agoAvoid -Wconversion warnings when -Wsystem-headers is used
Jonathan Wakely [Fri, 22 Mar 2019 16:45:48 +0000 (16:45 +0000)]
Avoid -Wconversion warnings when -Wsystem-headers is used

* include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
avoid -Wconversion warnings.

From-SVN: r269876

5 years agore PR c++/60702 (thread_local initialization)
Jakub Jelinek [Fri, 22 Mar 2019 14:42:57 +0000 (15:42 +0100)]
re PR c++/60702 (thread_local initialization)

PR c++/60702
* cp-tree.h (get_tls_wrapper_fn): Remove declaration.
(maybe_get_tls_wrapper_call): Declare.
* decl2.c (get_tls_wrapper_fn): Make static.
(maybe_get_tls_wrapper_call): New function.
* typeck.c (build_class_member_access_expr): Handle accesses to TLS
variables.
* semantics.c (finish_qualified_id_expr): Likewise.
(finish_id_expression_1): Use maybe_get_tls_wrapper_call.
* pt.c (tsubst_copy_and_build): Likewise.

* g++.dg/tls/thread_local11.C: New test.
* g++.dg/tls/thread_local11.h: New test.
* g++.dg/tls/thread_local12a.C: New test.
* g++.dg/tls/thread_local12b.C: New test.
* g++.dg/tls/thread_local12c.C: New test.
* g++.dg/tls/thread_local12d.C: New test.
* g++.dg/tls/thread_local12e.C: New test.
* g++.dg/tls/thread_local12f.C: New test.
* g++.dg/tls/thread_local12g.C: New test.
* g++.dg/tls/thread_local12h.C: New test.
* g++.dg/tls/thread_local12i.C: New test.
* g++.dg/tls/thread_local12j.C: New test.
* g++.dg/tls/thread_local12k.C: New test.
* g++.dg/tls/thread_local12l.C: New test.

From-SVN: r269875

5 years agore PR c++/87481 (Endless loop with optimisation in C++17)
Jakub Jelinek [Fri, 22 Mar 2019 14:40:59 +0000 (15:40 +0100)]
re PR c++/87481 (Endless loop with optimisation in C++17)

PR c++/87481
* doc/invoke.texi (-fconstexpr-ops-limit=): Document.

* c.opt (-fconstexpr-ops-limit=): New option.

* constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
(cxx_eval_constant_expression): When not skipping, not constant class
or location wrapper, increment *ctx->constexpr_ops_count and if it is
above constexpr_loop_nest_limit, diagnose failure.
(cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
initialize ctx.constexpr_ops_count to its address.
(is_sub_constant_expr): Likewise.

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

From-SVN: r269874

5 years ago[Ada] GNAT.Sockets: fix recent regressions
Pierre-Marie de Rodat [Fri, 22 Mar 2019 13:59:02 +0000 (13:59 +0000)]
[Ada] GNAT.Sockets: fix recent regressions

The support for IPv6 that was added since last release triggered
regressions on various platforms. The size of structures passed to low
level routines was not correct anymore: it should depend on the address
family, now.

2019-03-22  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

PR ada/89583
* libgnat/g-socket.adb (Bind_Socket, Connect_Socket,
Send_Socket): Fix the computation of structure lengths passed to
low level routines.
(Is_IPv6_Address): Fix the number of expected colons.

2019-03-22  Simon Wright  <simon@pushface.org>

gcc/testsuite/

PR ada/89583
* gnat.dg/socket2.adb: New.

From-SVN: r269873

5 years agommintrin.h (_mm_sub_pi32): Fix typo.
Bill Schmidt [Fri, 22 Mar 2019 13:49:18 +0000 (13:49 +0000)]
mmintrin.h (_mm_sub_pi32): Fix typo.

[gcc]

2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>

* config/rs6000/mmintrin.h (_mm_sub_pi32): Fix typo.

[gcc/testsuite]

2019-03-22  Bill Schmidt  <wschmidt@linux.ibm.com>

* gcc.target/powerpc/mmx-psubd-2.c: Test _m_psubd.

From-SVN: r269871

5 years ago* config/i386/sse.md (<avx512>_fmadd_<mode>_mask3<round_name>,
Jakub Jelinek [Fri, 22 Mar 2019 12:58:09 +0000 (13:58 +0100)]
* config/i386/sse.md (<avx512>_fmadd_<mode>_mask3<round_name>,

<avx512>_fmsub_<mode>_mask3<round_name>,
<avx512>_fnmadd_<mode>_mask3<round_name>,
<avx512>_fnmsub_<mode>_mask3<round_name>,
avx512f_vmfmadd_<mode>_mask3<round_name>,
avx512f_vmfmsub_<mode>_mask3<round_name>,
*avx512f_vmfnmadd_<mode>_mask3<round_name>): Use <round_nimm_predicate>
instead of register_operand and %v instead of v for match_operand 1.
(avx512f_vmfnmsub_<mode>_mask3<round_name>): Rename to ...
(*avx512f_vmfnmsub_<mode>_mask3<round_name>): ... this.  Use
<round_nimm_predicate> instead of register_operand and %v instead of v
for match_operand 1.

From-SVN: r269870

5 years agosse.md (<avx512>_fmadd_<mode>_mask<round_name>, [...]): Use <round_nimm_predicate...
Jakub Jelinek [Fri, 22 Mar 2019 10:12:18 +0000 (11:12 +0100)]
sse.md (<avx512>_fmadd_<mode>_mask<round_name>, [...]): Use <round_nimm_predicate> instead of nonimmediate_operand.

* config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
<avx512>_fmadd_<mode>_mask3<round_name>,
<avx512>_fmsub_<mode>_mask<round_name>,
<avx512>_fmsub_<mode>_mask3<round_name>,
<avx512>_fnmadd_<mode>_mask<round_name>,
<avx512>_fnmadd_<mode>_mask3<round_name>,
<avx512>_fnmsub_<mode>_mask<round_name>,
<avx512>_fnmsub_<mode>_mask3<round_name>,
<avx512>_fmaddsub_<mode>_mask<round_name>,
<avx512>_fmaddsub_<mode>_mask3<round_name>,
<avx512>_fmsubadd_<mode>_mask<round_name>,
<avx512>_fmsubadd_<mode>_mask3<round_name>): Use
<round_nimm_predicate> instead of nonimmediate_operand.
(fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
fmai_vmfnmadd_<mode><round_name>, fmai_vmfnmsub_<mode><round_name>):
Use register_operand instead of <round_nimm_predicate> for the
operand that needs to match output.
(*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
*fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>):
Likewise.  Formatting fixes.

From-SVN: r269869

5 years agore PR target/89784 (Missing AVX512 intrinsics)
Jakub Jelinek [Fri, 22 Mar 2019 10:08:40 +0000 (11:08 +0100)]
re PR target/89784 (Missing AVX512 intrinsics)

PR target/89784
* config/i386/i386.c (enum ix86_builtins): Remove
IX86_BUILTIN_VFMSUBSD3_MASK3 and IX86_BUILTIN_VFMSUBSS3_MASK3.
* config/i386/i386-builtin.def (__builtin_ia32_vfmaddsd3_mask,
__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
__builtin_ia32_vfmsubss3_mask3): New builtins.
* config/i386/sse.md (avx512f_vmfmadd_<mode>_mask<round_name>,
avx512f_vmfmadd_<mode>_mask3<round_name>,
avx512f_vmfmadd_<mode>_maskz_1<round_name>,
*avx512f_vmfmsub_<mode>_mask<round_name>,
avx512f_vmfmsub_<mode>_mask3<round_name>,
*avx512f_vmfmasub_<mode>_maskz_1<round_name>,
*avx512f_vmfnmadd_<mode>_mask<round_name>,
*avx512f_vmfnmadd_<mode>_mask3<round_name>,
*avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
*avx512f_vmfnmsub_<mode>_mask<round_name>,
*avx512f_vmfnmsub_<mode>_mask3<round_name>,
*avx512f_vmfnmasub_<mode>_maskz_1<round_name>): New define_insns.
(avx512f_vmfmadd_<mode>_maskz<round_expand_name>): New define_expand.
* config/i386/avx512fintrin.h (_mm_mask_fmadd_sd, _mm_mask_fmadd_ss,
_mm_mask3_fmadd_sd, _mm_mask3_fmadd_ss, _mm_maskz_fmadd_sd,
_mm_maskz_fmadd_ss, _mm_mask_fmsub_sd, _mm_mask_fmsub_ss,
_mm_mask3_fmsub_sd, _mm_mask3_fmsub_ss, _mm_maskz_fmsub_sd,
_mm_maskz_fmsub_ss, _mm_mask_fnmadd_sd, _mm_mask_fnmadd_ss,
_mm_mask3_fnmadd_sd, _mm_mask3_fnmadd_ss, _mm_maskz_fnmadd_sd,
_mm_maskz_fnmadd_ss, _mm_mask_fnmsub_sd, _mm_mask_fnmsub_ss,
_mm_mask3_fnmsub_sd, _mm_mask3_fnmsub_ss, _mm_maskz_fnmsub_sd,
_mm_maskz_fnmsub_ss, _mm_mask_fmadd_round_sd, _mm_mask_fmadd_round_ss,
_mm_mask3_fmadd_round_sd, _mm_mask3_fmadd_round_ss,
_mm_maskz_fmadd_round_sd, _mm_maskz_fmadd_round_ss,
_mm_mask_fmsub_round_sd, _mm_mask_fmsub_round_ss,
_mm_mask3_fmsub_round_sd, _mm_mask3_fmsub_round_ss,
_mm_maskz_fmsub_round_sd, _mm_maskz_fmsub_round_ss,
_mm_mask_fnmadd_round_sd, _mm_mask_fnmadd_round_ss,
_mm_mask3_fnmadd_round_sd, _mm_mask3_fnmadd_round_ss,
_mm_maskz_fnmadd_round_sd, _mm_maskz_fnmadd_round_ss,
_mm_mask_fnmsub_round_sd, _mm_mask_fnmsub_round_ss,
_mm_mask3_fnmsub_round_sd, _mm_mask3_fnmsub_round_ss,
_mm_maskz_fnmsub_round_sd, _mm_maskz_fnmsub_round_ss): New intrinsics.

* gcc.target/i386/sse-13.c (__builtin_ia32_vfmaddsd3_mask,
__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
__builtin_ia32_vfmsubss3_mask3): Define.
* gcc.target/i386/sse-23.c (__builtin_ia32_vfmaddsd3_mask,
__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
__builtin_ia32_vfmsubss3_mask3): Define.
* gcc.target/i386/avx-1.c (__builtin_ia32_vfmaddsd3_mask,
__builtin_ia32_vfmaddsd3_mask3, __builtin_ia32_vfmaddsd3_maskz,
__builtin_ia32_vfmsubsd3_mask3, __builtin_ia32_vfmaddss3_mask,
__builtin_ia32_vfmaddss3_mask3, __builtin_ia32_vfmaddss3_maskz,
__builtin_ia32_vfmsubss3_mask3): Define.
* gcc.target/i386/sse-14.c: Add tests for
_mm_mask{,3,z}_f{,n}m{add,sub}_round_s{s,d} builtins.
* gcc.target/i386/sse-22.c: Likewise.

2019-03-22  Hongtao Liu  <hongtao.liu@intel.com>

* gcc.target/i386/avx512f-vfmaddXXXsd-1.c (avx512f_test): Add tests
for _mm_mask{,3,z}_*.
* gcc.target/i386/avx512f-vfmaddXXXss-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfmsubXXXsd-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfmsubXXXss-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfnmaddXXXsd-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfnmaddXXXss-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfnmsubXXXsd-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfnmsubXXXss-1.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfmaddXXXsd-2.c: New test.
* gcc.target/i386/avx512f-vfmaddXXXss-2.c: New test.
* gcc.target/i386/avx512f-vfmsubXXXsd-2.c: New test.
* gcc.target/i386/avx512f-vfmsubXXXss-2.c: New test.
* gcc.target/i386/avx512f-vfnmaddXXXsd-2.c: New test.
* gcc.target/i386/avx512f-vfnmaddXXXss-2.c: New test.
* gcc.target/i386/avx512f-vfnmsubXXXsd-2.c: New test.
* gcc.target/i386/avx512f-vfnmsubXXXss-2.c: New test.

From-SVN: r269868

5 years agoPR tree-optimization/89350 - Wrong -Wstringop-overflow= warning since r261518
Martin Sebor [Fri, 22 Mar 2019 02:58:27 +0000 (02:58 +0000)]
PR tree-optimization/89350 - Wrong -Wstringop-overflow= warning since r261518

gcc/ChangeLog:

PR tree-optimization/89350
* builtins.c (compute_objsize): Also ignore offsets whose upper
bound is negative.
* gimple-ssa-warn-restrict.c (builtin_memref): Add new member.
(builtin_memref::builtin_memref): Initialize new member.
Allow EXPR to be null.
(builtin_memref::extend_offset_range): Replace local with a member.
Avoid assuming pointer offsets are unsigned.
(builtin_memref::set_base_and_offset): Determine base object
before computing offset range.
(builtin_access::builtin_access): Handle memset.
(builtin_access::generic_overlap): Replace local with a member.
(builtin_access::strcat_overlap): Same.
(builtin_access::overlap): Same.
(maybe_diag_overlap): Same.
(maybe_diag_access_bounds): Same.
(wrestrict_dom_walker::check_call): Handle memset.
(check_bounds_or_overlap): Same.

gcc/testsuite/ChangeLog:

PR tree-optimization/89350
* gcc.dg/Wstringop-overflow.c: Xfail overly ambitious tests.
* gcc.dg/Wstringop-overflow-11.c: New test.
* gcc.dg/Wstringop-overflow-12.c: New test.
* gcc.dg/pr89350.c: New test.
* gcc.dg/pr40340-1.c: Adjust expected warning.
* gcc.dg/pr40340-2.c: Same.
* gcc.dg/pr40340-4.c: Same.
* gcc.dg/pr40340-5.c: Same.

From-SVN: r269867

5 years agoDaily bump.
GCC Administrator [Fri, 22 Mar 2019 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r269866

5 years agoIntegrate C++17 parallel algorithms
Thomas Rodgers [Thu, 21 Mar 2019 23:48:49 +0000 (23:48 +0000)]
Integrate C++17 parallel algorithms

This is the Intel implementation of the C++17 parallel
algorithms, which has been donated to both GCC and LLVM. The upstream
project is at -

https://reviews.llvm.org/source/pstl/

The new files in the include/pstl sub-directory are covered by the
LICENSE.txt in that sub-directory, as are the tests in
testsuite/**/pstl/*

* include/Makefile.am (std_header): Add ${std_srcdir}/execution.
(pstl_srcdir, pstl_builddir, pstl_headers): New variables.
(allstamped): Add stamp-pstl.
(install-headers): Add ptsl_builddir.
* include/Makefile.in: Regenerate.
* include/bits/c++config: Add pstl configuration.
* include/pstl/LICENSE.txt: New file.
* include/pstl/algorithm_fwd.h: New file.
* include/pstl/algorithm_impl.h: New file.
* include/pstl/execution_defs.h: New file.
* include/pstl/execution_impl.h: New file.
* include/pstl/glue_algorithm_defs.h: New file.
* include/pstl/glue_algorithm_impl.h: New file.
* include/pstl/glue_execution_defs.h: New file.
* include/pstl/glue_memory_defs.h: New file.
* include/pstl/glue_memory_impl.h: New file.
* include/pstl/glue_numeric_defs.h: New file.
* include/pstl/glue_numeric_impl.h: New file.
* include/pstl/memory_impl.h: New file.
* include/pstl/numeric_fwd.h: New file.
* include/pstl/numeric_impl.h: New file.
* include/pstl/parallel_backend.h: New file.
* include/pstl/parallel_backend_tbb.h: New file.
* include/pstl/parallel_backend_utils.h: New file.
* include/pstl/parallel_impl.h: New file.
* include/pstl/pstl_config.h: New file.
* include/pstl/unseq_backend_simd.h: New file.
* include/pstl/utils.h: New file.
* include/std/algorithm: Include parallel algorithm implementations.
* include/std/execution: New file.
* include/std/memory: Include parallel algorithm implementations.
* include/std/numeric: Include parallel algorithm implementations.
* include/std/version: Add parallel algorithms feature test macro.
* testsuite/util/pstl/pstl_test_config.h: New file.
* testsuite/util/pstl/test_utils.h: New file.
* testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
* testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
* testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
* testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
* testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
* testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
* testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
* testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
* testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
* testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
* testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
* testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
* testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
* testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
* testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
* testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
* testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
* testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
* testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.

From-SVN: r269863

5 years agore PR lto/89692 (ICE in streamer_write_chain, at tree-streamer-out.c:506)
Jan Hubicka [Thu, 21 Mar 2019 22:04:29 +0000 (23:04 +0100)]
re PR lto/89692 (ICE in streamer_write_chain, at tree-streamer-out.c:506)

PR lto/89692
* tree.c (fld_type_variant, fld_incomplete_type_of,
fld_process_array_type): Call fld->pset.add and don't call
add_tree_to_fld_list if it returns true.
(free_lang_data_in_type): Similarly with self-recursive call.  Purge
non-marked types from TYPE_NEXT_VARIANT list.
(find_decls_types_r): Call fld_worklist_push for TYPE_CANONICAL (t).

* g++.dg/other/pr89692.C: New test.

From-SVN: r269862

5 years agore PR c++/71446 (Incorrect overload resolution when using designated initializers)
Jakub Jelinek [Thu, 21 Mar 2019 22:03:07 +0000 (23:03 +0100)]
re PR c++/71446 (Incorrect overload resolution when using designated initializers)

PR c++/71446
* call.c (filed_in_pset): Change pset from hash_set<tree> * to
hash_set<tree, true> &, adjust uses accordingly.
(build_aggr_conv): Change pset from hash_set<tree> *
to hash_set<tree, true>.  Replace goto fail; with return NULL;,
adjust pset uses.

From-SVN: r269861

5 years agore PR c++/89767 (ICE with tuple and optimization)
Jakub Jelinek [Thu, 21 Mar 2019 22:01:02 +0000 (23:01 +0100)]
re PR c++/89767 (ICE with tuple and optimization)

PR c++/89767
* parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
variables, check for duplicates in this function.
* lambda.c (add_capture): Don't check for duplicates nor use
IDENTIFIER_MARKED.
(register_capture_members): Don't clear IDENTIFIER_MARKED here.

* g++.dg/cpp1y/lambda-init18.C: New test.
* g++.dg/cpp1y/lambda-init19.C: New test.
* g++.dg/cpp1y/pr89767.C: New test.

From-SVN: r269860

5 years agohash-table.h (hash_table): Add Lazy template parameter defaulted to false...
Jakub Jelinek [Thu, 21 Mar 2019 22:00:04 +0000 (23:00 +0100)]
hash-table.h (hash_table): Add Lazy template parameter defaulted to false...

* hash-table.h (hash_table): Add Lazy template parameter defaulted
to false, if true, don't alloc_entries during construction, but defer
it to the first method that needs m_entries allocated.
(hash_table::hash_table, hash_table::~hash_table,
hash_table::alloc_entries, hash_table::find_empty_slot_for_expand,
hash_table::too_empty_p, hash_table::expand, hash_table::empty_slow,
hash_table::clear_slot, hash_table::traverse_noresize,
hash_table::traverse, hash_table::iterator::slide): Adjust all methods.
* hash-set.h (hash_set): Add Lazy template parameter defaulted to
false.
(hash_set::contains): If Lazy is true, use find_slot_with_hash with
NO_INSERT instead of find_with_hash.
(hash_set::traverse, hash_set::iterator, hash_set::iterator::m_iter,
hash_set::m_table): Add Lazy to template params of hash_table.
(gt_ggc_mx, gt_pch_nx): Use false as Lazy in hash_set template param.
* attribs.c (test_attribute_exclusions): Likewise.
* hash-set-tests.c (test_set_of_strings): Add iterator tests for
hash_set.  Add tests for hash_set with Lazy = true.
c-family/
* c-common.c (per_file_includes_t): Use false as Lazy in hash_set
template param.
jit/
* jit-recording.c (reproducer::m_set_identifiers): Use false as Lazy
in hash_set template param.

From-SVN: r269859

5 years ago[PR72741] Properly handle clauses specifying the level of parallelism for 'external...
Thomas Schwinge [Thu, 21 Mar 2019 20:13:44 +0000 (21:13 +0100)]
[PR72741] Properly handle clauses specifying the level of parallelism for 'external' Fortran OpenACC routines

..., so as to also for these enable the generic middle end OMP code to verify
proper nesting of loops/routines regarding their levels of parallelism.

gcc/fortran/
PR fortran/72741
* openmp.c (gfc_match_oacc_routine): Set the level of parallelism
for all variants.
(gfc_resolve_oacc_routines): Call gfc_add_omp_declare_target.
gcc/testsuite/
PR fortran/72741
* c-c++-common/goacc/routine-3-extern.c: New file.
* c-c++-common/goacc/routine-3.c: Adjust.
* c-c++-common/goacc/routine-4-extern.c: New file.
* c-c++-common/goacc/routine-4.c: Adjust.
* gfortran.dg/goacc/routine-module-3.f90: New file.
* gfortran.dg/goacc/routine-external-level-of-parallelism-1.f: New
file.
* gfortran.dg/goacc/routine-external-level-of-parallelism-2.f:
Likewise.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r269858

5 years ago[PR89773] Fortran OpenACC 'routine' directive refuses procedures with implicit EXTERN...
Thomas Schwinge [Thu, 21 Mar 2019 20:02:42 +0000 (21:02 +0100)]
[PR89773] Fortran OpenACC 'routine' directive refuses procedures with implicit EXTERNAL attribute

gcc/fortran/
PR fortran/89773
* gfortran.h (gfc_oacc_routine_name): Add loc member.
(gfc_resolve_oacc_routines): Declare.
* openmp.c (gfc_match_oacc_routine): Move some error checking
into...
(gfc_resolve_oacc_routines): ... this new function.
* resolve.c (resolve_codes): Call it.
gcc/testsuite/
PR fortran/89773
* gfortran.dg/goacc/pr89773.f90: New file.
* gfortran.dg/goacc/pr77765.f90: Adjust.
* gfortran.dg/goacc/routine-6.f90: Adjust, and extend.

From-SVN: r269857

5 years ago[PR72741] The name in a Fortran OpenACC 'routine' directive refers to the containing...
Thomas Schwinge [Thu, 21 Mar 2019 19:54:51 +0000 (20:54 +0100)]
[PR72741] The name in a Fortran OpenACC 'routine' directive refers to the containing subroutine or function

gcc/fortran/
PR fortran/72741
* openmp.c (gfc_match_oacc_routine): Clarify.
gcc/testsuite/
PR fortran/72741
* gfortran.dg/goacc/routine-module-mod-1.f90: Update.

From-SVN: r269856

5 years ago[PR72741] Encode OpenACC 'routine' directive's level of parallelism inside Fortran...
Thomas Schwinge [Thu, 21 Mar 2019 19:44:45 +0000 (20:44 +0100)]
[PR72741] Encode OpenACC 'routine' directive's level of parallelism inside Fortran module files

If 'use'ing with an old GCC a new module file (with OpenACC 'routine'
directive's level of parallelism encoded), then that expectedly fails as
follows:

    f951: Fatal Error: Reading module 'routine_module_mod_1' at line 27 column 21: find_enum(): Enum not found

If 'use'ing with a new GCC an old module file (without OpenACC 'routine'
directive's level of parallelism encoded), then that (silently) continues to
accept the module file, and will proceed with the previous, erroneous behavior.

These seem to be acceptable compromises, instead of incrementing 'MOD_VERSION'.

gcc/fortran/
PR fortran/72741
* module.c (verify_OACC_ROUTINE_LOP_NONE): New function.
(enum ab_attribute): Add AB_OACC_ROUTINE_LOP_GANG,
AB_OACC_ROUTINE_LOP_WORKER, AB_OACC_ROUTINE_LOP_VECTOR,
AB_OACC_ROUTINE_LOP_SEQ.
(attr_bits): Add these.
(mio_symbol_attribute): Handle these.
gcc/testsuite/
PR fortran/72741
* gfortran.dg/goacc/routine-module-1.f90: New file.
* gfortran.dg/goacc/routine-module-2.f90: Likewise.
* gfortran.dg/goacc/routine-module-mod-1.f90: Likewise.

From-SVN: r269855

5 years ago[testsuite, Fortran] Provide 'dg-compile-aux-modules' in 'gfortran.dg/goacc/goacc...
Thomas Schwinge [Thu, 21 Mar 2019 19:44:34 +0000 (20:44 +0100)]
[testsuite, Fortran] Provide 'dg-compile-aux-modules' in 'gfortran.dg/goacc/goacc.exp'

..., as yet another copy from 'gfortran.dg/dg.exp', which there are a few
already.

gcc/testsuite/
* gfortran.dg/goacc/goacc.exp (dg-compile-aux-modules): New proc.

From-SVN: r269854

5 years ago[testsuite] Fix 'dg-compile-aux-modules' diagnostic
Thomas Schwinge [Thu, 21 Mar 2019 19:29:57 +0000 (20:29 +0100)]
[testsuite] Fix 'dg-compile-aux-modules' diagnostic

gcc/testsuite/
PR fortran/56408
* gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
(dg-compile-aux-modules): Fix diagnostic.
* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Likewise.
* gfortran.dg/dg.exp (dg-compile-aux-modules): Likewise.

From-SVN: r269851

5 years ago[testsuite, Fortran] Apply DejaGnu 1.4.4 work-around also to 'gfortran.dg/coarray...
Thomas Schwinge [Thu, 21 Mar 2019 19:16:29 +0000 (20:16 +0100)]
[testsuite, Fortran] Apply DejaGnu 1.4.4 work-around also to 'gfortran.dg/coarray/caf.exp:dg-compile-aux-modules'

See trunk r215293.  This unifies all 'dg-compile-aux-modules' instances.

gcc/testsuite/
PR fortran/56408
* gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround
missing nexted dg-test call support in dejaGNU 1.4.4.

From-SVN: r269848

5 years ago[testsuite, Fortran] Consistently set 'DEFAULT_FFLAGS'
Thomas Schwinge [Thu, 21 Mar 2019 18:54:50 +0000 (19:54 +0100)]
[testsuite, Fortran] Consistently set 'DEFAULT_FFLAGS'

In the same 'runtest' instance, 'global' variables persist from one '*.exp'
file to another.

All other '*.exp' files are using " -pedantic-errors" instead of the empty
string as the default for 'DEFAULT_FFLAGS'.  Thus this setting of
'DEFAULT_FFLAGS' is not idempotent, depends on whether
'gfortran.dg/ieee/ieee.exp', or an other defining '*.exp' file is executed
first.

gcc/testsuite/
PR fortran/29383
* gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in
other '*.exp' files.

From-SVN: r269845

5 years agocompiler: add a newline to function receiver type's debug dump
Ian Lance Taylor [Thu, 21 Mar 2019 16:22:56 +0000 (16:22 +0000)]
compiler: add a newline to function receiver type's debug dump

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

From-SVN: r269841

5 years agore PR middle-end/89779 (internal compiler error: tree check: expected class ‘type...
Richard Biener [Thu, 21 Mar 2019 14:27:32 +0000 (14:27 +0000)]
re PR middle-end/89779 (internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in tree_nop_conversion_p, at tree.c:12798)

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

PR tree-optimization/89779
* tree.c (tree_nop_conversion): Consolidate and fix defensive
checks with respect to released SSA names now having error_mark_node
type.
* fold-const.c (operand_equal_p): Likewise.

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

From-SVN: r269838

5 years agoIn C++17 <math.h> should not put special functions in global namespace
Jonathan Wakely [Thu, 21 Mar 2019 14:03:56 +0000 (14:03 +0000)]
In C++17 <math.h> should not put special functions in global namespace

IS 29124 8.2 [sf.mathh] says that <math.h> should add the names of the
special functions to the global namespace.  However, C++17 Annex D
[depr.c.headers] excludes those functions explicitly, so they should not
be placed in the global namespace unconditionally for C++17.

Only add them to the global namespace when IS 29124 is explicitly
requested via the __STDCPP_WANT_MATH_SPEC_FUNCS__ macro.

* include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
(assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
(assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
(comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
(comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
(cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
(cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
(cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
(ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
(ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
(hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
(legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
(sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
(sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
when the special functions IS is enabled, not for C++17.
* testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
Replace with ...
* testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
without checks for special functions in C++17.
* testsuite/26_numerics/headers/cmath/special_functions_global.cc:
New test.

From-SVN: r269837

5 years agoPR libstdc++/88066 Use <> for includes not ""
Jonathan Wakely [Thu, 21 Mar 2019 12:07:10 +0000 (12:07 +0000)]
PR libstdc++/88066 Use <> for includes not ""

These headers were missed in the previous commit for this bug.

There are also several "" includes in the profile mode headers, but
because they're deprecated I'm not fixing them.

* include/backward/hash_map: Use <> for includes not "".
* include/backward/hash_set: Likewise.
* include/backward/strstream: Likewise.
* include/tr1/bessel_function.tcc: Likewise.
* include/tr1/exp_integral.tcc: Likewise.
* include/tr1/legendre_function.tcc: Likewise.
* include/tr1/modified_bessel_func.tcc: Likewise.
* include/tr1/riemann_zeta.tcc: Likewise.

From-SVN: r269835

5 years agore PR c++/78645 (ICE on invalid code (Segmentation fault, cxx_eval_call_expression))
Paolo Carlini [Thu, 21 Mar 2019 12:05:32 +0000 (12:05 +0000)]
re PR c++/78645 (ICE on invalid code (Segmentation fault, cxx_eval_call_expression))

2019-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/78645
* g++.dg/cpp0x/constexpr-ice20.C: New.

From-SVN: r269834