gcc.git
5 years agoDaily bump.
GCC Administrator [Tue, 29 Jan 2019 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268353

5 years agoPR libstdc++/68737 Do not use vsnprintf on HPUX
Jonathan Wakely [Mon, 28 Jan 2019 23:58:57 +0000 (23:58 +0000)]
PR libstdc++/68737 Do not use vsnprintf on HPUX

It doesn't conform to the spec, so use vsprintf with a large buffer
instead.

PR libstdc++/68737
* config/locale/generic/c_locale.h (__convert_from_v)
[_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
* config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
* include/bits/locale_facets.tcc (num_put::_M_insert_float)
[_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.

From-SVN: r268350

5 years agore PR c/89045 (ICE in get_parm_info, at c/c-decl.c:7518)
Jakub Jelinek [Mon, 28 Jan 2019 23:49:51 +0000 (00:49 +0100)]
re PR c/89045 (ICE in get_parm_info, at c/c-decl.c:7518)

PR c/89045
* c-decl.c (build_compound_literal): Don't pushdecl if in parameter
scope.

* gcc.dg/pr89045.c: New test.

From-SVN: r268349

5 years agore PR c/86125 (missing -Wbuiltin-declaration-mismatch on a mismatched return type)
Jakub Jelinek [Mon, 28 Jan 2019 23:21:10 +0000 (00:21 +0100)]
re PR c/86125 (missing -Wbuiltin-declaration-mismatch on a mismatched return type)

PR c/86125
* c-decl.c (last_fileptr_type): Remove.
(last_structptr_types): New variable.
(match_builtin_function_types): Compare TYPE_MAIN_VARIANT of
{old,new}rettype instead of the types themselves.  Assert
last_structptr_types array has the same number of elements
as builtin_structptr_types array.  Use TYPE_MAIN_VARIANT for
argument oldtype and newtype.  Instead of handling
just fileptr_type_node specially, handle all builtin_structptr_types
pointer nodes.  Formatting fix.

* c-common.c (c_common_nodes_and_builtins): Build type variants for
builtin_structptr_types types even for C.

* gcc.dg/Wbuiltin-declaration-mismatch-7.c: Guard testcase for
lp64, ilp32 and llp64 only.
(fputs): Use unsigned long long instead of size_t for return type.
(vfprintf, vfscanf): Accept arbitrary target specific type for
va_list.

From-SVN: r268348

5 years agocompiler: improve recursive type detection
Ian Lance Taylor [Mon, 28 Jan 2019 22:36:05 +0000 (22:36 +0000)]
compiler: improve recursive type detection

    Detect recursive type definition like
    "type T0 T1; type T1 T2; ...... type Tn T0".

    Fixes golang/go#25320.

    Reviewed-on: https://go-review.googlesource.com/c/159837

From-SVN: r268347

5 years agore PR middle-end/89002 (ICE in scan_omp_1_op, at omp-low.c:3166)
Jakub Jelinek [Mon, 28 Jan 2019 22:34:32 +0000 (23:34 +0100)]
re PR middle-end/89002 (ICE in scan_omp_1_op, at omp-low.c:3166)

PR middle-end/89002
* gimplify.c (gimplify_omp_for): When adding OMP_CLAUSE_*_GIMPLE_SEQ
for lastprivate/linear IV, push gimplify context around gimplify_assign
and, if it needed any temporaries, pop it into a gimple bind around the
sequence.

* testsuite/libgomp.c/pr89002.c: New test.

From-SVN: r268346

5 years agore PR middle-end/89002 (ICE in scan_omp_1_op, at omp-low.c:3166)
Jakub Jelinek [Mon, 28 Jan 2019 22:33:33 +0000 (23:33 +0100)]
re PR middle-end/89002 (ICE in scan_omp_1_op, at omp-low.c:3166)

PR middle-end/89002
* gimplify.c (gimplify_omp_for): When adding OMP_CLAUSE_*_GIMPLE_SEQ
for lastprivate/linear IV, push gimplify context around gimplify_assign
and, if it needed any temporaries, pop it into a gimple bind around the
sequence.

* testsuite/libgomp.c/pr89002.c: New test.

From-SVN: r268345

5 years ago[libbacktrace] Fix and simplify xcoff_%.c pattern rule
Tom de Vries [Mon, 28 Jan 2019 22:21:19 +0000 (22:21 +0000)]
[libbacktrace] Fix and simplify xcoff_%.c pattern rule

When generating xcoff_%.c, the last command is a sed command.  In case of a
sed failure, this will leave an incomplete file, which will appear as up to
date to make, so consequently it will not be regenerated.  Fix this by
sedding into a temporary file instead.

Also, use $< to access the prerequisite xcoff.c, instead of spelling out the
file name once more.

2019-01-28  Tom de Vries  <tdevries@suse.de>

* Makefile.am (xcoff_%.c): Generate sed result into temporary file.
Use $< to access prerequisite.
* Makefile.in: Regenerate.

From-SVN: r268344

5 years agoPR c++/88358 - name wrongly treated as type.
Marek Polacek [Mon, 28 Jan 2019 22:14:27 +0000 (22:14 +0000)]
PR c++/88358 - name wrongly treated as type.

* parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
in parameter-list is a type if the function's declarator-id is not
qualified.

* g++.dg/cpp2a/typename1.C: Add dg-error.
* g++.dg/cpp2a/typename13.C: New test.
* g++.dg/cpp2a/typename6.C: Make a function name qualified.
Add typename.

From-SVN: r268343

5 years agoMakefile.in: Really regenerate.
Uros Bizjak [Mon, 28 Jan 2019 22:14:19 +0000 (23:14 +0100)]
Makefile.in: Really regenerate.

* Makefile.in: Really regenerate.

From-SVN: r268342

5 years ago* g++.dg/cpp0x/enum37.C: Add dg-error.
Marek Polacek [Mon, 28 Jan 2019 21:58:36 +0000 (21:58 +0000)]
* g++.dg/cpp0x/enum37.C: Add dg-error.

From-SVN: r268341

5 years agoc-warn.c (check_address_or_pointer_of_packed_member): Handle the case when rhs is...
Bernd Edlinger [Mon, 28 Jan 2019 13:14:37 +0000 (13:14 +0000)]
c-warn.c (check_address_or_pointer_of_packed_member): Handle the case when rhs is of array type correctly.

2019-01-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-warn.c (check_address_or_pointer_of_packed_member): Handle the case
        when rhs is of array type correctly.  Fix handling of nested structures.
        Fix handling of indirect_ref together with nop_expr and/or addr_expr.
        (check_and_warn_address_or_pointer_of_packed_member): Fix handling of
        type casts within nested compound expressions.

testsuite:
2019-01-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-c++-common/Waddress-of-packed-member-1.c: Extended test case.
        * c-c++-common/Waddress-of-packed-member-2.c: New test case.

From-SVN: r268337

5 years agocommon.opt (-Wattribute-alias): Remove "no-" from name.
Bernd Edlinger [Mon, 28 Jan 2019 13:10:29 +0000 (13:10 +0000)]
common.opt (-Wattribute-alias): Remove "no-" from name.

2019-01-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * common.opt (-Wattribute-alias): Remove "no-" from name.
        Make -Wattribute-alias command line option and
        #pragma GCC diagnostic ignored "-Wattribute-alias" work again.

testsuite:
2019-01-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.dg/Wattribute-alias.c: Add test for #pragma GCC diagnostic ignored
        "-Wattribute-alias".

From-SVN: r268336

5 years agore PR target/89073 (x86 __attribute__ ((target("sha"))) not documented)
Jakub Jelinek [Mon, 28 Jan 2019 10:38:29 +0000 (11:38 +0100)]
re PR target/89073 (x86 __attribute__ ((target("sha"))) not documented)

PR target/89073
* doc/invoke.texi (-mclwb, -mprfchw, -mrdpid, -mrdseed, -msgx,
-madx, -mhle, -mavx5124fmaps, -mavx512vnni, -mavx5124vnniw): Document
x86 ISA options.
(bmi2): Add missing @opindex.
* doc/extend.texi (x86 target attribute): Move fma4, lwp, ssse3
options alphabetically.  Add missing 3dnow, 3dnowa, adx, avx, avx2,
avx5124fmaps, avx5124vnniw, avx512bitalg, avx512bw, avx512cd,
avx512dq, avx512er, avx512f, avx512ifma, avx512pf, avx512vbmi,
avx512vbmi2, avx512vl, avx512vnni, avx512vpopcntdq, bmi, bmi2,
cldemote, clflushopt, clwb, clzero, crc32, cx16, f16c, fma, fsgsbase,
fxsr, gfni, hle, lzcnt, movbe, movdir64b, movdiri, mwaitx, pconfig,
pku, prefetchwt1, prfchw, ptwrite, rdpid, rdrnd, rdseed, rtm, sahf,
sgx, sha, shstk, tbm, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave,
xsavec, xsaveopt and xsaves options.

From-SVN: r268335

5 years agore PR debug/89076 (gcc/dwarf2out.c:23270:9: warning: duplicated ‘if’ condition)
Richard Biener [Mon, 28 Jan 2019 09:36:50 +0000 (09:36 +0000)]
re PR debug/89076 (gcc/dwarf2out.c:23270:9: warning: duplicated ‘if’ condition)

2019-01-28  Richard Biener  <rguenther@suse.de>

PR debug/89076
* dwarf2out.c (gen_subprogram_die): Remove leftover from MPX
support removal.

From-SVN: r268334

5 years agore PR testsuite/89064 (libgomp.graphite/force-parallel-5.c fails starting with r268257)
Richard Biener [Mon, 28 Jan 2019 09:07:30 +0000 (09:07 +0000)]
re PR testsuite/89064 (libgomp.graphite/force-parallel-5.c fails starting with r268257)

2019-01-28  Richard Biener  <rguenther@suse.de>

PR testsuite/89064
PR tree-optimization/86865
* testsuite/libgomp.graphite/force-parallel-5.c: XFAIL.

From-SVN: r268333

5 years agore PR tree-optimization/88739 (Big-endian union bug)
Richard Biener [Mon, 28 Jan 2019 08:15:42 +0000 (08:15 +0000)]
re PR tree-optimization/88739 (Big-endian union bug)

2019-01-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/88739
* tree-cfg.c (verify_types_in_gimple_reference): Verify
BIT_FIELD_REFs only are applied to mode-precision operands
when they are integral.
(verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid generating
BIT_FIELD_REFs of non-mode-precision integral operands.

From-SVN: r268332

5 years agolibgfortran: Use proper gthr.h API
Sebastian Huber [Mon, 28 Jan 2019 06:35:41 +0000 (06:35 +0000)]
libgfortran: Use proper gthr.h API

libgfortran/

* io/async.c (init_adv_cond): Use __GTHREAD_COND_INIT_FUNCTION().

From-SVN: r268331

5 years agoDaily bump.
GCC Administrator [Mon, 28 Jan 2019 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268330

5 years agore PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)
Uros Bizjak [Sun, 27 Jan 2019 20:44:36 +0000 (21:44 +0100)]
re PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)

PR fortran/70696
* gfortran.dg/coarray/event_3.f0: Add save attribue to x.

From-SVN: r268325

5 years agoPR c++/88815 - narrowing conversion lost in decltype.
Marek Polacek [Sun, 27 Jan 2019 20:19:41 +0000 (20:19 +0000)]
PR c++/88815 - narrowing conversion lost in decltype.

PR c++/78244 - narrowing conversion in template not detected.
* cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
* pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
* semantics.c (finish_compound_literal): When the compound literal
isn't instantiation-dependent and the type isn't type-dependent,
fall back to the normal processing.  Set CONSTRUCTOR_IS_DEPENDENT.

* g++.dg/cpp0x/Wnarrowing15.C: New test.
* g++.dg/cpp0x/Wnarrowing16.C: New test.
* g++.dg/cpp0x/constexpr-decltype3.C: New test.
* g++.dg/cpp1y/Wnarrowing1.C: New test.

From-SVN: r268321

5 years agoPR c++/89024 - ICE with incomplete enum type.
Marek Polacek [Sun, 27 Jan 2019 19:54:29 +0000 (19:54 +0000)]
PR c++/89024 - ICE with incomplete enum type.

* call.c (standard_conversion): When converting an
ARITHMETIC_TYPE_P to an incomplete type, return NULL.

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

From-SVN: r268320

5 years agore PR libfortran/89020 (close(status='DELETE') does not remove file)
Jerry DeLisle [Sun, 27 Jan 2019 19:42:34 +0000 (19:42 +0000)]
re PR libfortran/89020 (close(status='DELETE') does not remove file)

2019-01-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/89020
* io/close.c (st_close): Simplify text of error message to not
presume a specific cause of failure to remove file.

From-SVN: r268319

5 years agorepinfo.adb (List_Component_Layout): Remove superfluous space for zero-sized field.
Eric Botcazou [Sun, 27 Jan 2019 19:14:14 +0000 (19:14 +0000)]
repinfo.adb (List_Component_Layout): Remove superfluous space for zero-sized field.

* repinfo.adb (List_Component_Layout): Remove superfluous space for
zero-sized field.
* gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro.
* gcc-interface/gigi.h (create_extra_subtype): Declare.
* gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise.
(update_n_elem): New function.
(gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes
instead of doing it manually.
<E_Array_Type>: Use update_n_elem to compute the maximum size.  Use the
  index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE
of the array to the maximum size.
<E_Array_Subtype>: Create an extra subtype using the index type of the
base array type for self-referential bounds.  Use update_n_elem to
compute the maximum size.  Set TYPE_ARRAY_MAX_SIZE of the array to the
maximum size.
(gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants.
* gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of
the base type for an extra subtype.
(gnat_type_max_size): Remove obsolete code.
* gcc-interface/trans.c (Attribute_to_gnu): Minor tweak.
(can_be_lower_p): Deal with pathological types.
* gcc-interface/utils.c (create_extra_subtype): New function.
(create_field_decl): Minor tweak.
(max_size) <tcc_reference>: Compute a better value by using the extra
  subtypes on the self-referential bounds.
<tcc_binary>: Rewrite.  Deal with "negative value" in unsigned types.
<tcc_expression>: Likewise.
* gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds
of the arrays upfront.  Swap only if the second length is not constant.
Use comparisons on the original bounds consistently for the null tests.
(build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro.
(build_allocator): Minor tweak.

From-SVN: r268318

5 years agodecl.c (array_type_has_nonaliased_component): Return the same value for every dimensi...
Eric Botcazou [Sun, 27 Jan 2019 18:05:59 +0000 (18:05 +0000)]
decl.c (array_type_has_nonaliased_component): Return the same value for every dimension of a multidimensional array type.

* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
the same value for every dimension of a multidimensional array type.

From-SVN: r268314

5 years agore PR target/87214 (r263772 miscompiled 520.omnetpp_r in SPEC CPU 2017)
Jakub Jelinek [Sun, 27 Jan 2019 11:56:44 +0000 (12:56 +0100)]
re PR target/87214 (r263772 miscompiled 520.omnetpp_r in SPEC CPU 2017)

PR target/87214
* config/i386/sse.md
(<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>,
avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ensure the
first constants in pairs are multiples of 2.  Formatting fixes.
(avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
avx512vl_shuf_<shuffletype>32x4_1<mask_name>): Ensure the
first constants in each quadruple are multiples of 4.  Formatting fixes.

* gcc.target/i386/avx512vl-pr87214-1.c: New test.
* gcc.target/i386/avx512vl-pr87214-2.c: New test.

From-SVN: r268310

5 years agore PR libfortran/89020 (close(status='DELETE') does not remove file)
Jerry DeLisle [Sun, 27 Jan 2019 01:36:40 +0000 (01:36 +0000)]
re PR libfortran/89020 (close(status='DELETE') does not remove file)

2019-01-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/89020
* io/close.c (st_close): Fix typo.

From-SVN: r268309

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

From-SVN: r268308

5 years ago[PR ipa/88933] Careful CFG cleanup in IPA-CP function transformation
Martin Jambor [Sat, 26 Jan 2019 22:19:17 +0000 (23:19 +0100)]
[PR ipa/88933] Careful CFG cleanup in IPA-CP function transformation

2019-01-26  Martin Jambor  <mjambor@suse.cz>

PR ipa/88933
* tree-inline.c: Include tree-cfgcleanup.h.
(delete_unreachable_blocks_update_callgraph): Move...
* tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
...here, make externally visible, make second argument bool, adjust
all callers.
* tree-cfgcleanup.c: Include cgraph.h.
* tree-cfgcleanup.h (delete_unreachable_blocks_update_callgraph):
Declare.
* ipa-prop.c: Include tree-cfgcleanup.h.
(ipcp_transform_function): Call
delete_unreachable_blocks_update_callgraph instead of cleaning uo CFG.

testsuite/
* gfortran.dg/gomp/pr88933.f90: New test.

From-SVN: r268305

5 years agoFix ICE when handling void initialized manifest constants.
Iain Buclaw [Sat, 26 Jan 2019 21:07:15 +0000 (21:07 +0000)]
Fix ICE when handling void initialized manifest constants.

gcc/d/ChangeLog:

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

PR d/89042
* decl.cc (DeclVisitor::visit(VarDeclaration)): Don't assert if
handling a void initialized manifest constant.

gcc/testsuite/ChangeLog:

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

PR d/89042
* gdc.dg/pr89042a.d: New test.
* gdc.dg/pr89042b.d: New test.

From-SVN: r268304

5 years agore PR fortran/57553 ([F08] Valid use of STORAGE_SIZE rejected, bad error message...
Harald Anlauf [Sat, 26 Jan 2019 20:45:55 +0000 (20:45 +0000)]
re PR fortran/57553 ([F08] Valid use of STORAGE_SIZE rejected, bad error message for invalid use)

2019-01-26  Harald Anlauf  <anlauf@gmx.de>

PR fortran/57553
* expr.c (check_inquiry): Add list of inquiry functions allowed in
constant expressions for F2008+.

2019-01-26  Harald Anlauf  <anlauf@gmx.de>

PR fortran/57553
* gfortran.dg/pr57553.f90: New test.

From-SVN: r268303

5 years agoFix bug number referenced in previous commit.
Jerry DeLisle [Sat, 26 Jan 2019 20:39:33 +0000 (20:39 +0000)]
Fix bug number referenced in previous commit.

From-SVN: r268302

5 years agore PR libfortran/89020 (close(status='DELETE') does not remove file)
Jerry DeLisle [Sat, 26 Jan 2019 20:27:16 +0000 (20:27 +0000)]
re PR libfortran/89020 (close(status='DELETE') does not remove file)

2019-01-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libfortran/88020
* io/close.c (st_close): Generate error if calls to 'remove' return
an error.

From-SVN: r268301

5 years agoAdd myself to MAINTAINERS
Harald Anlauf [Sat, 26 Jan 2019 20:12:45 +0000 (20:12 +0000)]
Add myself to MAINTAINERS

From-SVN: r268300

5 years agotrans.c (Regular_Loop_to_gnu): Use the SLOC of the iteration scheme, if present,...
Eric Botcazou [Sat, 26 Jan 2019 16:07:47 +0000 (16:07 +0000)]
trans.c (Regular_Loop_to_gnu): Use the SLOC of the iteration scheme, if present, throughout the translation.

* gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the
iteration scheme, if present, throughout the translation.

From-SVN: r268299

5 years agotrans.c (gnat_to_gnu): Use DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size...
Eric Botcazou [Sat, 26 Jan 2019 15:59:34 +0000 (15:59 +0000)]
trans.c (gnat_to_gnu): Use DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned by a...

* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned
by a call to memset if the LHS is a DECL.

From-SVN: r268296

5 years agolibphobos: Merge phobos and druntime with upstream.
Iain Buclaw [Sat, 26 Jan 2019 13:41:26 +0000 (13:41 +0000)]
libphobos: Merge phobos and druntime with upstream.

Commits merged from druntime.

    Fix struct tls_index definition on x32
    https://github.com/dlang/druntime/pull/2354

    Update SectionGroup signatures to match on all targets
    https://github.com/dlang/druntime/pull/2401

    Fix issue 19128 - argument to alloca may be too large
    https://github.com/dlang/druntime/pull/2409

    Define some common filesystem limits in core.stdc.limits
    https://github.com/dlang/druntime/pull/2460

    Use version Darwin instead of OSX in core.sys.posix.aio
    https://github.com/dlang/druntime/pull/2470

Commits merged from phobos.

    Don't run HardFloat tests on SoftFloat systems
    https://github.com/dlang/phobos/pull/5358

    Remove reliance on stdin, stdout, stderr being aliasable
    https://github.com/dlang/phobos/pull/5718

    Solaris: add import clock_gettime to currStdTime
    https://github.com/dlang/phobos/pull/5807

    Don't print debug messages when building unittests
    https://github.com/dlang/phobos/pull/6827

    Add HPPA support to phobos
    Fixes https://gcc.gnu.org/PR89054
    https://github.com/dlang/phobos/pull/6836

From-SVN: r268293

5 years agotrans.c (struct loop_info_d): Remove artificial field.
Eric Botcazou [Sat, 26 Jan 2019 12:02:51 +0000 (12:02 +0000)]
trans.c (struct loop_info_d): Remove artificial field.

* gcc-interface/trans.c (struct loop_info_d): Remove artificial field.
(Loop_Statement_to_gnu): Do not set it.

From-SVN: r268290

5 years agotrans.c (Iterate_Acc_Clause_Arg): Fix formatting.
Eric Botcazou [Sat, 26 Jan 2019 11:45:40 +0000 (11:45 +0000)]
trans.c (Iterate_Acc_Clause_Arg): Fix formatting.

* gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting.
(Acc_gnat_to_gnu): Likewise.
(Acc_Data_to_gnu): Likewise.
(Acc_Var_to_gnu): Likewise.
(Acc_Reduc_to_gnu): Likewise.
(Acc_Size_List_to_gnu): Likewise.
(Pragma_to_gnu) <Pragma_Acc_Loop>: Likewise.
<Pragma_Acc_Data>): Likewise.
(find_loop_for): Remove default value for parameters.
* gcc-interface/trans.c (gnat_to_gnu) <N_Op_And>: Merge into...
<N_Op_Eq>): ...this.

From-SVN: r268289

5 years agodecl.c (annotate_value): Use test on the sign bit instead of on the sign of the value.
Eric Botcazou [Sat, 26 Jan 2019 11:34:39 +0000 (11:34 +0000)]
decl.c (annotate_value): Use test on the sign bit instead of on the sign of the value.

* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Use test on
the sign bit instead of on the sign of the value.
<PLUS_EXPR>: Turn addition of negative constant into subtraction.
<MULT_EXPR>: Add test for degenerate case.
<BIT_AND_EXPR>: Simplify.

From-SVN: r268286

5 years agore PR preprocessor/88974 (ICE: Segmentation fault (in linemap_resolve_location))
Jakub Jelinek [Sat, 26 Jan 2019 10:08:00 +0000 (11:08 +0100)]
re PR preprocessor/88974 (ICE: Segmentation fault (in linemap_resolve_location))

PR preprocessor/88974
* directives.c (SEEN_EOL): Move macro to ...
* internal.h (SEEN_EOL): ... here.
* expr.c (parse_has_include): Don't cpp_get_token if SEEN_EOL ().

* c-c++-common/cpp/pr88974.c: New test.

From-SVN: r268285

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

From-SVN: r268284

5 years agoFix PR number in my ChangeLog entry.
Vladimir Makarov [Fri, 25 Jan 2019 22:24:43 +0000 (22:24 +0000)]
Fix PR number in my ChangeLog entry.

From-SVN: r268281

5 years ago2019-01-25 Vladimir Makarov <vmakarov@redhat.com>
Vladimir Makarov [Fri, 25 Jan 2019 22:13:43 +0000 (22:13 +0000)]
2019-01-25  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/888846
* ira.c (process_set_for_memref_referenced_p): New.
(memref_referenced_p): Add new param.  Use
process_set_for_memref_referenced_p.  Add new switch cases.
(memref_used_between_p): Pass new arg to memref_referenced_p.

From-SVN: r268280

5 years agore PR c++/88969 (ICE in build_op_delete_call, at cp/call.c:6509)
Paolo Carlini [Fri, 25 Jan 2019 19:50:55 +0000 (19:50 +0000)]
re PR c++/88969 (ICE in build_op_delete_call, at cp/call.c:6509)

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

PR c++/88969
* call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
* decl2.c (coerce_delete_type): Use build_pointer_type instead
of TYPE_POINTER_TO.

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

PR c++/88969
* g++.dg/cpp2a/destroying-delete2.C: New.
* g++.dg/cpp2a/destroying-delete3.C: Likewise.

From-SVN: r268278

5 years agore PR fortran/85780 (ICE in resolve_fl_procedure, at fortran/resolve.c:12504)
Steven G. Kargl [Fri, 25 Jan 2019 17:55:25 +0000 (17:55 +0000)]
re PR fortran/85780 (ICE in resolve_fl_procedure, at fortran/resolve.c:12504)

2019-01-25  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85780
* decl.c (gfc_match_subroutine): Check for conflict between BIND(C)
and alternative return.

2019-01-25  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85780
* gfortran.dg/pr85780.f90: Update testcase for error message.

From-SVN: r268277

5 years agoAdd myself to MAINTAINERS
Kwok Cheung Yeung [Fri, 25 Jan 2019 17:23:19 +0000 (17:23 +0000)]
Add myself to MAINTAINERS

2019-01-25  Kwok Cheung Yeung  <kcy@codesourcery.com>

* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r268276

5 years ago[backtrace] Avoid segfault
Nathan Sidwell [Fri, 25 Jan 2019 17:16:53 +0000 (17:16 +0000)]
[backtrace] Avoid segfault

https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01521.html

* elf.c (elf_add): Pass "" filename to recursive call with
separated debug.

From-SVN: r268275

5 years agoThis is pretty unlikely in real code...
Richard Earnshaw [Fri, 25 Jan 2019 17:09:33 +0000 (17:09 +0000)]
This is pretty unlikely in real code...

This is pretty unlikely in real code, but similar to Arm, the AArch64
ABI has a bug with the handling of 128-bit bit-fields, where if the
bit-field dominates the overall alignment the back-end code may end up
passing the argument correctly.  This is a regression that started in
gcc-6 when the ABI support code was updated to support overaligned
types.  The fix is very similar in concept to the Arm fix.  128-bit
bit-fields are fortunately extremely rare, so I'd be very surprised if
anyone has been bitten by this.

PR target/88469
gcc/
* config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add new
argument ABI_BREAK.  Set to true if the calculated alignment has
changed in gcc-9.  Check bit-fields for their base type alignment.
(aarch64_layout_arg): Warn if argument passing has changed in gcc-9.
(aarch64_function_arg_boundary): Likewise.
(aarch64_gimplify_va_arg_expr): Likewise.

gcc/testsuite/
* gcc.target/aarch64/aapcs64/test_align-10.c: New test.
* gcc.target/aarch64/aapcs64/test_align-11.c: New test.
* gcc.target/aarch64/aapcs64/test_align-12.c: New test.

From-SVN: r268273

5 years agoFix output_constructor_bitfield handling of wide bitfields (PR89037)
Richard Sandiford [Fri, 25 Jan 2019 16:57:32 +0000 (16:57 +0000)]
Fix output_constructor_bitfield handling of wide bitfields (PR89037)

The testcase was failing because we were trying to access
TREE_INT_CST_ELT (x, 1) of a 128-bit integer that was small enough
to need only a single element.

2019-01-25  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR middle-end/89037
* varasm.c (output_constructor_bitfield): Use wi::extract_uhwi
instead of accessing TREE_INT_CST_ELT directly.

gcc/testsuite/
PR middle-end/89037
* gcc.dg/pr89037.c: New test.

From-SVN: r268272

5 years agoFix Xiong's changelogs a bit
Segher Boessenkool [Fri, 25 Jan 2019 16:20:40 +0000 (17:20 +0100)]
Fix Xiong's changelogs a bit

From-SVN: r268271

5 years ago[libbacktrace] Fix strrchr segfault
Tom de Vries [Fri, 25 Jan 2019 14:39:58 +0000 (14:39 +0000)]
[libbacktrace] Fix strrchr segfault

Currently, when running a libbacktrace testcase t with .gnu_debuglink to
t.debug, and t.debug having a .gnu_debugaltlink to t.alt.debug, a segfault
is triggered when calling strrchr with a NULL string from
elf_find_debugfile_by_debuglink.  The NULL string originates from the elf_add
called for the .gnu_debugaltlink, which uses NULL as filename argument.

Fix this by using "" as filename argument instead.

2019-01-25  Tom de Vries  <tdevries@suse.de>

* elf.c (elf_add): When handling .gnu_debugaltlink, call elf_add with
filename == "".
* Makefile.am (TESTS): Add btest_dwz_gnudebuglink.
* Makefile.in: Regenerate.

From-SVN: r268269

5 years ago[libbacktrace] Rename dtest to btest_gnudebuglink
Tom de Vries [Fri, 25 Jan 2019 14:39:47 +0000 (14:39 +0000)]
[libbacktrace] Rename dtest to btest_gnudebuglink

Create a pattern rule for copying an existing test-case, separating out the
debug information into a .debug file, and referencing the .debug file from
the copied test-case using a .gnu_debuglink.

2019-01-25  Tom de Vries  <tdevries@suse.de>

* Makefile.am: Rewrite dtest rule into "%_gnudebuglink" pattern rule.
(TESTS): Rename dtest to btest_gnudebuglink.
* Makefile.in: Regenerate.

From-SVN: r268268

5 years ago[testsuite] Add missing fenv effective target to fp-int-convert-timode* tests.
Christophe Lyon [Fri, 25 Jan 2019 13:36:37 +0000 (13:36 +0000)]
[testsuite] Add missing fenv effective target to fp-int-convert-timode* tests.

2019-01-25  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* doc/sourcebuild.texi (Environment attributes): Add fenv and
fenv_exceptions description.

2019-01-25  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/testsuite/
* lib/target-supports.exp (check_effective_target_fenv): New.
* gcc.dg/torture/fp-int-convert-float128-timode-3.c: Add missing
fenv effective target.
* gcc.dg/torture/fp-int-convert-timode-1.c: Likewise.
* gcc.dg/torture/fp-int-convert-timode-2.c: Likewise.
* gcc.dg/torture/fp-int-convert-timode-3.c: Likewise.
* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.

From-SVN: r268266

5 years ago[PATCH][AArch64] Fix generation of tst (PR87763)
Wilco Dijkstra [Fri, 25 Jan 2019 13:29:06 +0000 (13:29 +0000)]
[PATCH][AArch64] Fix generation of tst (PR87763)

The TST instruction no longer matches in all cases due to changes in
Combine.  The fix is simple, we now need to allow a subreg as well when
selecting the cc_mode.  This fixes the tst_5.c and tst_6.c failures.

AArch64 regress & bootstrap OK.

PR rtl-optimization/87763
* config/aarch64/aarch64.c (aarch64_select_cc_mode):
Allow SUBREG when matching CC_NZmode compare.

From-SVN: r268265

5 years agore PR tree-optimization/89049 (Unexpected vectorization)
Richard Biener [Fri, 25 Jan 2019 12:46:24 +0000 (12:46 +0000)]
re PR tree-optimization/89049 (Unexpected vectorization)

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

PR tree-optimization/89049
* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
Look at the pattern stmt to determine if the stmt is vectorized.

From-SVN: r268264

5 years ago[AArch64][SVE] Handle register-register pred_movs
Richard Sandiford [Fri, 25 Jan 2019 12:26:49 +0000 (12:26 +0000)]
[AArch64][SVE] Handle register-register pred_movs

pred_mov<mode> is defined for predicated loads and stores, where
exactly one of the operands is a register.  However, the instruction
condition only checked for "one" rather than "exactly one", and
Prathamesh found a case in which combine could fold a predicated
pattern to an all-register pred_mov<mode>.  The constraints would
then force one of the registers to memory.

This patch splits all-register forms into a normal move as soon
as possible, but also adds an all-register alternative in case the
instruction doesn't get split before RA (or in case the RA can use
inheritance to avoid a reload).

The testcase for this will be added to aarch64/sve-acle-branch.

2018-01-25  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-sve.md (*pred_mov<mode>)
(pred_mov<mode>): Handle all-register forms using both a new
alternative and a split.

From-SVN: r268263

5 years agore PR tree-optimization/86865 (Wrong code w/ -O2 -floop-parallelize-all -fstack-reuse...
Richard Biener [Fri, 25 Jan 2019 08:13:34 +0000 (08:13 +0000)]
re PR tree-optimization/86865 (Wrong code w/ -O2 -floop-parallelize-all -fstack-reuse=none -fwrapv -fno-tree-ch -fno-tree-dce -fno-tree-dominator-opts -fno-tree-loop-ivcanon)

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

PR tree-optimization/86865
* graphite-scop-detection.c (scop_detection::can_represent_loop):
Reject non-do-while loops.

* gcc.dg/graphite/pr86865.c: New testcase.
* gcc.dg/graphite/pr69728.c: XFAIL.
* gcc.dg/graphite/scop-21.c: Likewise.

From-SVN: r268257

5 years agoDaily bump.
GCC Administrator [Fri, 25 Jan 2019 00:16:33 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268256

5 years agoaltivec.md (build_vector_mask_for_load): Use MEM_P.
Peter Bergner [Thu, 24 Jan 2019 22:48:06 +0000 (22:48 +0000)]
altivec.md (build_vector_mask_for_load): Use MEM_P.

* config/rs6000/altivec.md (build_vector_mask_for_load): Use MEM_P.
* config/rs6000/constraints.md (Q constraint): Use REG_P.
* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Use SYMBOL_REF_P.
* config/rs6000/freebsd64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
SYMBOL_REF_P, CONST_INT_P and CONST_DOUBLE_P.
* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
* config/rs6000/predicates.md (altivec_register_operand, vint_operand,
vsx_register_operand, vsx_reg_sfsubreg_ok, vfloat_operand,
vlogical_operand, gpc_reg_operand, int_reg_operand,
int_reg_operand_not_pseudo): Use SUBREG_P and HARD_REGISTER_P.
(ca_operand, base_reg_operand, htm_spr_reg_operand, cc_reg_operand,
cc_reg_not_cr0_operand, input_operand): Use SUBREG_P.
(save_world_operation, restore_world_operation, lmw_operation,
stmw_operation): Use MEM_P and REG_P.
(tie_operand): Use MEM_P.
(vrsave_operation, crsave_operation): Use REG_P.
(mfcr_operation, mtcrf_operation): Use REG_P and CONST_INT_P.
(fpr_reg_operand): Use SUBREG_P and HARD_REGISTER_NUM_P.
(quad_int_reg_operand): Use HARD_REGISTER_NUM_P.
(call_operand): Use HARD_REGISTER_P.
(indexed_or_indirect_operand, altivec_indexed_or_indirect_operand):
Use CONST_INT_P.
(lwa_operand): Use SUBREG_P, REG_P and CONST_INT_P.
* config/rs6000/rs6000-p8swap.c (insn_is_load_p, insn_is_store_p,
quad_aligned_load_p, replace_swapped_aligned_store,
recombine_lvx_pattern, replace_swapped_aligned_load,
recombine_stvx_pattern): Use MEM_P.
(const_load_sequence_p, adjust_vperm, replace_swapped_load_constant):
Use MEM_P and SYMBOL_REF_P.
(rtx_is_swappable_p): Use REG_P and CONST_INT_P.
(insn_is_swappable_p): Use REG_P and MEM_P.
(insn_is_swap_p, (alignment_mask): Use CONST_INT_P.
* config/rs6000/rs6000-string.c (expand_block_clear, expand_block_move):
Use CONST_INT_P.
* config/rs6000/rs6000.c (rs6000_secondary_reload, rs6000_emit_cmove):
Use CONST_DOUBLE_P.
(rs6000_output_move_128bit): Use CONST_DOUBLE_P, CONST_INT_P and
CONST_WIDE_INT_P.
(rs6000_legitimize_address): Use CONST_DOUBLE_P, CONST_INT_P,
CONST_WIDE_INT_P, REG_P and SYMBOL_REF_P.
(rs6000_emit_move): Use CONST_DOUBLE_P, CONST_INT_P, HARD_REGISTER_P,
HARD_REGISTER_NUM_P, MEM_P, REG_P, SUBREG_P, SYMBOL_REF_P and
reg_or_subregno:
(output_toc): Use CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
(easy_altivec_constant, rs6000_legitimate_offset_address_p,
rs6000_mode_dependent_address, rs6000_expand_mtfsf_builtin,
rs6000_expand_set_fpscr_rn_builtin, rs6000_expand_set_fpscr_drn_builtin,
rs6000_expand_unop_builtin, INT_P, rs6000_generate_compare,
rs6000_machopic_legitimize_pic_address, rs6000_split_logical_inner,
rs6000_split_logical_di): Use CONST_INT_P.
(rs6000_legitimize_reload_address): Use CONST_INT_P, HARD_REGISTER_P,
REG_P and SYMBOL_REF_P.
(setup_incoming_varargs, rs6000_rtx_costs): Use CONST_INT_P and MEM_P.
(print_operand): Use CONST_INT_P, MEM_P and REG_P.
(virtual_stack_registers_memory_p, rs6000_legitimate_address_p,
mems_ok_for_quad_peep): Use CONST_INT_P and REG_P.
(rs6000_secondary_reload_memory): Use CONST_INT_P and SUBREG_P.
(small_data_operand, print_operand_address): Use CONST_INT_P and
SYMBOL_REF_P.
(split_stack_arg_pointer_used_p): Use HARD_REGISTER_P.
(rs6000_init_hard_regno_mode_ok, direct_move_p):
Use HARD_REGISTER_NUM_P.
(rs6000_secondary_reload_gpr): Use HARD_REGISTER_NUM_P and MEM_P.
(rs6000_secondary_reload_class): Use HARD_REGISTER_NUM_P, REG_P,
SUBREG_P and SYMBOL_REF_P.
(register_to_reg_type, rs6000_secondary_reload_inner): Use SUBREG_P
and HARD_REGISTER_NUM_P.
(rs6000_adjust_vec_address): Use HARD_REGISTER_NUM_P and
reg_or_subregno.
(rs6000_adjust_cost, find_mem_ref): Use MEM_P.
(macho_lo_sum_memory_operand, rs6000_eliminate_indexed_memrefs): Use
MEM_P and REG_P.
(legitimate_indirect_address_p, legitimate_lo_sum_address_p,
registers_ok_for_quad_peep, rs6000_output_function_epilogue,
find_addr_reg): Use REG_P.
(altivec_expand_vec_perm_const): Use REG_P and SUBREG_P.
(rs6000_emit_le_vsx_move): Use SUBREG_P.
(offsettable_ok_by_alignment, constant_pool_expr_p,
legitimate_small_data_p, rs6000_output_dwarf_dtprel,
rs6000_delegitimize_address, rs6000_const_not_ok_for_debug_p,
rs6000_cannot_force_const_mem, rs6000_output_addr_const_extra,
rs6000_assemble_integer, create_TOC_reference,
rs6000_emit_allocate_stack, rs6000_xcoff_encode_section_info,
rs6000_call_aix, rs6000_call_aix): Use SYMBOL_REF_P.
(rs6000_split_vec_extract_var): Use reg_or_subregno.
* config/rs6000/rtems.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Use
CONST_DOUBLE_P, CONST_INT_P and SYMBOL_REF_P.
* config/rs6000/sysv4.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
* config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
* config/rs6000/rs6000.h (RS6000_SYMBOL_REF_TLS_P): Use SYMBOL_REF_P.
(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use HARD_REGISTER_NUM_P.
(INT_REG_OK_FOR_INDEX_P, INT_REG_OK_FOR_BASE_P): Use HARD_REGISTER_P.
(CONSTANT_ADDRESS_P): Use CONST_INT_P and SYMBOL_REF_P.
* config/rs6000/rs6000.md (define_expands strlensi, mod<mode>3
and cbranch<mode>4): Use CONST_INT_P.
(multiple define_splits): Use REG_P and SUBREG_P.
(define_expands call, call_value): Use MEM_P.
(define_expands sibcall, sibcall_value): Use CONST_INT_P and  MEM_P.
(define insn *mtcrfsi): Use CONST_INT_P and REG_P.
* config/rs6000/vsx.md (*vsx_le_perm_load_<mode>,
*vsx_le_perm_load_v8hi, *vsx_le_perm_load_v16qi): Use HARD_REGISTER_P
and HARD_REGISTER_NUM_P.
(multiple define_splits): Use HARD_REGISTER_NUM_P.

From-SVN: r268253

5 years agoPR c++/89001 - mangling of reference temporaries
Jason Merrill [Thu, 24 Jan 2019 21:23:33 +0000 (16:23 -0500)]
PR c++/89001 - mangling of reference temporaries

It used to be the case that the mangled name of a reference temporary didn't
need to be standardized, because all access would be through the reference.
But now constant expressions can look through references and so different
translation units need to agree on the address of a temporary in the
initializer of a reference with vague linkage.

* cp-tree.h (struct saved_scope): Add ref_temp_count.
(current_ref_temp_count): New macro.
* mangle.c (mangle_ref_init_variable): Use it.
* typeck2.c (store_init_value): Clear it.
* call.c (make_temporary_var_for_ref_to_temp): Copy public and
comdat.

From-SVN: r268252

5 years agoPR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
Martin Sebor [Thu, 24 Jan 2019 21:06:01 +0000 (21:06 +0000)]
PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type

PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
PR middle-end/86308 - ICE in verify_gimple calling index() with an invalid declaration
PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched return type
PR c/88886 - [9 Regression] ice in get_constant, at c-family/c-format.c:292

gcc/c/ChangeLog:

PR c/86125
PR c/88886
PR middle-end/86308
* c-decl.c (match_builtin_function_types): Add arguments.
(diagnose_mismatched_decls): Diagnose mismatched declarations
of built-ins more strictly.

gcc/testsuite/ChangeLog:

PR c/86125
PR c/88886
PR middle-end/86308
* gcc.dg/Wbuiltin-declaration-mismatch-6.c: New test.
* gcc.dg/Wbuiltin-declaration-mismatch-7.c: New test.
* gcc.dg/Wbuiltin-declaration-mismatch-8.c: New test.
* gcc.dg/Wbuiltin-declaration-mismatch-9.c: New test.
* gcc.dg/Wbuiltin-declaration-mismatch-10.c: New test.
* gcc.dg/builtins-69.c: New test.
* gcc.dg/Wint-conversion-2.c: Add expected warning.
* gcc.c-torture/execute/eeprof-1.c: Adjust function signatures.

From-SVN: r268251

5 years agoChangeLog: Correct PR classification.
Uros Bizjak [Thu, 24 Jan 2019 20:51:25 +0000 (21:51 +0100)]
ChangeLog: Correct PR classification.

* ChangeLog: Correct PR classification.
* testsuite/ChangeLog: Ditto.

From-SVN: r268250

5 years agore PR rtl-optimization/88948 (ICE in elimination_costs_in_insn, at reload1.c:3640...
Uros Bizjak [Thu, 24 Jan 2019 20:48:01 +0000 (21:48 +0100)]
re PR rtl-optimization/88948 (ICE in elimination_costs_in_insn, at reload1.c:3640 since r264148)

PR target/88948
* rtl.h (prepare_copy_insn): New prototype.
* gcse.c (prepare_copy_insn): New function, split out from
process_insert_insn.
(process_insert_insn): Use prepare_copy_insn.
* store-motion.c (replace_store_insn): Use prepare_copy_insn
instead of gen_move_insn.

testsuite/ChangeLog:

PR target/88948
* gcc.target/i386/pr88948.c: New test.

From-SVN: r268249

5 years agore PR debug/89006 (New note: non-delegitimized UNSPEC UNSPEC_SET_GOT (14) found in...
Jakub Jelinek [Thu, 24 Jan 2019 20:20:47 +0000 (21:20 +0100)]
re PR debug/89006 (New note: non-delegitimized UNSPEC UNSPEC_SET_GOT (14) found in variable location since r267638)

PR debug/89006
* config/i386/i386.c (ix86_pic_register_p): Return true for
UNSPEC_SET_GOT too.

* g++.dg/debug/pr89006.C: New test.

From-SVN: r268248

5 years agore PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)
Jakub Jelinek [Thu, 24 Jan 2019 19:49:09 +0000 (20:49 +0100)]
re PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)

PR tree-optimization/88964
* gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Also
punt if HONOR_SNANS (chrec).

From-SVN: r268247

5 years agore PR middle-end/89015 (ICE in lookup_decl_in_outer_ctx, at omp-low.c:3480)
Jakub Jelinek [Thu, 24 Jan 2019 19:17:13 +0000 (20:17 +0100)]
re PR middle-end/89015 (ICE in lookup_decl_in_outer_ctx, at omp-low.c:3480)

PR middle-end/89015
* tree-nested.c (convert_nonlocal_reference_stmt,
convert_local_reference_stmt, convert_tramp_reference_stmt,
convert_gimple_call) <case GIMPLE_OMP_TEAMS>: Treat
gimple_omp_teams_host teams stmts like GIMPLE_OMP_PARALLEL
or GIMPLE_OMP_TASK.

* gcc.dg/gomp/pr89015.c: New test.

From-SVN: r268246

5 years agore PR c++/88976 (ICE in fold_convert_loc, at fold-const.c:2552)
Jakub Jelinek [Thu, 24 Jan 2019 19:16:21 +0000 (20:16 +0100)]
re PR c++/88976 (ICE in fold_convert_loc, at fold-const.c:2552)

PR c++/88976
* c-typeck.c (c_finish_omp_cancel): Diagnose more than one if
on #pragma omp cancel with different modifiers.

* semantics.c (finish_omp_cancel): Diagnose more than one if
on #pragma omp cancel with different modifiers.  Use
maybe_convert_cond when not in template or build_x_binary_op
otherwise.

* c-c++-common/gomp/cancel-2.c: New test.
* gcc.dg/gomp/cancel-1.c: New test.
* g++.dg/gomp/cancel-1.C: New test.
* g++.dg/gomp/cancel-2.C: New test.
* g++.dg/gomp/cancel-3.C: New test.

From-SVN: r268245

5 years agore PR tree-optimization/89027 (ICE: verify_gimple failed (Error: non-trivial conversi...
Jakub Jelinek [Thu, 24 Jan 2019 19:14:51 +0000 (20:14 +0100)]
re PR tree-optimization/89027 (ICE: verify_gimple failed (Error: non-trivial conversion at assignment))

PR tree-optimization/89027
* tree-inline.c (add_clobbers_to_eh_landing_pad): Don't add clobbers
for "omp simd array" variables.

* gfortran.dg/gomp/pr89027.f90: New test.

From-SVN: r268243

5 years agoMitigation for PR target/88469 on arm-based systems bootstrapping with gcc-6/7/8
Richard Earnshaw [Thu, 24 Jan 2019 16:06:34 +0000 (16:06 +0000)]
Mitigation for PR target/88469 on arm-based systems bootstrapping with gcc-6/7/8

This patch, for gcc 8/9 is a mitigation patch for PR target/88469
where gcc-6/7/8 miscompile a structure whose alignment is dominated by
a 64-bit bitfield member.  Since the PCS rules for such a type must
ignore any overalignment of the base type we cannot address this by
simply adding a larger alignment to the class.  We can, however, force
the alignment of the bit-field itself and GCC will handle that as
desired.

PR target/88469
* profile-count.h (profile_count): On ARM systems using GCC 6/7/8
force the alignment of m_val.

From-SVN: r268240

5 years agoPR libstdc++/88840 delay evaluation of constant until type is complete
Jonathan Wakely [Thu, 24 Jan 2019 15:39:25 +0000 (15:39 +0000)]
PR libstdc++/88840 delay evaluation of constant until type is complete

Clang fails to compile std::vector<Incomplete> because the static member
__use_relocate cannot be evaluated for an incomplete type. Replace with
a static member function that will not be odr-used until needed, by
which point the type must be complete.

PR libstdc++/88840
* include/bits/stl_vector.h (vector::__use_relocate): Replace static
data member with static member function _S_use_relocate().
* include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
(vector::_M_default_append): Use _S_use_relocate() instead of
__use_relocate.

From-SVN: r268239

5 years agoFix failing test due to inconsistent strcmp results
Jonathan Wakely [Thu, 24 Jan 2019 15:39:19 +0000 (15:39 +0000)]
Fix failing test due to inconsistent strcmp results

* testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
sign of results.

From-SVN: r268238

5 years ago[nvptx, libgomp] Fix memleak in GOMP_OFFLOAD_fini_device
Tom de Vries [Thu, 24 Jan 2019 14:12:19 +0000 (14:12 +0000)]
[nvptx, libgomp] Fix memleak in GOMP_OFFLOAD_fini_device

I wrote a test-case:
...
int
main (void)
{
  for (unsigned i = 0; i < 128; ++i)
    {
      acc_init (acc_device_nvidia);
      acc_shutdown (acc_device_nvidia);
    }

  return 0;
}
...
and ran it under valgrind.  The only leak location reported with a frequency
of 128, was the allocation of ptx_devices in nvptx_init.

Fix this by freeing ptx_devices in GOMP_OFFLOAD_fini_device, once
instantiated_devices drops to 0.

2019-01-24  Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (GOMP_OFFLOAD_fini_device): Free ptx_devices
once instantiated_devices drops to 0.

From-SVN: r268237

5 years agore PR lto/87187 (FAIL: gfortran.dg/short_circuiting_3.f90 -g -flto (internal compi...
Richard Biener [Thu, 24 Jan 2019 12:36:14 +0000 (12:36 +0000)]
re PR lto/87187 (FAIL: gfortran.dg/short_circuiting_3.f90   -g -flto  (internal compiler error) on darwin)

2019-01-24  Richard Biener  <rguenther@suse.de>

PR lto/87187
* tree-streamer-out.c (write_ts_decl_common_tree_pointers):
When in "legacy" debug mode make sure to reset self-origins.

From-SVN: r268236

5 years agoFix broken filename for .gcda files starting with '..' (PR gcov-profile/88994).
Martin Liska [Thu, 24 Jan 2019 08:27:39 +0000 (09:27 +0100)]
Fix broken filename for .gcda files starting with '..' (PR gcov-profile/88994).

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

PR gcov-profile/88994
* gcov-io.c (mangle_path): Do not allocate a bigger buffer,
result will be always smaller or equal to the original.
* gcov.c (mangle_name): Fix else branch where we should
also copy to PTR and shift the pointer.

From-SVN: r268233

5 years agore PR fortran/88929 (ICE on building MPICH 3.2 with GCC 9 with ISO_Fortran_binding)
Paul Thomas [Thu, 24 Jan 2019 07:21:36 +0000 (07:21 +0000)]
re PR fortran/88929 (ICE on building MPICH 3.2 with GCC 9 with ISO_Fortran_binding)

2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88929
* trans-array.c (gfc_conv_descriptor_elem_len): New function.
* trans-array.h : Add prototype for above.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Take account of
assumed rank arrays being flagged by rank = -1 in expressions.
Intent in arrays need a pointer to a copy of the data to be
assigned to the descriptor passed for conversion. This should
then be freed, together with the CFI descriptor on return from
the C call.

2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88929
* gfortran.dg/ISO_Fortran_binding_3.f90 : New test
* gfortran.dg/ISO_Fortran_binding_3.c : Subsidiary source.

From-SVN: r268232

5 years agore PR fortran/88929 (ICE on building MPICH 3.2 with GCC 9 with ISO_Fortran_binding)
Paul Thomas [Thu, 24 Jan 2019 07:19:49 +0000 (07:19 +0000)]
re PR fortran/88929 (ICE on building MPICH 3.2 with GCC 9 with ISO_Fortran_binding)

2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88929
* trans-array.c (gfc_conv_descriptor_elem_len): New function.
* trans-array.h : Add prototype for above.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Take account of
assumed rank arrays being flagged by rank = -1 in expressions.
Intent in arrays need a pointer to a copy of the data to be
assigned to the descriptor passed for conversion. This should
then be freed, together with the CFI descriptor on return from
the C call.

2019-01-24  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/88929
* gfortran.dg/ISO_Fortran_binding_3.f90 : New test
* gfortran.dg/ISO_Fortran_binding_3.c : Subsidiary source.

From-SVN: r268231

5 years agoruntime: install SIGURG handler on C created threads
Ian Lance Taylor [Thu, 24 Jan 2019 05:31:14 +0000 (05:31 +0000)]
runtime: install SIGURG handler on C created threads

    Precise stack scan uses SIGURG to trigger a stack scan. We need
    to have Go signal handler installed for SIGURG.

    Reviewed-on: https://go-review.googlesource.com/c/159097

From-SVN: r268230

5 years agofix comments typo.
Xiong Hu Luo [Thu, 24 Jan 2019 02:18:16 +0000 (02:18 +0000)]
fix comments typo.

gcc/ChangeLog

2019-01-24  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>

* tree-ssa-dom.c (test_for_singularity): fix a comment typo.
* vr-values.c (find_case_label_ranges): fix a comment typo.

From-SVN: r268229

5 years agofix tab alignment issue.
Xiong Hu Luo [Thu, 24 Jan 2019 01:53:28 +0000 (01:53 +0000)]
fix tab alignment issue.

ChangeLog

2019-01-24  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>

* ChangeLog: replace space with tab.
* MAINTAINERS: delete 1 tab to keep alignment.

From-SVN: r268228

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

From-SVN: r268225

5 years agore PR target/85711 (ICE in aarch64_classify_address, at config/aarch64/aarch64.c...
Bin Cheng [Wed, 23 Jan 2019 22:43:42 +0000 (22:43 +0000)]
re PR target/85711 (ICE in aarch64_classify_address, at config/aarch64/aarch64.c:5678)

2019-01-23  Bin Cheng  <bin.cheng@arm.com>
    Steve Ellcey <sellcey@marvell.com>

PR target/85711
* recog.c (address_operand): Return false on wrong mode for address.
(constrain_operands): Check for mode with 'p' constraint.

Co-Authored-By: Steve Ellcey <sellcey@marvell.com>
From-SVN: r268219

5 years agolibgcc2.c: Correct DI/TI -> SF/DF conversions
H.J. Lu [Wed, 23 Jan 2019 21:41:59 +0000 (13:41 -0800)]
libgcc2.c: Correct DI/TI -> SF/DF conversions

FSTYPE FUNC (DWtype u) in libgcc2.c, which converts DI/TI to SF/DF, has

  /* No leading bits means u == minimum.  */
  if (count == 0)
    return -(Wtype_MAXp1_F * (Wtype_MAXp1_F / 2));

in the third case (where actually count == 0 only means the high part is
minimum).  It should be:

  /* No leading bits means u == minimum.  */
  if (count == 0)
    return Wtype_MAXp1_F * (FSTYPE) (hi | ((UWtype) u != 0));

instead.

gcc/testsuite/

2019-01-23  H.J. Lu  <hongjiu.lu@intel.com>

PR libgcc/88931
* gcc.dg/torture/fp-int-convert-timode-1.c: New test.
* gcc.dg/torture/fp-int-convert-timode-2.c: Likewise.
* gcc.dg/torture/fp-int-convert-timode-3.c: Likewise.
* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.

libgcc/

2019-01-23  Joseph Myers  <joseph@codesourcery.com>

PR libgcc/88931
* libgcc2.c (FSTYPE FUNC (DWtype u)): Correct no leading bits
case.

From-SVN: r268216

5 years ago* g++.target/i386/pr88998.C (main): Use FP constant in the assert.
Uros Bizjak [Wed, 23 Jan 2019 19:59:15 +0000 (20:59 +0100)]
* g++.target/i386/pr88998.C (main): Use FP constant in the assert.

From-SVN: r268198

5 years agore PR target/88998 (bad codegen with mmx instructions for unordered_map)
Uros Bizjak [Wed, 23 Jan 2019 19:10:58 +0000 (20:10 +0100)]
re PR target/88998 (bad codegen with mmx instructions for unordered_map)

PR target/88998
* config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives.
Disparage MMX alternative.
(sse2_cvtpd2pi): Ditto.
(sse2_cvttpd2pi): Ditto.

testsuite/ChangeLog:

PR target/88998
* g++.target/i386/pr88998.c: New test.

From-SVN: r268195

5 years agoPR c++/88757 - qualified name treated wrongly as type.
Marek Polacek [Wed, 23 Jan 2019 17:25:42 +0000 (17:25 +0000)]
PR c++/88757 - qualified name treated wrongly as type.

* parser.c (cp_parser_direct_declarator): don't treat qualified-ids
in parameter-list as types if name lookup for declarator-id didn't
find one or more function templates.

* g++.dg/cpp0x/dependent2.c: new test.
* g++.dg/cpp2a/typename10.c: remove dg-error.
* g++.dg/cpp2a/typename12.c: new test.
* g++.dg/template/static30.c: remove dg-error.

From-SVN: r268192

5 years agoaarch64: fix use-after-free in -march=native (PR driver/89014)
David Malcolm [Wed, 23 Jan 2019 16:36:46 +0000 (16:36 +0000)]
aarch64: fix use-after-free in -march=native (PR driver/89014)

Running:
  $ valgrind ./xgcc -B. -c test.c -march=native
on aarch64 shows a use-after-free in host_detect_local_cpu due
to the std::string result of aarch64_get_extension_string_for_isa_flags
only living until immediately after a c_str call.

This leads to corrupt "-march=" values being passed to cc1.

This patch fixes the use-after-free, though it appears to also need
Tamar's patch here:
  https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01302.html
in order to generate valid values for cc1.  This may have worked by
accident in the past, if the corrupt "-march=" value happened to be
0-terminated in the "right" place; with this patch it now appears
to reliably break without Tamar's patch.

gcc/ChangeLog:
PR driver/89014
* config/aarch64/driver-aarch64.c (host_detect_local_cpu): Fix
use-after-free of the result of
aarch64_get_extension_string_for_isa_flags.

From-SVN: r268189

5 years agore PR c/44715 (Break in increment expression of "for" statement inconsistent with...
Jakub Jelinek [Wed, 23 Jan 2019 14:41:16 +0000 (15:41 +0100)]
re PR c/44715 (Break in increment expression of "for" statement inconsistent with g++)

PR c/44715
* cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
after genericizing cond and incr expressions.

* doc/extend.texi: Document break and continue behavior in
statement expressions.

* c-c++-common/pr44715.c: New test.

From-SVN: r268188

5 years agore PR c++/88984 (ICE in genericize_switch_stmt, at cp/cp-gimplify.c:377)
Jakub Jelinek [Wed, 23 Jan 2019 14:39:43 +0000 (15:39 +0100)]
re PR c++/88984 (ICE in genericize_switch_stmt, at cp/cp-gimplify.c:377)

PR c++/88984
* cp-gimplify.c (genericize_switch_stmt): Move cond genericization
before the begin_bc_block call.

* c-c++-common/pr88984.c: New test.

From-SVN: r268187

5 years agore PR middle-end/89008 (O2 and O1 results differ for simple test)
Richard Biener [Wed, 23 Jan 2019 14:02:13 +0000 (14:02 +0000)]
re PR middle-end/89008 (O2 and O1 results differ for simple test)

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

PR tree-optimization/89008
* tree-ssa-reassoc.c (eliminate_using_constants): For * 0 do
not leave another stray operand.

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

From-SVN: r268186

5 years agoPR c++/87893 - constexpr ctor ICE on ARM.
Jason Merrill [Wed, 23 Jan 2019 13:54:23 +0000 (08:54 -0500)]
PR c++/87893 - constexpr ctor ICE on ARM.

PR c++/88293 - ICE with comma expression.
* constexpr.c (initialized_type): Don't shortcut non-void type.
Handle COMPOUND_EXPR.
(cxx_eval_outermost_constant_expr): Return early for void type.

From-SVN: r268185

5 years ago* BASE-VER: Bump to 9.0.1.
Jakub Jelinek [Wed, 23 Jan 2019 13:34:35 +0000 (14:34 +0100)]
* BASE-VER: Bump to 9.0.1.

From-SVN: r268184

5 years agore PR sanitizer/89010 (Update URLs in libsanitizer/README.gcc)
Jonny Grant [Wed, 23 Jan 2019 13:18:50 +0000 (14:18 +0100)]
re PR sanitizer/89010 (Update URLs in libsanitizer/README.gcc)

PR sanitizer/89010
* libsanitizer/README.gcc: Update to current https URLs.

From-SVN: r268183

5 years agocgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE thunk that returns...
Eric Botcazou [Wed, 23 Jan 2019 11:07:56 +0000 (11:07 +0000)]
cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE thunk that returns by reference...

* cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE
thunk that returns by reference, use the type of the return object
of the thunk instead of that of the alias to build the dereference.

From-SVN: r268182

5 years ago[ARC] atomics: Add operand to DMB instruction
Vineet Gupta [Wed, 23 Jan 2019 11:04:19 +0000 (11:04 +0000)]
[ARC] atomics: Add operand to DMB instruction

Atomics use DMB instruction to enforce ordering of loads/stores.
Currently gcc generates DMB w/o any arg which is a no-op. Fix that by
generating DMB 3 which enforces R+W ordering. It is stricter than what
acq/rel expect, but there's no other way.

gcc/

2019-xx-xx  Vineet Gupta <vgupta@synopsys.com>

       * config/arc/atomic.md: Add operand to DMB instruction

From-SVN: r268181

5 years ago[libbacktrace] Use size_t for low_offset/high_offset fields of struct unit
Tom de Vries [Wed, 23 Jan 2019 10:22:43 +0000 (10:22 +0000)]
[libbacktrace] Use size_t for low_offset/high_offset fields of struct unit

2019-01-23  Tom de Vries  <tdevries@suse.de>

* dwarf.c (struct unit): Use size_t for low_offset/high_offset fields.
(units_search, find_unit): Use size_t for offset.
(build_address_map): Use size_t for unit_offset.

From-SVN: r268180

5 years agore PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)
Jakub Jelinek [Wed, 23 Jan 2019 08:35:38 +0000 (09:35 +0100)]
re PR tree-optimization/88964 (ICE in wide_int_to_tree_1, at tree.c:1561)

PR tree-optimization/88964
* gimple-loop-interchange.cc (loop_cand::analyze_induction_var): Use
build_zero_cst instead of build_int_cst.  Return false for loop
invariants which honor signed zeros.

* gfortran.dg/pr88964.f90: New test.

From-SVN: r268179

5 years ago[nvptx, libgomp] Fix cuMemAlloc with size zero
Tom de Vries [Wed, 23 Jan 2019 08:16:56 +0000 (08:16 +0000)]
[nvptx, libgomp] Fix cuMemAlloc with size zero

Consider test-case:
...
int
main (void)
{
  #pragma acc parallel async
  ;
  #pragma acc parallel async
  ;
  #pragma acc wait

  return 0;
}
...

This fails with:
...
libgomp: cuMemAlloc error: invalid argument
Segmentation fault (core dumped)
...
The cuMemAlloc error is due to the fact that we're try to allocate 0 bytes.

Fix this by preventing calling map_push with size zero argument in nvptx_exec.

This also has the consequence that for the abort-1.c test-case, we end up
calling cuMemFree during map_fini for the struct cuda_map allocated in
map_init, which fails because an abort happened.  Fix this by calling
cuMemFree with CUDA_CALL_NOCHECK in cuda_map_destroy.

2019-01-23  Tom de Vries  <tdevries@suse.de>

PR target/PR88946
* plugin/plugin-nvptx.c (cuda_map_destroy): Use CUDA_CALL_NOCHECK for
cuMemFree.
(nvptx_exec): Don't call map_push if mapnum == 0.
* testsuite/libgomp.oacc-c-c++-common/pr88946.c: New test.

From-SVN: r268178

5 years ago[nvptx, libgomp] Fix assert (!s->map->active) in map_fini
Tom de Vries [Wed, 23 Jan 2019 08:16:42 +0000 (08:16 +0000)]
[nvptx, libgomp] Fix assert (!s->map->active) in map_fini

There are currently two situations where this assert triggers:
...
libgomp/plugin/plugin-nvptx.c: map_fini: Assertion `!s->map->active' failed.
...

First, in abort-1.c, a parallel region triggering an abort:
...
int
main (void)
{
  #pragma acc parallel
  abort ();

  return 0;
}
...

The abort is detected in nvptx_exec as the CUDA_ERROR_ILLEGAL_INSTRUCTION
return status of the cuStreamSynchronize call after kernel launch, which is
then handled by calling non-returning function GOMP_PLUGIN_fatal.
Consequently, the map_pop in nvptx_exec that in case of cuStreamSynchronize
success would remove or inactive the element added by the map_push earlier in
nvptx_exec, does not trigger.  With the element no longer active, but still
marked active and a member of s->map,  we run into the assert during
GOMP_OFFLOAD_fini_device, which is triggered from atexit handler
gomp_target_fini (which is triggered by the GOMP_PLUGIN_fatal mentioned above
calling exit).

Second, in pr88941.c, an async parallel region without wait:
...
int
main (void)
{
  #pragma acc parallel async
  ;

  /* no #pragma acc wait */
  return 0;
}
...

Because nvptx_exec is handling an async region, it does not call map_pop for
the element added by map_push, but schedules an kernel execution completion
event to call map_pop.  Again, we run into the assert during
GOMP_OFFLOAD_fini_device, which is triggered from atexit handler
gomp_target_fini, but the exit in this case is triggered by returning from main.
So either the kernel is still running, or the kernel has completed but the
corresponding event that is supposed to call map_pop is stuck in the event
queue, waiting for an event_gc.

Fix this by removing the assert, and skipping the freeing of device memory if
the map is still marked active (though in the async case, this is more a
workaround than an fix).

2019-01-23  Tom de Vries  <tdevries@suse.de>

PR target/88941
PR target/88939
* plugin/plugin-nvptx.c (cuda_map_destroy): Handle map->active case.
(map_fini): Remove "assert (!s->map->active)".
* testsuite/libgomp.oacc-c-c++-common/pr88941.c: New test.

From-SVN: r268177

5 years ago[nvptx, libgomp] Fix map_push
Tom de Vries [Wed, 23 Jan 2019 08:16:11 +0000 (08:16 +0000)]
[nvptx, libgomp] Fix map_push

The map field of a struct ptx_stream is a FIFO.  The FIFO is implemented as a
single linked list, with pop-from-the-front semantics.

The function map_pop pops an element, either by:
- deallocating the element, if there is more than one element
- or marking the element inactive, if there's only one element

The responsibility of map_push is to push an element to the back, as well as
selecting the element to push, by:
- allocating an element, or
- reusing the element at the front if inactive and big enough, or
- dropping the element at the front if inactive and not big enough, and
  allocating one that's big enough

The current implemention gets at least the first and most basic scenario wrong:

> map = cuda_map_create (size);

We create an element, and assign it to map.

> for (t = s->map; t->next != NULL; t = t->next)
>   ;

We determine the last element in the fifo.

> t->next = map;

We append the new element.

> s->map = map;

But here, we throw away the rest of the FIFO, and declare the FIFO to be just
the new element.

This problem causes the test-case asyncwait-1.c to fail intermittently on some
systems.  The pr87835.c test-case added here is a a minimized and modified
version of asyncwait-1.c (avoiding the kernel construct) that is more likely to
fail.

Fix this by rewriting map_pop more robustly, by:
- seperating the function in two phases: select element, push element
- when reusing or dropping an element, making sure that the element is cleanly
  popped from the queue
- rewriting the push element part in such a way that it can handle all cases
  without needing if statements, such that each line is exercised for each of
  the three cases.

2019-01-23  Tom de Vries  <tdevries@suse.de>

PR target/87835
* plugin/plugin-nvptx.c (map_push): Fix adding of allocated element.
* testsuite/libgomp.oacc-c-c++-common/pr87835.c: New test.

From-SVN: r268176