gcc.git
5 years agoImplement correct std::variant triviality rules from P0602R4
Jonathan Wakely [Tue, 23 Apr 2019 12:48:28 +0000 (13:48 +0100)]
Implement correct std::variant triviality rules from P0602R4

The std::variant move assignment operator should not be trivial if the
variant is not trivially move constructible.

* include/std/variant (__detail::__variant::_Traits): Make
_S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
_S_trivial_move_assign depend on _S_trivial_move_ctor, as per
P0602R4.
(__detail::__variant::_Copy_assign_alias): Only depend on
_S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
* testsuite/20_util/variant/compile.cc: Correct checks for trivial
move assignment operators.

From-SVN: r270510

5 years agoPR libstdc++/90165 constrain variant(T&&) constructor
Jonathan Wakely [Tue, 23 Apr 2019 12:48:18 +0000 (13:48 +0100)]
PR libstdc++/90165 constrain variant(T&&) constructor

Also refactor some constraints slightly to be more readable.

PR libstdc++/90165
* include/std/variant (variant::__not_self): New helper for the
is_same_v<remove_cvref_t<T>, variant>==false constraints.
(variant::__to_type_impl): Remove.
(variant::__to_type): Add default argument to check pack size, instead
of using __to_type_impl.
(variant::__accepted_type): Add default argument using __not_self.
(variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
for variant(T&&) constructor constraint.
(variant::variant(T&&)): Use __not_in_place_tag in constraints.
Extract __accepted_type into a named template parameter for reuse in
other constraints and in the exception specification.
(variant::variant(in_place_type_t<T>, Args&&...))
(variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
(variant::variant(in_place_index_t<T>, Args&&...))
(variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
(variant::operator=T&&)): Remove redundant && from trait arguments.
* testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
isn't used for in_place_type or in_place_index arguments.

From-SVN: r270509

5 years agoCorrections for C++2a std::unwrap_reference traits
Jonathan Wakely [Tue, 23 Apr 2019 10:27:14 +0000 (11:27 +0100)]
Corrections for C++2a std::unwrap_reference traits

The P0318R1 paper added to the C++2a draft recently was not the latest
version of the paper, and should have included these changes. These
changes will be made to the working draft via a Defect Report, so I'm
applying them to libstdc++ now.

* include/std/type_traits (unwrap_reference_t): Define for C++2a.
(unwrap_ref_decay): Remove inheritance from unwrap_reference.
* testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.

From-SVN: r270506

5 years agore PR debug/90131 (wrong debug info at -O3)
Richard Biener [Tue, 23 Apr 2019 10:10:10 +0000 (10:10 +0000)]
re PR debug/90131 (wrong debug info at -O3)

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

PR debug/90131
* tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Add
dest_single_pred_p argument.
(remove_forwarder_block): Adjust.
(remove_forwarder_block_with_phi): Likewise.

From-SVN: r270505

5 years agore PR target/89093 (C++ exception handling clobbers d8 VFP register)
Ramana Radhakrishnan [Tue, 23 Apr 2019 10:03:41 +0000 (10:03 +0000)]
re PR target/89093 (C++ exception handling clobbers d8 VFP register)

PR target/89093
* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Diagnose
if used with general-regs-only.
(arm_conditional_register_usage): Don't add non-general regs if
general-regs-only.
(arm_valid_target_attribute_rec): Handle general-regs-only.
* config/arm/arm.h (TARGET_HARD_FLOAT): Return false if
general-regs-only.
(TARGET_HARD_FLOAT_SUB): Define.
(TARGET_SOFT_FLOAT): Define as negation of TARGET_HARD_FLOAT_SUB.
(TARGET_REALLY_IWMMXT): Add && !TARGET_GENERAL_REGS_ONLY.
(TARGET_REALLY_IWMMXT2): Likewise.
* config/arm/arm.opt: Add -mgeneral-regs-only.
* doc/extend.texi: Document ARM general-regs-only target.
* doc/invoke.texi: Document ARM -mgeneral-regs-only.
libgcc/
* config/arm/pr-support.c: Add #pragma GCC target("general-regs-only").
* config/arm/unwind-arm.c: Likewise.
* unwind-c.c (PERSONALITY_FUNCTION): Add general-regs-only target
attribute for ARM.
libobjc/
* exception.c (PERSONALITY_FUNCTION): Add general-regs-only target
attribute for ARM.
libphobos/
* libdruntime/gcc/deh.d: Import gcc.attribute.
(personality_fn_attributes): New enum.
(scanLSDA, CONTINUE_UNWINDING, gdc_personality, __gdc_personality):
Add @personality_fn_attributes.
libstdc++-v3/
* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
general-regs-only target attribute for ARM.

Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r270504

5 years agoFix whitespace in ChangeLog
Jonathan Wakely [Tue, 23 Apr 2019 09:55:36 +0000 (10:55 +0100)]
Fix whitespace in ChangeLog

From-SVN: r270503

5 years agoFix std::variant regression caused by never-valueless optimization
Jonathan Wakely [Tue, 23 Apr 2019 09:55:33 +0000 (10:55 +0100)]
Fix std::variant regression caused by never-valueless optimization

A regression was introduced by the recent changes to provide the strong
exception safety guarantee for "never valueless" types that have O(1),
non-throwing move assignment. The problematic code is:

  else if constexpr (__detail::__variant::_Never_valueless_alt<type>())
    {
      // This construction might throw:
      variant __tmp(in_place_index<_Np>, __il,
                    std::forward<_Args>(__args)...);
      // But _Never_valueless_alt<type> means this won't:
      *this = std::move(__tmp);
    }

When the variant is not assignable, the assignment is ill-formed, so
should not be attempted. When the variant has a copy assignment operator
but not a move assignment operator, the assignment performs a copy
assignment and that could throw, so should not be attempted.

The solution is to only take that branch when the variant has a move
assignment operator, which is determined by the _Traits::_S_move_assign
constant. When that is false the strong exception safety guarantee is
not possible, and so the __never_valueless function should also depend
on _S_move_assign.

While testing the fixes for this I noticed that the partial
specialization _Never_valueless_alt<basic_string<C,T,A>> incorrectly
assumed that is_nothrow_move_constructible<basic_string<C,T,A>> is
always true, but that's wrong for fully-dynamic COW strings. Fix the
partial specialization, and improve the comment describing
_Never_valueless_alt to be clear it depends on move construction as well
as move assignment.

Finally, I also observed that _Variant_storage<false, T...>::_M_valid()
was not taking advantage of the __never_valueless<T...>() function to
avoid a runtime check. Only the _Variant_storage<true, T...>::_M_valid()
function was using __never_valueless. That is also fixed.

PR libstdc++/87431
* include/bits/basic_string.h (_Never_valueless_alt): Make partial
specialization also depend on is_nothrow_move_constructible.
* include/std/variant (__detail::__variant::__never_valueless()):
Only true if the variant would have a move assignment operator.
(__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
Check __never_valueless<T...>().
(variant::emplace): Only perform non-throwing move assignments
for never-valueless alternatives if the variant has a move assignment
operator.
* testsuite/20_util/variant/compile.cc: Check that never-valueless
types can be emplaced into non-assignable variants.
* testsuite/20_util/variant/run.cc: Check that never-valueless types
don't get copied when emplaced into non-assignable variants.

From-SVN: r270502

5 years agoMake some std::variant helper functions noexcept
Jonathan Wakely [Tue, 23 Apr 2019 09:55:28 +0000 (10:55 +0100)]
Make some std::variant helper functions noexcept

* include/std/variant (__detail::__variant::__ref_cast): Remove
unused function.
(__detail::__variant::_Uninitialized::_M_get)
(__detail::__variant::__get)
(__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.

From-SVN: r270501

5 years agore PR tree-optimization/90078 (ICE with deep templates caused by overflow)
Bin Cheng [Tue, 23 Apr 2019 04:07:46 +0000 (04:07 +0000)]
re PR tree-optimization/90078 (ICE with deep templates caused by overflow)

PR tree-optimization/90078
* tree-ssa-loop-ivopts.c (comp_cost::operator +,-,+=,-+,/=,*=): Add
checks for infinite_cost overflow.

gcc/testsuite
* gcc/testsuite/g++.dg/tree-ssa/pr90078.C: New test.

Also fix typo in ChangeLog entry for revision 270499.

From-SVN: r270500

5 years agore PR tree-optimization/90021 (ICE in index_in_loop_nest, at tree-data-ref.h:587...
Bin Cheng [Tue, 23 Apr 2019 03:54:59 +0000 (03:54 +0000)]
re PR tree-optimization/90021 (ICE in index_in_loop_nest, at tree-data-ref.h:587 since r270203)

PR tree-optimization/92001
* tree-chrec.c (evolution_function_is_univariate_p): New parameter
and check univariate against it.
* tree-chrec.h (evolution_function_is_univariate_p): New parameter.
* tree-data-ref.c (add_other_self_distances): Pass new argument.

gcc/testsuite
* gcc/testsuite/gfortran.dg/pr90021.f90: New test.

From-SVN: r270499

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

From-SVN: r270498

5 years agore PR fortran/90166 (Compiler Fails at Assembler)
Steven G. Kargl [Mon, 22 Apr 2019 21:00:40 +0000 (21:00 +0000)]
re PR fortran/90166 (Compiler Fails at Assembler)

2019-04-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90166
* decl.c (in_module_or_interface): New function to check that the
current state is in a module, submodule, or interface.
(gfc_match_prefix): Use it.

2019-04-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90166
* gfortran.dg/submodule_22.f08: Add additional dg-error comments.

From-SVN: r270495

5 years agoPR c++/87366 - wrong error with alias template.
Jason Merrill [Mon, 22 Apr 2019 19:16:46 +0000 (15:16 -0400)]
PR c++/87366 - wrong error with alias template.

With this testcase the code in template_args_equal to treat aliases as
distinct wasn't sufficient, because it only looked at the top level, whereas
here we have a reference to the alias.  So let's also handle treating them
as distinct in structural_comptypes.  For GCC 10 I have a more comprehensive
patch, but for GCC 9 let's go with this smaller change.

* typeck.c (structural_comptypes): When comparing_specializations,
aliases are unequal.
(comptypes): When comparing_specializations, do structural
comparison.

From-SVN: r270494

5 years agoAdd myself to MAINTAINERS
Roman Zhuykov [Mon, 22 Apr 2019 16:05:36 +0000 (16:05 +0000)]
Add myself to MAINTAINERS

2019-04-22  Roman Zhuykov  <zhroma@ispras.ru>

* MAINTAINERS (Various Maintainers): Remove Ayal Zaks and add myself
as modulo-scheduler maintainer.

From-SVN: r270492

5 years agolibphobos: Merge upstream phobos b538f758a
Iain Buclaw [Mon, 22 Apr 2019 13:46:25 +0000 (13:46 +0000)]
libphobos: Merge upstream phobos b538f758a

Fixes endian bugs in std.uni, and corrects unit-tests that failed on
version(BigEndian) targets.

Initial patch by Robin Dapp.

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

From-SVN: r270491

5 years agolibphobos: Merge upstream druntime 109f0f2e
Iain Buclaw [Mon, 22 Apr 2019 13:46:13 +0000 (13:46 +0000)]
libphobos: Merge upstream druntime 109f0f2e

Backports more extern(C) bindings and platform ports.

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

From-SVN: r270490

5 years agore PR fortran/57284 ([OOP] ICE with find_array_spec for polymorphic arrays)
Paul Thomas [Mon, 22 Apr 2019 06:50:33 +0000 (06:50 +0000)]
re PR fortran/57284 ([OOP] ICE with find_array_spec for polymorphic arrays)

2019-04-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/57284
* resolve.c (find_array_spec): If this is a class expression
and the symbol and component array specs are the same, this is
not an error.
*trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol
argument, has no namespace, it has come from the interface
mapping and the _data component must be accessed directly.

2019-04-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/57284
* gfortran.dg/class_70.f03

From-SVN: r270489

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

From-SVN: r270488

5 years agore PR d/90130 (gdc.test/runnable/test12.d FAILs)
Iain Buclaw [Sun, 21 Apr 2019 20:26:12 +0000 (20:26 +0000)]
re PR d/90130 (gdc.test/runnable/test12.d FAILs)

    PR d/90130
d/dmd: Merge upstream dmd 065fbd452

Fixes endian bug in CTFE, and corrects tests in the D2 testsuite that
failed on big endian targets.

Initial patch by Robin Dapp.

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

From-SVN: r270485

5 years agoLRA: Revert "Remove useless move insns"
H.J. Lu [Sun, 21 Apr 2019 18:23:00 +0000 (18:23 +0000)]
LRA: Revert "Remove useless move insns"

Useless move insn removal was added to LRA just to avoid wasting CPU
cycles on such insn processing afterwards.  Such insns are removed
anyway later in the pass pipeline.  The CPU time savings are tiny but
the removal creates too many problems including PR target/90178.
Vladimir pre-approved the patch to remove the code:

https://gcc.gnu.org/ml/gcc-patches/2019-04/msg00834.html

gcc/

PR target/90178
Revert:
2018-11-21  Uros Bizjak  <ubizjak@gmail.com>

Revert the revert:
2013-10-26  Vladimir Makarov  <vmakarov@redhat.com>

Revert:
2013-10-25  Vladimir Makarov  <vmakarov@redhat.com>

* lra-spills.c (lra_final_code_change): Remove useless move insns.

gcc/testsuite/

PR target/90178
* gcc.target/i386/pr90178.c: New test.

From-SVN: r270484

5 years agore PR d/90064 (InSituRegion lacks SPARC64 support)
Iain Buclaw [Sun, 21 Apr 2019 10:21:07 +0000 (10:21 +0000)]
re PR d/90064 (InSituRegion lacks SPARC64 support)

PR d/90064
libphobos: Merge upstream phobos 428460ddd

Defines growDownwards on SPARC64, initial patch by Rainer Orth.

Backports another fix to std.process, allowing permissions tests to be
skipped when running as root.

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

From-SVN: r270483

5 years agolibphobos: Merge upstream druntime 4b2674b3
Iain Buclaw [Sun, 21 Apr 2019 10:02:02 +0000 (10:02 +0000)]
libphobos: Merge upstream druntime 4b2674b3

Adds version (BacktraceExternal) for using libexecinfo instead of
internal implementation on FreeBSD, NetBSD, and DragonFly.

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

From-SVN: r270482

5 years agoMAINTAINERS - add iains as darwin co-maintainer.
Iain Sandoe [Sun, 21 Apr 2019 08:33:19 +0000 (08:33 +0000)]
MAINTAINERS - add iains as darwin co-maintainer.

2019-04-21  Iain Sandoe  <iain@sandoe.co.uk>

* MAINTAINERS: Add myself as co-maintainer for Darwin.

From-SVN: r270481

5 years agoFix test fails on powerpc-darwin.
Iain Sandoe [Sun, 21 Apr 2019 08:25:44 +0000 (08:25 +0000)]
Fix test fails on powerpc-darwin.

The current implementation of “speculation_barrier”
and “group_end_nop” insns emit hard-wired register
names which causes tests using them to fail on Darwin,
at least, which uses “rNN” instead of “NN”.

The patch makes the register names for these insns use
the operand output mechanism to substitute the
appropriate variant when needed.

gcc/

2019-04-21  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/rs6000.md (group_end_nop): Emit insn register
names using operand format, rather than hard-wired.
(speculation_barrier): Likewise.

From-SVN: r270480

5 years agolibstdc++-v3 Skip tests on Darwin8-10.
Iain Sandoe [Sun, 21 Apr 2019 08:14:47 +0000 (08:14 +0000)]
libstdc++-v3 Skip tests on Darwin8-10.

These earlier Darwin versions have “FP_≈” inside a
comment in architecture/{ppc,i386}/math.h, which is
included by math.h which causes the tests to fail.

The intent of the tests (i.e. to ensure that the
library itself does not emit non-ascii) is covered
by other platforms, including later Darwin editions.

2019-04-21  Iain Sandoe  <iain@sandoe.co.uk>

* testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
to Darwin10.
* testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
* testsuite/17_intro/headers/c++2020/charset.cc: Likewise.

From-SVN: r270479

5 years agod: Use semanticRun to prevent declaration pass from running multiple times.
Iain Buclaw [Sun, 21 Apr 2019 07:03:32 +0000 (07:03 +0000)]
d: Use semanticRun to prevent declaration pass from running multiple times.

This shouldn't happen during normal traversal of the AST provided from
the front-end, however as there are some cases where declarations need
to be visited out of order, such as what is being done in PR d/89017, it
then becomes necessary to guard against this.

gcc/d/ChangeLog:

2019-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>

* decl.cc (DeclVisitor::visit(Import)): Set semanticRun after
completion, guard against being called more than once.
(DeclVisitor::visit(StructDeclaration)): Likewise.
(DeclVisitor::visit(ClassDeclaration)): Likewise.
(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
(DeclVisitor::visit(VarDeclaration)): Likewise.
(DeclVisitor::visit(TypeInfoDeclaration)): Likewise.

From-SVN: r270478

5 years agod: Ensure all unittests are registered against the original module.
Iain Buclaw [Sun, 21 Apr 2019 07:03:22 +0000 (07:03 +0000)]
d: Ensure all unittests are registered against the original module.

As any unittest functions registered against the testing module when
compiling with -fbuilding-libphobos-tests are ignored during the
generation of the ModuleInfo data.

gcc/d/ChangeLog:

2019-04-21  Iain Buclaw  <ibuclaw@gdcproject.org>

* modules.cc (register_module_decl): Don't register unittests against
the ModuleInfo symbol for -fbuilding-libphobos-tests.

From-SVN: r270477

5 years agopr89009.C: Add dg-require-effective-target fpic.
Sandra Loosemore [Sun, 21 Apr 2019 02:01:36 +0000 (22:01 -0400)]
pr89009.C: Add dg-require-effective-target fpic.

2019-04-20  Sandra Loosemore  <sandra@codesourcery.com>

gcc/testsuite/
* g++.dg/ipa/pr89009.C: Add dg-require-effective-target fpic.

From-SVN: r270476

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

From-SVN: r270475

5 years agoDelegate PSTL configuration to pstl/pstl_config.h
Thomas Rodgers [Sat, 20 Apr 2019 23:20:03 +0000 (23:20 +0000)]
Delegate PSTL configuration to pstl/pstl_config.h

 * include/bits/c++config: Remove explicit PSTL configuration
 macros and use definitions from <pstl/pstl_config.h>.

From-SVN: r270472

5 years agoCleanup algorithm implementations
Thomas Rodgers [Sat, 20 Apr 2019 22:45:58 +0000 (22:45 +0000)]
Cleanup algorithm implementations

* include/pstl/glue_algorithm_impl.h (stable_sort): Forward
        execution policy.
(mismatch): Forward execution policy.
(equal): Qualify call to std::equal().
(partial_sort): Forward execution policy.
(inplace_merge): Forward execution policy.

From-SVN: r270471

5 years agolibphobos: core.atomic should have fallback when there's no libatomic.
Iain Buclaw [Sat, 20 Apr 2019 17:14:50 +0000 (17:14 +0000)]
libphobos: core.atomic should have fallback when there's no libatomic.

libphobos/ChangeLog:

2019-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>

PR d/89293
* libdruntime/core/atomic.d (casImpl): Remove static assert for
GNU_Have_Atomics, add static path to handle missing atomic support.
(atomicLoad): Likewise.
(atomicStore): Likewise.
(atomicFence):  Likewise.
(atomicMutexHandle, AtomicMutex): Declare types.
(_getAtomicMutex): New function.
(getAtomicMutex): Declare.

From-SVN: r270470

5 years agoPR c++/90190 - CTAD with list-constructor.
Jason Merrill [Sat, 20 Apr 2019 06:18:39 +0000 (02:18 -0400)]
PR c++/90190 - CTAD with list-constructor.

The passage quoted talks about an initializer list containing a single
expression, but a braced-init-list is not an expression.

* pt.c (do_class_deduction): Don't try the single element deduction
if the single element is also a braced list.

From-SVN: r270468

5 years agoPR c++/90171 - ICE with destroying delete with size_t parm.
Jason Merrill [Sat, 20 Apr 2019 06:18:30 +0000 (02:18 -0400)]
PR c++/90171 - ICE with destroying delete with size_t parm.

The problem here was that "second parm is size_t" is false for a destroying
sized delete.  So let's introduce sized_deallocation_fn_p when that's what
we're asking, and reserve second_parm_is_size_t for the specific case of
warning about possible confusion with placement delete.

* call.c (sized_deallocation_fn_p): New.  Use it instead of
second_parm_is_size_t in most cases.
(second_parm_is_size_t): Don't check for aligned.

From-SVN: r270467

5 years agoDaily bump.
GCC Administrator [Sat, 20 Apr 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270466

5 years agoImprove implementation of parallel equal()
Thomas Rodgers [Fri, 19 Apr 2019 22:44:11 +0000 (22:44 +0000)]
Improve implementation of parallel equal()

* include/pstl/algorithm_impl.h
(__internal::__brick_equal): use "4 iterator" version of
std::equal().
(__internal::__brick_equal): use simd for random access
iterators on unsequenced execution policies.
(__internal::__pattern_equal): add "4 iterator" version
(__internal::__pattern_equal): dispatch to simd __brick_equal
for vector-only execution policies.
(__internal::__pattern_equal): dispatch to __parallel_or for
parallel execution policies.
* include/pstl/glue_algorithm_impl.h
(std::equal): dispatch to "4 iterator" version of
__internal::__pattern_equal().

From-SVN: r270463

5 years ago* de.po, es.po, fr.po, sv.po: Update.
Jakub Jelinek [Fri, 19 Apr 2019 19:19:51 +0000 (21:19 +0200)]
* de.po, es.po, fr.po, sv.po: Update.

From-SVN: r270462

5 years agotree-call-cdce: If !HONOR_NANS do not make code with NaNs (PR88055)
Segher Boessenkool [Fri, 19 Apr 2019 16:58:01 +0000 (18:58 +0200)]
tree-call-cdce: If !HONOR_NANS do not make code with NaNs (PR88055)

If we don't HONOR_NANS we should not try to use any unordered
comparison results.  Best case those will just be optimized away;
realistically, they ICE.  For example, the rs6000 backend has some
code that specifically checks we never do this.

PR tree-optimization/88055
* tree-call-cdce.c (comparison_code_if_no_nans): New function.
(gen_one_condition): Use it if !HONOR_NANS.

From-SVN: r270460

5 years agore PR c++/89900 (ICE: Segmentation fault (in check_instantiated_arg))
Paolo Carlini [Fri, 19 Apr 2019 15:36:20 +0000 (15:36 +0000)]
re PR c++/89900 (ICE: Segmentation fault (in check_instantiated_arg))

/cp
2019-04-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/89900
* pt.c (fn_type_unification): When handling null explicit
arguments do not special case non-parameter packs.

/testsuite
2019-04-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/89900
* g++.dg/cpp0x/pr89900-1.C: New.
* g++.dg/cpp0x/pr89900-2.C: Likewise.
* g++.dg/cpp0x/pr89900-3.C: Likewise.
* g++.dg/cpp0x/pr89900-4.C: Likewise.

From-SVN: r270459

5 years agolibgo/go/syscall: add SockAddrDatalink on AIX
Ian Lance Taylor [Fri, 19 Apr 2019 14:20:16 +0000 (14:20 +0000)]
libgo/go/syscall: add SockAddrDatalink on AIX

    This patch is required in order to build golang.org/x/net. The
    corresponding Go Toolchain patch is CL 170537.

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

From-SVN: r270458

5 years agore PR middle-end/90139 (ICE in emit_block_move_hints, at expr.c:1601)
Jakub Jelinek [Fri, 19 Apr 2019 11:58:11 +0000 (13:58 +0200)]
re PR middle-end/90139 (ICE in emit_block_move_hints, at expr.c:1601)

PR middle-end/90139
* tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return
assign_temp instead of gen_reg_rtx.

* gcc.c-torture/compile/pr90139.c: New test.

From-SVN: r270457

5 years agore PR c++/90138 (ICE on invalid in contains_struct_check())
Jakub Jelinek [Fri, 19 Apr 2019 11:57:23 +0000 (13:57 +0200)]
re PR c++/90138 (ICE on invalid in contains_struct_check())

PR c++/90138
* pt.c (process_template_parm): Set decl to pushdecl result.  If
!is_non_type, also set parm to that.

* g++.dg/template/pr90138.C: New test.

From-SVN: r270456

5 years agore PR c/89888 (When switch controlling expression is promoted from type narrower...
Jakub Jelinek [Fri, 19 Apr 2019 11:56:07 +0000 (13:56 +0200)]
re PR c/89888 (When switch controlling expression is promoted from type narrower than int, GCC does not diagnose identical cases)

PR c/89888
* c-common.h (c_add_case_label): Remove orig_type and outside_range_p
arguments.
(c_do_switch_warnings): Remove outside_range_p argument.
* c-common.c (check_case_bounds): Removed.
(c_add_case_label): Remove orig_type and outside_range_p arguments.
Don't call check_case_bounds.  Fold low_value as well as high_value.
* c-warn.c (c_do_switch_warnings): Remove outside_range_p argument.
Check for case labels outside of range of original type here and
adjust them.
c/
* c-typeck.c (struct c_switch): Remove outside_range_p member.
(c_start_case): Don't clear it.
(do_case): Adjust c_add_case_label caller.
(c_finish_case): Adjust c_do_switch_warnings caller.
cp/
* decl.c (struct cp_switch): Remove outside_range_p member.
(push_switch): Don't clear it.
(pop_switch): Adjust c_do_switch_warnings caller.
(finish_case_label): Adjust c_add_case_label caller.
testsuite/
* c-c++-common/pr89888.c: New test.
* g++.dg/torture/pr40335.C: Change dg-bogus into dg-warning.
Don't expect -Wswitch-unreachable warning.

From-SVN: r270455

5 years agoPR translation/90118 Missing space between words
Christophe Lyon [Fri, 19 Apr 2019 09:08:49 +0000 (09:08 +0000)]
PR translation/90118 Missing space between words

2019-04-19  Christophe Lyon  <christophe.lyon@linaro.org>

PR translation/90118

contrib/
* check-internal-format-escaping.py: Check that %< is not next to
a word.

gcc/
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Add missing space before %<.

From-SVN: r270454

5 years agore PR c++/90108 (ICE: Segmentation fault (in c_tree_chain_next))
Jakub Jelinek [Fri, 19 Apr 2019 08:24:05 +0000 (10:24 +0200)]
re PR c++/90108 (ICE: Segmentation fault (in c_tree_chain_next))

PR c++/90108
* c-decl.c (merge_decls): If remove is main variant and
DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
variant that has newdecl as TYPE_NAME if any.

* decl.c (duplicate_decls): If remove is main variant and
DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
variant that has newdecl as TYPE_NAME if any.

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

From-SVN: r270453

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

From-SVN: r270451

5 years agore PR rtl-optimization/87871 (testcases fail after r265398 on arm)
Peter Bergner [Thu, 18 Apr 2019 22:14:17 +0000 (22:14 +0000)]
re PR rtl-optimization/87871 (testcases fail after r265398 on arm)

PR rtl-optimization/87871
* ira-lives.c (make_object_dead): Don't add conflicts to
TOTAL_CONFLICT_HARD_REGS for register ignore_reg_for_conflicts.

From-SVN: r270448

5 years agoPR middle-end/89797 - ICE on a vector_size (1LU << 33) int variable
Martin Sebor [Thu, 18 Apr 2019 20:26:07 +0000 (20:26 +0000)]
PR middle-end/89797 - ICE on a vector_size (1LU << 33) int variable

gcc/ChangeLog:
* tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U.
* config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid
assuming type size fits in SHWI.

From-SVN: r270447

5 years agore PR ipa/85051 (ICE: in edge_badness, at ipa-inline.c:1035 with flattening recursive...
Jan Hubicka [Thu, 18 Apr 2019 17:03:00 +0000 (19:03 +0200)]
re PR ipa/85051 (ICE: in edge_badness, at ipa-inline.c:1035 with flattening recursive calls)

PR ipa/85051
* ipa-inline.c (flatten_function): New parameter UPDATE.
(ipa_inline, early_inliner): Use it.

From-SVN: r270446

5 years agoPR c++/87554 - ICE with extern template and reference member.
Jason Merrill [Thu, 18 Apr 2019 16:50:10 +0000 (12:50 -0400)]
PR c++/87554 - ICE with extern template and reference member.

The removed code ended up setting DECL_INITIAL to the INIT_EXPR returned by
split_nonconstant_init, which makes no sense.  This code was added back in
1996, so any rationale is long lost.

* decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars.

From-SVN: r270445

5 years agomove ChangeLog entry to the correct file
Segher Boessenkool [Thu, 18 Apr 2019 13:38:55 +0000 (15:38 +0200)]
move ChangeLog entry to the correct file

From-SVN: r270444

5 years agoFix UB in int_const_binop
Richard Sandiford [Thu, 18 Apr 2019 12:30:36 +0000 (12:30 +0000)]
Fix UB in int_const_binop

When testing PR 85164, the baseline bootstrap-ubsan results had
a lot of failures from int_const_binop.  This is because with the
new overflow handling we can sometimes do:

      poly_res = res;

on an uninitialised res.

2019-04-18  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* fold-const.c (int_const_binop): Return early on failure.

From-SVN: r270443

5 years agoFix two ubsan failures (PR85164)
Richard Sandiford [Thu, 18 Apr 2019 12:29:56 +0000 (12:29 +0000)]
Fix two ubsan failures (PR85164)

Two fixes for UB when handling very large offsets.  The calculation in
force_int_to_mode would have been correct if signed integers used modulo
arithmetic, so just switch to unsigned types.  The calculation in
rtx_addr_can_trap_p_1 didn't handle overflow properly, so switch to
known_subrange_p instead (which is supposed to handle all cases).

2019-04-18  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR middle-end/85164
* combine.c (force_int_to_mode): Cast the argument rather than
the result of known_alignment.
* rtlanal.c (rtx_addr_can_trap_p_1): Use known_subrange_p.

gcc/testsuite/
PR middle-end/85164
* gcc.dg/pr85164-1.c, gcc.dg/pr85164-2.c: New tests.

From-SVN: r270442

5 years agore PR debug/90131 (wrong debug info at -O3)
Richard Biener [Thu, 18 Apr 2019 12:02:40 +0000 (12:02 +0000)]
re PR debug/90131 (wrong debug info at -O3)

2019-04-18  Richard Biener  <rguenther@suse.de>

PR debug/90131
* tree-cfgcleanup.c (move_debug_stmts_from_forwarder): Split
out from ...
(remove_forwarder_block): ... here.
(remove_forwarder_block_with_phi): Also move debug stmts here.

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

From-SVN: r270441

5 years agoReverted unintended part of previous commit.
Jakub Jelinek [Thu, 18 Apr 2019 10:34:06 +0000 (12:34 +0200)]
Reverted unintended part of previous commit.

From-SVN: r270439

5 years agore PR translation/79183 (Hard coded plurals in gimple-ssa-sprintf.c:2050)
Jakub Jelinek [Thu, 18 Apr 2019 10:28:21 +0000 (12:28 +0200)]
re PR translation/79183 (Hard coded plurals in gimple-ssa-sprintf.c:2050)

PR translation/79183
* gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
inform where appropriate.

From-SVN: r270438

5 years agotree.c (get_qualified_type): Put found type variants at the head of the variant list.
Richard Biener [Thu, 18 Apr 2019 07:40:35 +0000 (07:40 +0000)]
tree.c (get_qualified_type): Put found type variants at the head of the variant list.

2019-04-18  Richard Biener  <rguenther@suse.de>

* tree.c (get_qualified_type): Put found type variants at the
head of the variant list.

From-SVN: r270437

5 years agoMAINTAINERS: Update email address
Iain Sandoe [Thu, 18 Apr 2019 07:40:08 +0000 (07:40 +0000)]
MAINTAINERS: Update email address

2019-04-18  Iain Sandoe  <iain@sandoe.co.uk>

* MAINTAINERS: Update my email address.

From-SVN: r270436

5 years agore PR bootstrap/89864 (gcc fails to build/bootstrap with XCode 10.2)
Erik Schnetter [Thu, 18 Apr 2019 06:53:21 +0000 (06:53 +0000)]
re PR bootstrap/89864 (gcc fails to build/bootstrap with XCode 10.2)

fix PR89864

      2019-04-18  Erik Schnetter  <schnetter@gmail.com>
  Jakub Jelinek  <jakub@redhat.com>
  Iain Sandoe  <iain@sandoe.co.uk>

PR bootstrap/89864
* inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword
use in headers included by C++.
* fixincl.x: Regenerated.

Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r270435

5 years agore PR go/90110 (libgo fails to build against glibc 2.19)
Ian Lance Taylor [Thu, 18 Apr 2019 04:11:22 +0000 (04:11 +0000)]
re PR go/90110 (libgo fails to build against glibc 2.19)

PR go/90110
    compiler: use temporary to avoid early destruction

    The code was passing a substr directly to strtol, and then checking
    the *end value returned by strtol.  But the substr could be destroyed
    as soon as strtol returns, making the test of *end invalid.

    Also fix an incorrect test of the string index rather than the value.

    Fixes https://gcc.gnu.org/PR90110

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

From-SVN: r270434

5 years agoPR c++/90047 - ICE with enable_if alias template.
Jason Merrill [Thu, 18 Apr 2019 03:32:24 +0000 (23:32 -0400)]
PR c++/90047 - ICE with enable_if alias template.

In order to make alias templates useful for SFINAE we instantiate them under
the prevailing 'complain' argument, so an error encountered while
instantiating during SFINAE context is silent.  The problem in this PR comes
when we later look up the erroneous instantiation and don't give an error at
that point.  Fixed by not adding an erroneous instantiation to the hash
table, so we instantiate it again when needed and get the error.  This
required changes to a number of tests, which previously said "substitution
failed:" with no explanation of what the failure was; now we properly
explain.

* pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the
hash table when we're in SFINAE context.

From-SVN: r270433

5 years agoDaily bump.
GCC Administrator [Thu, 18 Apr 2019 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270430

5 years agoPR libstdc++/90105 make forward_list::sort stable
Jonathan Wakely [Wed, 17 Apr 2019 21:47:20 +0000 (22:47 +0100)]
PR libstdc++/90105 make forward_list::sort stable

While testing the fix I also discovered that operator== assumes the
elements are comparable with operator!= which is not required.

PR libstdc++/90105
* include/bits/forward_list.h (operator==): Do not use operator!= to
compare elements.
(forward_list<T, A>::sort(Comp)): When elements are equal take the one
earlier in the list, so that sort is stable.
* testsuite/23_containers/forward_list/operations/90105.cc: New test.
* testsuite/23_containers/forward_list/comparable.cc: Test with
types that meet the minimum EqualityComparable and LessThanComparable
requirements. Remove irrelevant comment.

From-SVN: r270427

5 years agors6000: Remove a comma in a debug string
Segher Boessenkool [Wed, 17 Apr 2019 21:11:00 +0000 (23:11 +0200)]
rs6000: Remove a comma in a debug string

It is a bit confusing, it looks as if the compiler tried to print
something there.

* config/rs6000/rs6000.c (rs6000_register_move_cost): Fix typo.

From-SVN: r270426

5 years agoFix condition for std::variant to be copy constructible
Jonathan Wakely [Wed, 17 Apr 2019 19:27:27 +0000 (20:27 +0100)]
Fix condition for std::variant to be copy constructible

The standard says the std::variant copy constructor is defined as
deleted unless all alternative types are copy constructible, but we were
making it also depend on move constructible. Fix the condition and
enhance the tests to check the semantics with pathological copy-only
types (i.e. supporting copying but having deleted moves).

The enhanced tests revealed a regression in copy assignment for
non-trivial alternative types, where the assignment would not be
performed because the condition in the _Copy_assign_base visitor is
false: is_same_v<remove_reference_t<T&>, remove_reference_t<const T&>>.

* include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
Do not depend on whether all alternative types are move constructible.
(__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
from the operand when deciding whether to perform the assignment.
* testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
with deleted move constructor and deleted move assignment operator.
(default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
behaviour of variants with DeletedMoves as an alternative.
* testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
(move_ctor, move_assign): Check that moving a variant with a
DeletedMoves alternative falls back to copying instead of moving.

From-SVN: r270425

5 years agoRemove unnecessary string literals from static_assert in C++17 tests
Jonathan Wakely [Wed, 17 Apr 2019 19:27:23 +0000 (20:27 +0100)]
Remove unnecessary string literals from static_assert in C++17 tests

The string literal is optional in C++17 and all these are empty so add
no value.

* testsuite/20_util/variant/compile.cc: Remove empty string literals
from static_assert declarations.

From-SVN: r270424

5 years agoFix tests for std::variant to match original intention
Jonathan Wakely [Wed, 17 Apr 2019 19:27:19 +0000 (20:27 +0100)]
Fix tests for std::variant to match original intention

* testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
actually match its name.
(MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
(test_swap()): Fix result for MoveCtorOnly and check
MoveCtorAndSwapOnly.

From-SVN: r270423

5 years agore PR c++/89325 (False warnings about "optimization attribute" on operators when...
Jakub Jelinek [Wed, 17 Apr 2019 19:24:55 +0000 (21:24 +0200)]
re PR c++/89325 (False warnings about "optimization attribute" on operators when -fno-ipa-cp-clone)

PR c++/89325
* g++.dg/ext/attrib58.C: New test.
* g++.dg/ext/attrib59.C: New test.
* g++.dg/ext/attrib60.C: New test.

From-SVN: r270422

5 years agore PR target/90125 (Typo of AVX512 intrinsics)
Jakub Jelinek [Wed, 17 Apr 2019 19:23:45 +0000 (21:23 +0200)]
re PR target/90125 (Typo of AVX512 intrinsics)

PR target/90125
* config/i386/avx512fintrin.h (_mm_maskz_fmadd_round_sd,
_mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd,
_mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd,
_mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd,
_mm_maskz_fnmsub_round_ss): Use _maskz builtin instead of _mask3.

PR target/90125
* gcc.target/i386/avx512f-vfmsubXXXss-2.c (avx512f_test): Adjust
constants to ensure precise result even when not using fma.
* gcc.target/i386/avx512f-vfnmaddXXXss-2.c (avx512f_test): Likewise.
* gcc.target/i386/avx512f-vfmaddXXXsd-3.c: New test.
* gcc.target/i386/avx512f-vfmaddXXXss-3.c: New test.
* gcc.target/i386/avx512f-vfmsubXXXsd-3.c: New test.
* gcc.target/i386/avx512f-vfmsubXXXss-3.c: New test.
* gcc.target/i386/avx512f-vfnmaddXXXsd-3.c: New test.
* gcc.target/i386/avx512f-vfnmaddXXXss-3.c: New test.
* gcc.target/i386/avx512f-vfnmsubXXXsd-3.c: New test.
* gcc.target/i386/avx512f-vfnmsubXXXss-3.c: New test.

From-SVN: r270421

5 years agoira-conflicts.c (print_allocno_conflicts): Always print something, even for allocno...
Peter Bergner [Wed, 17 Apr 2019 19:22:15 +0000 (19:22 +0000)]
ira-conflicts.c (print_allocno_conflicts): Always print something, even for allocno's with no conflicts.

gcc/
* ira-conflicts.c (print_allocno_conflicts): Always print something,
even for allocno's with no conflicts.
(print_conflicts): Print an extra newline.

From-SVN: r270420

5 years agoauto-inc-dec: Set alignment properly
Segher Boessenkool [Wed, 17 Apr 2019 18:49:50 +0000 (20:49 +0200)]
auto-inc-dec: Set alignment properly

When auto-inc-dec creates a new mem to compute the cost of doing some
transform, it forgets to copy over the alignment of the original mem.
This gives wrong costs, for example, for rs6000 a floating point load
or store is hugely expensive if unaligned.  This patch fixes it.

* auto-inc-dec.c (attempt_change): Set the alignment of the
temporary memory to that of the original.

From-SVN: r270419

5 years agoPR c++/90124 - bogus error with incomplete type in decltype.
Marek Polacek [Wed, 17 Apr 2019 18:26:42 +0000 (18:26 +0000)]
PR c++/90124 - bogus error with incomplete type in decltype.

* typeck.c (build_class_member_access_expr): Check
cp_unevaluated_operand.

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

From-SVN: r270418

5 years agotarghooks.c (default_print_patchable_function_entry): Emit __patchable_function_entri...
Joao Moreira [Wed, 17 Apr 2019 18:24:23 +0000 (18:24 +0000)]
targhooks.c (default_print_patchable_function_entry): Emit __patchable_function_entries section with writable flags to allow...

* targhooks.c (default_print_patchable_function_entry): Emit
__patchable_function_entries section with writable flags to allow
relocation resolution.

From-SVN: r270417

5 years ago* collect2.c (main): Change gcc.gnu.org URL to HTTPS.
Jonny Grant [Wed, 17 Apr 2019 18:11:06 +0000 (18:11 +0000)]
* collect2.c (main): Change gcc.gnu.org URL to HTTPS.

From-SVN: r270416

5 years agodg-extract-results.sh: Only handle WARNING: program timed out lines specially in...
Jakub Jelinek [Wed, 17 Apr 2019 17:57:02 +0000 (19:57 +0200)]
dg-extract-results.sh: Only handle WARNING: program timed out lines specially in "$MODE" == "sum".

* dg-extract-results.sh: Only handle WARNING: program timed out
lines specially in "$MODE" == "sum".  Restore previous behavior
for "$MODE" != "sum".  Clear has_timeout and timeout_cnt if in
a different variant or curfile is empty.
* dg-extract-results.py: Fix a typo.

From-SVN: r270415

5 years agore PR middle-end/90095 (wrong code with -Os -fno-tree-bit-ccp)
Jakub Jelinek [Wed, 17 Apr 2019 13:28:39 +0000 (15:28 +0200)]
re PR middle-end/90095 (wrong code with -Os -fno-tree-bit-ccp)

PR middle-end/90095
* internal-fn.c (expand_mul_overflow): Don't set SUBREG_PROMOTED_VAR_P
on lowpart SUBREGs.

* gcc.dg/pr90095-1.c: New test.
* gcc.dg/pr90095-2.c: New test.

From-SVN: r270410

5 years agoAdd constexpr to std::optional::value_or(U&&)&&
Jonathan Wakely [Wed, 17 Apr 2019 13:13:30 +0000 (14:13 +0100)]
Add constexpr to std::optional::value_or(U&&)&&

In C++1z drafts up to N4606 the constexpr keyword was missing from the
detailed description of this function, despite being shown in the class
synopsis.  That was fixed editorially for N4618, but our implementation
was not corrected to match.

* include/std/optional (optional::value_or(U&&) &&): Add missing
constexpr specifier.
* testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
for disengaged optionals and rvalue optionals.
* testsuite/20_util/optional/observers/4.cc: Likewise.

From-SVN: r270409

5 years ago[ARC][COMMITTED] Fix diagnostic messages.
Claudiu Zissulescu [Wed, 17 Apr 2019 11:09:59 +0000 (13:09 +0200)]
[ARC][COMMITTED] Fix diagnostic messages.

Apply upper/dot rule on diagnostic messages.

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

* config/arc/arc.c (arc_init): Format diagnostic string.
(arc_override_options): Likewise.
(check_if_valid_regno_const): Likewise.
(arc_reorg): Likewise.

From-SVN: r270408

5 years agors6000: Improve the load/store-with-update patterns (PR17108)
Segher Boessenkool [Wed, 17 Apr 2019 09:45:57 +0000 (11:45 +0200)]
rs6000: Improve the load/store-with-update patterns (PR17108)

Many of these patterns only worked in 32-bit mode, and some only worked
in 64-bit mode.  This patch makes these use Pmode, fixing the PR.  On
the other hand, the stack updates have to use the same mode for the
stack pointer as for the value stored, so let's simplify that a bit.

Many of these patterns pass the wrong mode to
avoiding_indexed_address_p (it should be the mode of the datum
accessed, not the mode of the pointer).

Finally, I merge some patterns into one (using iterators).

PR target/17108
* config/rs6000/rs6000.c (rs6000_split_multireg_move): Adjust pattern
name.
(rs6000_emit_allocate_stack_1): Simplify condition.  Adjust pattern
name.
* config/rs6000/rs6000.md (bits): Add entries for SF and DF.
(*movdi_update1): Use Pmode.
(movdi_<mode>_update): Fix argument to avoiding_indexed_address_p.
(movdi_<mode>_update_stack): Rename to ...
(movdi_update_stack): ... this.  Fix comment.  Change condition. Don't
use Pmode.
(*movsi_update1): Use Pmode.
(*movsi_update2): Use Pmode.
(movsi_update): Rename to ...
(movsi_<mode>_update): ... this.  Use Pmode.
(movsi_update_stack): Fix condition.
(*movhi_update1): Use Pmode.  Fix argument to
avoiding_indexed_address_p.
(*movhi_update2): Ditto.
(*movhi_update3): Ditto.
(*movhi_update4): Ditto.
(*movqi_update1): Ditto.
(*movqi_update2): Ditto.
(*movqi_update3): Ditto.
(*movsf_update1, *movdf_update1): Merge, rename to...
(*mov<mode>_update1): This.  Use Pmode.  Fix argument to
avoiding_indexed_address_p.  Add "size" attribute.
(*movsf_update2, *movdf_update2): Merge, rename to...
(*mov<mode>_update2): This.  Ditto.
(*movsf_update3): Use Pmode.  Fix argument to
avoiding_indexed_address_p.
(*movsf_update4): Ditto.
(allocate_stack): Simplify condition.  Adjust pattern names.

From-SVN: r270407

5 years ago[PR90048] Fortran OpenACC 'private' clause rejected for predetermined private loop...
Thomas Schwinge [Wed, 17 Apr 2019 08:34:20 +0000 (10:34 +0200)]
[PR90048] Fortran OpenACC 'private' clause rejected for predetermined private loop iteration variable

gcc/fortran/
PR fortran/90048
* openmp.c (gfc_resolve_do_iterator): Handle sharing_clauses for
OpenACC, too.
(gfc_resolve_oacc_blocks): Populate sharing_clauses with private
clauses.
gcc/testsuite/
PR fortran/90048
* gfortran.dg/goacc/private-explicit-kernels-1.f95: New file.
* gfortran.dg/goacc/private-explicit-parallel-1.f95: Likewise.
* gfortran.dg/goacc/private-explicit-routine-1.f95: Likewise.

From-SVN: r270406

5 years ago[PR90067, PR90114] Document Fortran OpenACC predetermined private status quo
Thomas Schwinge [Wed, 17 Apr 2019 08:34:10 +0000 (10:34 +0200)]
[PR90067, PR90114] Document Fortran OpenACC predetermined private status quo

gcc/testsuite/
PR fortran/90067
PR fortran/90114
* gfortran.dg/goacc/private-1.f95: Remove file.
* gfortran.dg/goacc/private-2.f95: Likewise.
* gfortran.dg/goacc/private-predetermined-kernels-1.f95: New file.
* gfortran.dg/goacc/private-predetermined-parallel-1.f95:
Likewise.
* gfortran.dg/goacc/private-predetermined-routine-1.f95: Likewise.

From-SVN: r270405

5 years agore PR target/89093 (C++ exception handling clobbers d8 VFP register)
Jakub Jelinek [Wed, 17 Apr 2019 08:30:44 +0000 (10:30 +0200)]
re PR target/89093 (C++ exception handling clobbers d8 VFP register)

PR target/89093
* config/arm/arm.c (arm_valid_target_attribute_rec): Don't skip
whitespace at the start of target attribute string.

* gcc.target/arm/pr89093-2.c: New test.

From-SVN: r270404

5 years agod: Fix the build on hosts missing _MAX and _MAX macros.
Iain Buclaw [Wed, 17 Apr 2019 06:02:01 +0000 (06:02 +0000)]
d: Fix the build on hosts missing _MAX and _MAX macros.

gcc/d/ChangeLog:

2019-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

* d-system.h (POSIX): Define unix as POSIX.
(INT32_MAX, INT32_MIN, INT64_MIN, UINT32_MAX, UINT64_MAX): Provide
fallback definitions.

From-SVN: r270403

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

From-SVN: r270401

5 years agod: Use build_exeext suffix for D generator programs.
Iain Buclaw [Tue, 16 Apr 2019 21:16:43 +0000 (21:16 +0000)]
d: Use build_exeext suffix for D generator programs.

Updated build and invocation of idgen and impcnvgen, ensuring that they
are removed when cleaning the build directory.

Added BUILD_LIBDEPS on the link command for the generator programs as
well, which is necessary when the system installed compiler is not GCC.

gcc/d/ChangeLog:

2019-04-16  Iain Buclaw  <ibuclaw@gdcproject.org>

* Make-lang.in (d.mostyclean): Clean idgen and impcnvgen.
(d/idgen): Rename to d/idgen$(build_exeext), add BUILD_LIBDEPS.
(d/impcnvgen): Rename to d/impcnvgen$(build_exeext), add
BUILD_LIBDEPS.
(d/id.c): Call idgen$(build_exeext).
(d/impcnvtab.c): Call impcnvgen$(build_exeext).

From-SVN: r270397

5 years agore PR c++/86953 (compiler crashes with constexpr operator== and specific struct ...
Jakub Jelinek [Tue, 16 Apr 2019 19:06:41 +0000 (21:06 +0200)]
re PR c++/86953 (compiler crashes with constexpr operator== and specific struct (cxx_eval_bit_field_ref, at cp/constexpr.c:2704))

PR c++/86953
* g++.dg/cpp0x/constexpr-86953.C: New test.

From-SVN: r270396

5 years agore PR target/84369 (test case gcc.dg/sms-10.c fails on power9)
Pat Haugen [Tue, 16 Apr 2019 15:58:02 +0000 (15:58 +0000)]
re PR target/84369 (test case gcc.dg/sms-10.c fails on power9)

PR target/84369
* config/rs6000/power9.md: Add store forwarding bypass.

From-SVN: r270394

5 years agoFilter out LTO in config/bootstrap-lto-lean.mk.
Martin Liska [Tue, 16 Apr 2019 15:24:53 +0000 (17:24 +0200)]
Filter out LTO in config/bootstrap-lto-lean.mk.

2019-04-16  Martin Liska  <mliska@suse.cz>

* bootstrap-lto-lean.mk: Filter out -flto in STAGEtrain_CFLAGS.

From-SVN: r270393

5 years agopr89358_0.C: Replace dg-* with dg-lto-*.
Dominique d'Humieres [Tue, 16 Apr 2019 13:24:58 +0000 (15:24 +0200)]
pr89358_0.C: Replace dg-* with dg-lto-*.

2019-04-16  Dominique d'Humieres  <dominiq@gcc.gnu.org>

* g++.dg/lto/pr89358_0.C: Replace dg-* with dg-lto-*.

From-SVN: r270390

5 years ago[PR89528] reset debug uses of return value when dropping dead RTL call
Alexandre Oliva [Tue, 16 Apr 2019 12:44:57 +0000 (12:44 +0000)]
[PR89528] reset debug uses of return value when dropping dead RTL call

When we remove an RTL call, we wouldn't clean up references to the
return value of the call in debug insns.  Make it so that we do.

for  gcc/ChangeLog

PR debug/89528
* valtrack.c (dead_debug_insert_temp): Reset debug references
to the return value of a call being removed.

for  gcc/testsuite/ChangeLog

PR debug/89528
* gcc.dg/guality/pr89528.c: New.

From-SVN: r270389

5 years ago[PR86438] avoid too-long shift in test
Alexandre Oliva [Tue, 16 Apr 2019 12:44:46 +0000 (12:44 +0000)]
[PR86438] avoid too-long shift in test

The test fell back to long long and long when __int128 is not
available, but it assumed sizeof(long) < sizeof(long long) because of
a shift count that would be out of range for a long long if their
widths are the same.  Fixed by splitting it up into two shifts.

for  gcc/testsuite/ChangeLog

PR rtl-optimization/86438
* gcc.dg/torture/pr86438.c: Split up too-wide shift.

From-SVN: r270388

5 years ago[ARC] Refactor deprecated macros.
Claudiu Zissulescu [Tue, 16 Apr 2019 10:21:15 +0000 (12:21 +0200)]
[ARC] Refactor deprecated macros.

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

* config/arc/arc-protos.h (arc_register_move_cost): Remove.
* config/arc/arc.c (arc_register_move_cost): Re-purpose it to
implement target hook.
(arc_memory_move_cost): New function.
(TARGET_REGISTER_MOVE_COST): Define.
(TARGET_MEMORY_MOVE_COST): Likewise.
* config/arc/arc.h (REGISTER_MOVE_COST): Remove.
(MEMORY_MOVE_COST): Likewise.

fix

From-SVN: r270387

5 years ago[ARC] Remove Rs5 constraint.
Claudiu Zissulescu [Tue, 16 Apr 2019 10:21:03 +0000 (12:21 +0200)]
[ARC] Remove Rs5 constraint.

New LRA algorithms require the all the register constraints to be
defined using define_register_constraint keyword. However, Rs5
constraint was not LRA proof. Remove it and replace it by equivalent
Rcd constraint.

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

* config/arc/arc.md (sibcall_insn): Use Rcd constraint.
(sibcall_value_insn): Likewise.
* config/arc/constraints.md (Rs5): Remove.

From-SVN: r270386

5 years ago[ARC] Refurb eliminate regs.
Claudiu Zissulescu [Tue, 16 Apr 2019 10:20:52 +0000 (12:20 +0200)]
[ARC] Refurb eliminate regs.

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

        * config/arc/arc.c (arc_hard_regno_modes): Add two missing modes
        for last two fake registers.
        (arc_conditional_register_usage): Make sure fake frame and arg
        pointer regs are in general regs class.
        (FRAME_POINTER_MASK): Remove.
        (RETURN_ADDR_MASK): Remove.
        (arc_must_save_register): Use hard frame regnum.
        (frame_restore_reg): Use hard_frame_pointer_rtx.
        (arc_save_callee_saves): Likewise.
        (arc_restore_callee_saves): Likewise.
        (arc_save_callee_enter): Likewise.
        (arc_restore_callee_leave): Likewise.
        (arc_save_callee_milli): Likewise.
        (arc_eh_return_address_location): Likewise.
        (arc_check_multi): Use hard frame regnum.
        (arc_can_eliminate): Likewise.
        * config/arc/arc.h (FIXED_REGISTERS): Make FP register available
        for register allocator.
        (REG_CLASS_CONTENTS): Update GENERAL_REGS.
        (REGNO_OK_FOR_BASE_P): Consider FRAME_POINTER_REGNUM.
        (FRAME_POINTER_REGNUM): Change it to a fake register.
        (HARD_FRAME_POINTER_REGNUM): Defined.
        (ARG_POINTER_REGNUM): Change it to a new fake register.
        (ELIMINABLE_REGS): Update.
        (REGISTER_NAMES): Update names.
        * config/arc/arc.md (LP_START): Remove.
        (LP_END): Likewise.
        (shift_si3_loop): Update pattern.

From-SVN: r270385

5 years ago[ARC] Emit blockage regardless to avoid delay slot scheduling.
Claudiu Zissulescu [Tue, 16 Apr 2019 10:20:40 +0000 (12:20 +0200)]
[ARC] Emit blockage regardless to avoid delay slot scheduling.

1.The delay slot scheduler can reschedule some of the frame related
instructions resulting in having incorect CFI information. This patch
introduces a schedule blockage to avoid this problem.

2.There are cases when an interrupt may happen and not all the current
function stack operations are done, which may result in stack
corruption. Such an example is accessing an returning a local
structure members, which members are allocated on stack. The stack
adjustment and the accessing of the struct member can be reorder as
they may not use both the SP register for the access.

3.Also, do not save/restore SP when in interrupt. The SP is switch by
the core IRQ machinery.

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

* config/arc/arc.c (arc_expand_prologue): Emit blockage regardless
to avoid delay slot scheduling.
(arc_must_save_register): Don't save SP.
* config/arc/arc.md (stack_tie): Remove.
(UNSPEC_ARC_STKTIE): Likewise.

From-SVN: r270384

5 years ago[NDS32] Fix nds32_split_ashiftdi3 with large shift amount.
Kito Cheng [Tue, 16 Apr 2019 09:27:31 +0000 (09:27 +0000)]
[NDS32] Fix nds32_split_ashiftdi3 with large shift amount.

gcc/
* config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Fix wrong
code gen with large shift amount.

Co-Authored-By: Shiva Chen <shiva0217@gmail.com>
From-SVN: r270383

5 years ago[NDS32] Handle subreg correctly in wext_odd_dep_p.
Chung-Ju Wu [Tue, 16 Apr 2019 09:22:26 +0000 (09:22 +0000)]
[NDS32] Handle subreg correctly in wext_odd_dep_p.

gcc/
* config/nds32/nds32-pipelines-auxiliary.c (wext_odd_dep_p): Handle
subreg.

From-SVN: r270382

5 years agore PR target/90096 (Misleading option hint for AVX intrinsics)
Jakub Jelinek [Tue, 16 Apr 2019 08:40:58 +0000 (10:40 +0200)]
re PR target/90096 (Misleading option hint for AVX intrinsics)

PR target/90096
* config/i386/i386.c (ix86_target_string): Add ADD_ABI_P argument, only
print -m64/-mx32/-m32 if it is true.
(ix86_debug_options, ix86_function_specific_print): Pass true as
ADD_ABI_P to ix86_target_string.
(ix86_expand_builtin): Adjust ix86_target_string caller, pass true as
ADD_ABI_P only if OPTION_MASK_ISA_64BIT is set in bisa and in that case
or into it OPTION_MASK_ISA_ABI_64 or OPTION_MASK_ISA_ABI_X32.

* gcc.target/i386/pr90096.c: New test.
* gcc.target/i386/pr69255-1.c: Adjust expected diagnostics.
* gcc.target/i386/pr69255-2.c: Likewise.
* gcc.target/i386/pr69255-3.c: Likewise.

From-SVN: r270381

5 years agore PR rtl-optimization/90082 (ICE in delete_unmarked_insns, at dce.c:653)
Jakub Jelinek [Tue, 16 Apr 2019 08:26:26 +0000 (10:26 +0200)]
re PR rtl-optimization/90082 (ICE in delete_unmarked_insns, at dce.c:653)

PR rtl-optimization/90082
* dce.c (can_delete_call): New function.
(deletable_insn_p, mark_insn): Use it.

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

From-SVN: r270380

5 years agore PR tree-optimization/90090 (ICE in mark_reachable_handlers, at tree-eh.c:3938...
Jakub Jelinek [Tue, 16 Apr 2019 08:24:47 +0000 (10:24 +0200)]
re PR tree-optimization/90090 (ICE in mark_reachable_handlers, at tree-eh.c:3938 since r219202)

PR tree-optimization/90090
* tree-ssa-math-opts.c (is_division_by): Ignore divisions that can
throw internally.
(is_division_by_square): Likewise.  Formatting fix.

* g++.dg/opt/pr90090.C: New test.

From-SVN: r270379