gcc.git
6 years agoAdd PR number
Richard Sandiford [Wed, 25 Jul 2018 08:42:38 +0000 (08:42 +0000)]
Add PR number

From-SVN: r262962

6 years agoFix ceil_log2(0) (PR 86644)
Richard Sandiford [Wed, 25 Jul 2018 08:41:35 +0000 (08:41 +0000)]
Fix ceil_log2(0) (PR 86644)

This PR shows a pathological case in which we try SLP vectorisation on
dead code.  We record that 0 bits of the result are enough to satisfy
all users (which is true), and that led to precision being 0 in:

static unsigned int
vect_element_precision (unsigned int precision)
{
  precision = 1 << ceil_log2 (precision);
  return MAX (precision, BITS_PER_UNIT);
}

ceil_log2 (0) returned 64 rather than 0, leading to 1 << 64, which is UB.

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

gcc/
* hwint.c (ceil_log2): Fix comment.  Return 0 for 0.

From-SVN: r262961

6 years agoLimit dump_flag enum values range (PR middle-end/86645).
Martin Liska [Wed, 25 Jul 2018 08:04:15 +0000 (10:04 +0200)]
Limit dump_flag enum values range (PR middle-end/86645).

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

        PR middle-end/86645
* dumpfile.c: And excluded values with TDF_ALL_VALUES.
* dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES.

From-SVN: r262960

6 years agoExplain asan parameters in params.def (PR sanitizer/79635).
Martin Liska [Wed, 25 Jul 2018 08:02:53 +0000 (10:02 +0200)]
Explain asan parameters in params.def (PR sanitizer/79635).

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

        PR sanitizer/79635
* params.def: Explain ASan abbreviation and provide
        a documentation link.

From-SVN: r262959

6 years agoPR tree-optimization/86622 - incorrect strlen of array of array plus variable offset
Martin Sebor [Wed, 25 Jul 2018 02:11:31 +0000 (02:11 +0000)]
PR tree-optimization/86622 - incorrect strlen of array of array plus variable offset

PR tree-optimization/86622 - incorrect strlen of array of array plus variable offset
PR tree-optimization/86532 - Wrong code due to a wrong strlen folding starting with r262522

gcc/ChangeLog:

PR tree-optimization/86622
PR tree-optimization/86532
* builtins.h (string_length): Declare.
* builtins.c (c_strlen): Correct handling of non-constant offsets.
(check_access): Be prepared for non-constant length ranges.
(string_length): Make extern.
* expr.c (string_constant): Only handle the minor non-constant
array index.  Use string_constant to compute the length of
a generic string constant.

gcc/testsuite/ChangeLog:

PR tree-optimization/86622
PR tree-optimization/86532
* gcc.c-torture/execute/strlen-2.c: New test.
* gcc.c-torture/execute/strlen-3.c: New test.
* gcc.c-torture/execute/strlen-4.c: New test.

From-SVN: r262958

6 years agoDaily bump.
GCC Administrator [Wed, 25 Jul 2018 00:16:34 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262957

6 years agoAdd initial version of C++17 <memory_resource> header
Jonathan Wakely [Tue, 24 Jul 2018 21:09:55 +0000 (22:09 +0100)]
Add initial version of C++17 <memory_resource> header

This is missing the synchronized_pool_resource and
unsynchronized_pool_resource classes but is otherwise complete.

This is a new implementation, not based on the existing code in
<experimental/memory_resource>, but memory_resource and
polymorphic_allocator ended up looking almost the same anyway.

The constant_init kluge in src/c++17/memory_resource.cc is apparently
due to Richard Smith and ensures that the objects are constructed during
constant initialiation phase and not destroyed (because the
constant_init destructor doesn't destroy the union member and the
storage is not reused).

* config/abi/pre/gnu.ver: Export new symbols.
* configure: Regenerate.
* include/Makefile.am: Add new <memory_resource> header.
* include/Makefile.in: Regenerate.
* include/precompiled/stdc++.h: Include <memory_resource> for C++17.
* include/std/memory_resource: New header.
(memory_resource, polymorphic_allocator, new_delete_resource)
(null_memory_resource, set_default_resource, get_default_resource)
(pool_options, monotonic_buffer_resource): Define.
* src/Makefile.am: Add c++17 directory.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.am: Fix comment.
* src/c++17/Makefile.am: Add makefile for new sub-directory.
* src/c++17/Makefile.in: Generate.
* src/c++17/memory_resource.cc: New.
(newdel_res_t, null_res_t, constant_init, newdel_res, null_res)
(default_res, new_delete_resource, null_memory_resource)
(set_default_resource, get_default_resource): Define.
* testsuite/20_util/memory_resource/1.cc: New test.
* testsuite/20_util/memory_resource/2.cc: New test.
* testsuite/20_util/monotonic_buffer_resource/1.cc: New test.
* testsuite/20_util/monotonic_buffer_resource/allocate.cc: New test.
* testsuite/20_util/monotonic_buffer_resource/deallocate.cc: New test.
* testsuite/20_util/monotonic_buffer_resource/release.cc: New test.
* testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
New test.
* testsuite/20_util/polymorphic_allocator/1.cc: New test.
* testsuite/20_util/polymorphic_allocator/resource.cc: New test.
* testsuite/20_util/polymorphic_allocator/select.cc: New test.
* testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource):
Define concrete memory resource for testing.
(__gnu_test::default_resource_mgr): Define RAII helper for changing
default resource.

From-SVN: r262953

6 years agoPR libstdc++/86658 fix __niter_wrap to not copy invalid iterators
Jonathan Wakely [Tue, 24 Jul 2018 20:49:10 +0000 (21:49 +0100)]
PR libstdc++/86658 fix __niter_wrap to not copy invalid iterators

An output iterator passed as the unused first argument to __niter_wrap
might have already been invalidated, so don't copy it.

PR libstdc++/86658
* include/bits/stl_algobase.h (__niter_wrap<_Iterator>): Pass unused
parameter by reference, to avoid copying invalid iterators.
* testsuite/25_algorithms/copy/86658.cc: New test.

From-SVN: r262952

6 years agoAvoid &LOOP_VINFO_MASKS for bb vectorisation (PR 86618)
Richard Sandiford [Tue, 24 Jul 2018 18:08:19 +0000 (18:08 +0000)]
Avoid &LOOP_VINFO_MASKS for bb vectorisation (PR 86618)

r262589 introduced another instance of the bug fixed in r258131.

2018-07-23  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/86618
* tree-vect-stmts.c (vectorizable_call): Don't take the address
of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null.

From-SVN: r262951

6 years agoFix segfault in -fsave-optimization-record (PR tree-optimization/86636)
David Malcolm [Tue, 24 Jul 2018 16:06:58 +0000 (16:06 +0000)]
Fix segfault in -fsave-optimization-record (PR tree-optimization/86636)

There are various ways that it's possible for a gimple statement to
have an UNKNOWN_LOCATION, and for that UNKNOWN_LOCATION to be wrapped
in an ad-hoc location to capture inlining information.

For such a location, LOCATION_FILE (loc) is NULL.

Various places in -fsave-optimization-record were checking for
  loc != UNKNOWN_LOCATION
and were passing LOCATION_FILE (loc) to code that assumed a non-NULL
filename, thus leading to segfaults for the above cases.

This patch updates the tests to use
  LOCATION_LOCUS (loc) != UNKNOWN_LOCATION
instead, to look through ad-hoc location wrappers, fixing the segfaults.

It also adds various assertions to the affected code.

gcc/ChangeLog:
PR tree-optimization/86636
* json.cc (json::object::set): Fix comment.  Add assertions.
(json::array::append): Move here from json.h.  Add comment and an
assertion.
(json::string::string): Likewise.
* json.h (json::array::append): Move to json.cc.
(json::string::string): Likewise.
* optinfo-emit-json.cc
(optrecord_json_writer::impl_location_to_json): Assert that we
aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc
wrapper around it.  Expand the location once, rather than three
times.
(optrecord_json_writer::inlining_chain_to_json): Fix the check for
UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc
wrappers.
(optrecord_json_writer::optinfo_to_json): Likewise, in four
places.  Fix some overlong lines.

gcc/testsuite/ChangeLog:
PR tree-optimization/86636
* gcc.c-torture/compile/pr86636.c: New test.

From-SVN: r262950

6 years ago[GCC][AARCH64] Canonicalize aarch64 widening simd plus insns
Matthew Malcomson [Tue, 24 Jul 2018 15:37:52 +0000 (15:37 +0000)]
[GCC][AARCH64] Canonicalize aarch64 widening simd plus insns

Committed on behalf of matthew.malcomson@arm.com

2018-07-24  Matthew Malcomson  <matthew.malcomson@arm.com>

* config/aarch64/aarch64-simd.md
(aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>): Split into...
(aarch64_<ANY_EXTEND:su>subw<mode>): ... This...
(aarch64_<ANY_EXTEND:su>addw<mode>): ... And this.
(aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>_internal): Split into...
(aarch64_<ANY_EXTEND:su>subw<mode>_internal): ... This...
(aarch64_<ANY_EXTEND:su>addw<mode>_internal): ... And this.
(aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>_internal): Split into...
(aarch64_<ANY_EXTEND:su>subw2<mode>_internal): ... This...
(aarch64_<ANY_EXTEND:su>addw2<mode>_internal): ... And this.

* gcc.target/aarch64/vect-su-add-sub.c: New.

From-SVN: r262949

6 years agore PR middle-end/86627 (Signed 128-bit division by 2 no longer expanded to RTL)
Jakub Jelinek [Tue, 24 Jul 2018 14:23:18 +0000 (16:23 +0200)]
re PR middle-end/86627 (Signed 128-bit division by 2 no longer expanded to RTL)

PR middle-end/86627
* expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN
and size > HOST_BITS_PER_WIDE_INT.  For size > HOST_BITS_PER_WIDE_INT
and abs_d == d, do the power of two handling if profitable.

* gcc.target/i386/pr86627.c: New test.

From-SVN: r262948

6 years agoMinor refactoring in <bit> header
Jonathan Wakely [Tue, 24 Jul 2018 13:51:50 +0000 (14:51 +0100)]
Minor refactoring in <bit> header

* include/std/bit (__countl_zero, __countr_zero, __popcount): Use
local variables for number of digits instead of type aliases.
(__log2p1): Remove redundant branch also checked in __countl_zero.

From-SVN: r262947

6 years agomatch.pd: Add BIT_FIELD_REF canonicalizations.
Richard Biener [Tue, 24 Jul 2018 13:29:07 +0000 (13:29 +0000)]
match.pd: Add BIT_FIELD_REF canonicalizations.

2018-07-24  Richard Biener  <rguenther@suse.de>

* match.pd: Add BIT_FIELD_REF canonicalizations.

From-SVN: r262946

6 years agoReorder conditions in uses-allocator construction helper
Jonathan Wakely [Tue, 24 Jul 2018 13:03:25 +0000 (14:03 +0100)]
Reorder conditions in uses-allocator construction helper

The erased_type condition is only true for code using the Library
Fundamentals TS, so assume it's less common and only check it after
checking for convertibility.

This does mean for types using erased_type the more expensive
convertibility check is done first, but such types are rare.

* include/bits/uses_allocator.h (__is_erased_or_convertible): Reorder
conditions. Add comments.
* testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error line.
* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
* testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.

From-SVN: r262945

6 years agoMake __resource_adaptor_imp usable with C++17 memory_resource
Jonathan Wakely [Tue, 24 Jul 2018 13:03:20 +0000 (14:03 +0100)]
Make __resource_adaptor_imp usable with C++17 memory_resource

By making the memory_resource base class a template parameter the
__resource_adaptor_imp can be used to adapt an allocator into a
std::pmr::memory_resource instead of experimental::pmr::memory_resource.

* include/experimental/memory_resource: Adjust comments and
whitespace.
(__resource_adaptor_imp): Add second template parameter for type of
memory resource base class.
(memory_resource): Define default constructor, destructor, copy
constructor and copy assignment operator as defaulted.

From-SVN: r262944

6 years agoPR libstdc++/70966 fix lifetime bug for default resource
Jonathan Wakely [Tue, 24 Jul 2018 13:03:11 +0000 (14:03 +0100)]
PR libstdc++/70966 fix lifetime bug for default resource

PR libstdc++/70966
* include/experimental/memory_resource (__get_default_resource): Use
placement new to create an object with dynamic storage duration.

From-SVN: r262943

6 years agore PR testsuite/86649 (g++.dg/tree-ssa/pr19476-1.C fails starting with r262928)
Jakub Jelinek [Tue, 24 Jul 2018 10:24:00 +0000 (12:24 +0200)]
re PR testsuite/86649 (g++.dg/tree-ssa/pr19476-1.C fails starting with r262928)

PR testsuite/86649
* g++.dg/tree-ssa-/pr19476-1.C: Check dom2 dump instead of ccp1.
* g++.dg/tree-ssa-/pr19476-5.C: Likewise.
* g++.dg/tree-ssa-/pr19476-6.C: New test.
* g++.dg/tree-ssa-/pr19476-7.C: New test.

From-SVN: r262942

6 years agoDaily bump.
GCC Administrator [Tue, 24 Jul 2018 00:16:33 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262940

6 years agoinclhack.def (aix_unistd): New.
David Edelsohn [Mon, 23 Jul 2018 20:51:50 +0000 (20:51 +0000)]
inclhack.def (aix_unistd): New.

* inclhack.def (aix_unistd): New.
* fixincl.x: Regenerate.
* tests/base/unistd.h [AIX_UNISTD_CHECK]: New test.

From-SVN: r262936

6 years agoPR libstdc++/70940 optimize pmr::resource_adaptor for allocators using malloc
Jonathan Wakely [Mon, 23 Jul 2018 19:40:28 +0000 (20:40 +0100)]
PR libstdc++/70940 optimize pmr::resource_adaptor for allocators using malloc

pmr::resource_adaptor can avoid allocating an oversized buffer and doing
manual alignment within that buffer when the wrapped allocator is known
to always meet the requested alignment. Specifically, if the allocator
is known to use malloc or new directly, then we can call the allocator
directly for any fundamental alignment.

PR libstdc++/70940
* include/experimental/memory_resource
(__resource_adaptor_common::_AlignMgr::_M_unadjust): Add assertion.
(__resource_adaptor_common::__guaranteed_alignment): New helper to
give maximum alignment an allocator guarantees. Specialize for known
allocators using new and malloc.
(__resource_adaptor_imp::do_allocate): Use __guaranteed_alignment.
(__resource_adaptor_imp::do_deallocate): Likewise.
* testsuite/experimental/memory_resource/new_delete_resource.cc:
Check that new and delete are called with expected sizes.

From-SVN: r262935

6 years agore PR target/86591 (gcc.target/powerpc/builtins-1.c fails starting with r261904)
Carl Love [Mon, 23 Jul 2018 16:16:41 +0000 (16:16 +0000)]
re PR target/86591 (gcc.target/powerpc/builtins-1.c fails starting with r261904)

gcc/testsuite/ChangeLog:

2018-07-23  Carl Love  <cel@us.ibm.com>

PR 86591
* gcc.target/powerpc/altivec-1-runnable.c: Move vector double tests to
file altivec-2-runnable.c.
* gcc.target/powerpc/altivec-2-runnable.c: Add vector double tests.
* gcc.target/powerpc/buitlins-1.c: Remove dg-final check for xxlor.
Update dg-final test for __divdi3 and __udivdi3 instructions. Update
comments for instruction generated by vec_mergeh, vec_perm, vec_round,
vec_cts, vec_ctu, vec_cpsgn tests.

From-SVN: r262934

6 years agore PR c/86617 (Volatile qualifier is ignored sometimes for unsigned char)
Bernd Edlinger [Mon, 23 Jul 2018 13:23:51 +0000 (13:23 +0000)]
re PR c/86617 (Volatile qualifier is ignored sometimes for unsigned char)

gcc:
2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR c/86617
        * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values.

testsuite:
2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR c/86617
        * gcc.dg/pr86617.c: New test.

From-SVN: r262933

6 years agogimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_...
Bernd Edlinger [Mon, 23 Jul 2018 13:20:38 +0000 (13:20 +0000)]
gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL terminated STRING_CST object.

2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
        terminated STRING_CST object.

From-SVN: r262932

6 years ago2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
Bernd Edlinger [Mon, 23 Jul 2018 12:48:48 +0000 (12:48 +0000)]
2018-07-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.

From-SVN: r262931

6 years agors6000: Improve vsx_init_v4si
Segher Boessenkool [Mon, 23 Jul 2018 11:27:38 +0000 (13:27 +0200)]
rs6000: Improve vsx_init_v4si

This changes vsx_init_v4si to be an expander.  That way, no special
cases are needed anymore for special arguments: the normal RTL passes
can deal with it.

* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust.
* config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete.
* config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force
the elements into a register.
(rs6000_split_v4si_init_di_reg): Delete.
(rs6000_split_v4si_init): Delete.
* config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT.
(vsx_init_v4si): Rewrite as a define_expand.

From-SVN: r262930

6 years agors6000: Generate rl*imi for memory some more
Segher Boessenkool [Mon, 23 Jul 2018 11:25:28 +0000 (13:25 +0200)]
rs6000: Generate rl*imi for memory some more

An rl<wd>imi instruction is often written like "(a << 8) | (b & 255)".
If "b" now is a byte in memory, combine will combine the load with the
masking (with 255 in the example), since that is a single instruction;
and then the rl*imi isn't combined from the remaining pieces.

This patch adds a splitter to make combine handle this case.

* config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the
zero_extend argument from memory): New.

From-SVN: r262929

6 years agore PR c++/86569 (-Wnonnull-compare affects code generation since r233684)
Jakub Jelinek [Mon, 23 Jul 2018 07:48:56 +0000 (09:48 +0200)]
re PR c++/86569 (-Wnonnull-compare affects code generation since r233684)

PR c++/86569
* cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
or warn_nonnull_compare.

* g++.dg/warn/Wnonnull-compare-9.C: New test.

From-SVN: r262928

6 years agoDaily bump.
GCC Administrator [Mon, 23 Jul 2018 00:16:33 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262927

6 years agoPR bootstrap/86621 - 'alloca' bound is unknown in tree-vect-slp.c:1437:16
Martin Sebor [Sun, 22 Jul 2018 21:09:32 +0000 (21:09 +0000)]
PR bootstrap/86621 - 'alloca' bound is unknown in tree-vect-slp.c:1437:16

gcc/ChangeLog:
* gcc/gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid
diagnosing calls with unknown arguments unless -Walloca-larger-than
is restricted to less than PTRDIFF_MAX bytes.

From-SVN: r262923

6 years ago* doc/gcov.texi (Invoking Gcov): Editorial changes.
Gerald Pfeifer [Sun, 22 Jul 2018 08:39:57 +0000 (08:39 +0000)]
* doc/gcov.texi (Invoking Gcov): Editorial changes.

From-SVN: r262922

6 years agoDaily bump.
GCC Administrator [Sun, 22 Jul 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262921

6 years agoDaily bump.
GCC Administrator [Sat, 21 Jul 2018 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262917

6 years agolibcpp: remove redundant parameter from rich_location::set_range
David Malcolm [Fri, 20 Jul 2018 21:39:14 +0000 (21:39 +0000)]
libcpp: remove redundant parameter from rich_location::set_range

gcc/c-family/ChangeLog:
* c-common.c (c_cpp_error): Remove redundant "line_table"
parameter from call to rich_location::set_range.
(maybe_suggest_missing_token_insertion): Likewise.

gcc/ChangeLog:
* pretty-print.c (text_info::set_location): Remove redundant
"line_table" parameter from call to rich_location::set_range.

libcpp/ChangeLog:
* include/line-map.h (rich_location::set_range): Remove redundant
line_maps * parameter.
* line-map.c (rich_location::set_range): Likewise.

From-SVN: r262913

6 years agoPR middle-end/82063 - issues with arguments enabled by -Wall
Martin Sebor [Fri, 20 Jul 2018 21:19:49 +0000 (21:19 +0000)]
PR middle-end/82063 - issues with arguments enabled by -Wall

gcc/c-family/ChangeLog:
* gcc/c-family/c.opt (-Warray-bounds): Remove redundant -Wall.

From-SVN: r262912

6 years agore PR middle-end/82063 (issues with arguments enabled by -Wall)
Martin Sebor [Fri, 20 Jul 2018 21:18:31 +0000 (21:18 +0000)]
re PR middle-end/82063 (issues with arguments enabled by -Wall)

PR middle-end/82063

gcc/testsuite/ChangeLog:

* gcc/testsuite/c-c++-common/pr68833-1.c: Adjust.

From-SVN: r262911

6 years agoPR middle-end/82063 - issues with arguments enabled by -Wall
Martin Sebor [Fri, 20 Jul 2018 20:51:20 +0000 (20:51 +0000)]
PR middle-end/82063 - issues with arguments enabled by -Wall

gcc/ada/ChangeLog:

PR middle-end/82063
* gcc-interface/misc.c (gnat_handle_option): Change function argument
to HOST_WIDE_INT.

gcc/brig/ChangeLog:

PR middle-end/82063
* brig/brig-lang.c (brig_langhook_handle_option): Change function
argument to HOST_WIDE_INT.

gcc/c-family/ChangeLog:

PR middle-end/82063
* c-common.h (c_common_handle_option): Change function argument
to HOST_WIDE_INT.
* c-opts.c (c_common_init_options): Same.
(c_common_handle_option): Same.  Remove special handling of
OPT_Walloca_larger_than_ and OPT_Wvla_larger_than_.
* c.opt (-Walloc-size-larger-than, -Walloca-larger-than): Change
options to take a HOST_WIDE_INT argument and accept a byte-size
suffix.  Initialize.
(-Wvla-larger-than): Same.
(-Wno-alloc-size-larger-than, -Wno-alloca-larger-than): New.
(-Wno-vla-larger-than): Same.

gcc/fortran/ChangeLog:

PR middle-end/82063
* gfortran.h (gfc_handle_option): Change function argument
to HOST_WIDE_INT.
* options.c (gfc_handle_option): Same.

gcc/go/ChangeLog:

PR middle-end/82063
* go-lang.c (go_langhook_handle_option): Change function argument
to HOST_WIDE_INT.

gcc/lto/ChangeLog:

PR middle-end/82063
* lto-lang.c (lto_handle_option): Change function argument
to HOST_WIDE_INT.

gcc/testsuite/ChangeLog:

PR middle-end/82063
* gcc/testsuite/c-c++-common/pr68657-1.c: Adjust.
* gcc/testsuite/c-c++-common/pr68657-2.c: Same.
* gcc/testsuite/c-c++-common/pr68657-3.c: Same.
* gcc.dg/Walloc-size-larger-than-16.c: Same.
* gcc.dg/Walloca-larger-than.c: New test.
* gcc.dg/Walloca-larger-than-2.c: New test.
* gcc.dg/Wframe-larger-than-2.c: New test.
* gcc.dg/Wlarger-than3.c: New test.
* gcc.dg/Wvla-larger-than-3.c: New test.
* gcc.dg/pr42611.c: Adjust.
* gnat.dg/frame_overflow.adb: Same.

gcc/ChangeLog:

PR middle-end/82063
* builtins.c (expand_builtin_alloca): Adjust.
* calls.c (alloc_max_size): Simplify.
* cgraphunit.c (cgraph_node::expand): Adjust.
* common.opt (larger_than_size, warn_frame_larger_than): Remove
variables.
(frame_larger_than_size): Same.
(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options
to take a HOST_WIDE_INT argument and accept a byte-size suffix.
Initialize.
* doc/invoke.texi (GCC Command Options): Document option arguments.
Explain byte-size arguments and suffixes.
(-Wvla-larger-than, -Wno-alloc-size-larger-than): Update.
(-Wno-alloca-larger-than, -Wno-vla-larger-than): Same.
(-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same.
* doc/options.texi (UInteger): Expand.
(Host_Wide_Int, ByteSize): Document new properties.
* final.c (final_start_function_1): Include sizes in an error message.
* function.c (frame_offset_overflow): Same.
* gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust.
(alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT.
Diagnose unbounded alloca calls only for limits of less than
PTRDIFF_MAX.
(alloca_call_type): Adjust.  Diagnose possibly out-of-bounds alloca
calls and VLA size only for limits of less than PTRDIFF_MAX.  Same
for alloca(0).
(pass_walloca::execute): Adjust.  Diagnose alloca calls in loops
only for limits of less than PTRDIFF_MAX.
* langhooks-def.h (lhd_handle_option): Change function argument
to HOST_WIDE_INT.
* langhooks.c (lhd_handle_option): Same.
* langhooks.h (handle_option): Same.
* opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and
ByteSize flags.
(var_type, var_type_struct): Same.
(var_set): Handle ByteSize flag.
* optc-gen.awk: Add comments to output to ease debugging.  Make
use of HOST_WIDE_INT where appropriate.
* opts-gen-save.awk:  Use %lx to format unsigned long.
* opth-gen.awk: Change function argument to HOST_WIDE_INT.
* opts-common.c (integral_argument): Return HOST_WIDE_INT and add
arguments.  Parse bytes-size suffixes.
(enum_arg_to_value): Change function argument to HOST_WIDE_INT.
(enum_value_to_arg): Same.
(decode_cmdline_option): Handle cl_host_wide_int.  Adjust.
(handle_option): Adjust.
(generate_option): Change function argument to HOST_WIDE_INT.
(cmdline_handle_error): Adjust.
(read_cmdline_option): Change function argument to HOST_WIDE_INT.
(set_option): Change function argument to HOST_WIDE_INT.
(option_enabled): Handle cl_host_wide_int.
(get_option_state): Handle CLVC_SIZE.
(control_warning_option): Same.
* opts.c (common_handle_option): Change function argument to
HOST_WIDE_INT.  Remove handling of OPT_Walloca_larger_than_ and
OPT_Wvla_larger_than_.
* opts.h (enum cl_var_type): Add an enumerator.
* stor-layout.c (layout_decl): Print a more meaningful warning.
* toplev.c (output_stack_usage): Adjust.

From-SVN: r262910

6 years agogfortran.h (gfc_symbol): Add pointer to next derived type.
Andrew Benson [Fri, 20 Jul 2018 20:00:42 +0000 (20:00 +0000)]
gfortran.h (gfc_symbol): Add pointer to next derived type.

2018-07-20  Andrew Benson  <abenson@carnegiescience.edu>

* gfortran.h (gfc_symbol): Add pointer to next derived type.
(gfc_dt_list, gfc_get_dt_list): Remove.
(gfc_namespace): Replace gfc_dt_list with gfc_symbol.
* parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with
simple nullification of gfc_derived_types.
* resolve.c (resolve_global_procedure): Replace gfc_dt_list with
gfc_symbol.
(add_dt_to_dt_list): Change derived type linked list insertion to
utilize dt_next pointers in gfc_symbol.
* symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2)
(get_iso_c_binding_dt, generate_isocbinding_symbol): Remove
gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type
linked list search/insertion to utilize dt_next pointers in gfc_symbol.
* trans-types.c (gfc_get_derived_type): Change derived type linked
list search to utilize dt_next pointers in gfc_symbol.

From-SVN: r262909

6 years agocompiler: do order_evaluations before remove_shortcuts
Ian Lance Taylor [Fri, 20 Jul 2018 19:56:21 +0000 (19:56 +0000)]
compiler: do order_evaluations before remove_shortcuts

    In remove_shortcuts, the shortcut expressions (&&, ||) are
    rewritten to if statements, which are lifted out before the
    statement containing the shortcut expression. If the containing
    statement has other (sub)expressions that should be evaluated
    before the shortcut expression, which has not been lifted out,
    this will result in wrong evaluation order.

    For example, F() + G(A() && B()), the evaluation order per spec
    is F, A, B (if A returns true), G. If we lift A() and B() out
    first, they will be called before F, which is wrong.

    To fix this, we split order_evaluations to two phases. The first
    phase, which runs before remove_shortcuts, skips shortcut
    expressions' components. So it won't lift out subexpressions that
    are evaluated conditionally. The shortcut expression itself is
    ordered, since it may have side effects. Then we run
    remove_shortcuts. At this point the subexpressions that should be
    evaluated before the shortcut expression are already lifted out.
    remove_shortcuts also runs the second phase of order_evaluations
    to order the components of shortcut expressions, which were
    skipped during the first phase.

    Reorder the code blocks of remove_shortcuts and order_evaluations,
    since remove_shortcuts now calls Order_eval.

    Fixes golang/go#26495.

    Reviewed-on: https://go-review.googlesource.com/125299

From-SVN: r262908

6 years agoGive up the inlining expansion for strcmp/strncmp/memcmp on a target where the...
Qing Zhao [Fri, 20 Jul 2018 18:18:25 +0000 (18:18 +0000)]
Give up the inlining expansion for strcmp/strncmp/memcmp on a target where the...

Give up the inlining expansion for strcmp/strncmp/memcmp on a target
where the type of the call has same or narrower presicion than unsigned
char.
Change char to unsigned char for strcmp/strncmp when expand them to
a sequence of byte comparisons.

Due to C standard section 7.24.4:

The sign of a nonzero value returned by the comparison functions memcmp,
strcmp, and strncmp is determined by the sign of the difference between
the values of the first pair of characters (both interpreted as unsigned
char) that differ in the objects being compared.

bootstraped and tested on both X86 and Aarch64. no regression.

From-SVN: r262907

6 years agoPR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to...
Martin Sebor [Fri, 20 Jul 2018 16:38:43 +0000 (16:38 +0000)]
PR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to ccp folding

PR tree-optimization/86613 - missing -Warray-bounds on a wide string access due to ccp folding
PR tree-optimization/86611 - missing -Warray-bounds on a large negative index into a string in lp64

gcc/testsuite/ChangeLog:
* gcc/testsuite/c-c++-common/Warray-bounds-2.c: Undefine macros and
prune duplicate warnings.
* gcc/testsuite/gcc.dg/Warray-bounds-31.c: Xfail test cases with
data-model-dependencies.
* gcc/testsuite/gcc.dg/Warray-bounds-32.c: Ditto.

From-SVN: r262906

6 years agoAdd "-fsave-optimization-record"
David Malcolm [Fri, 20 Jul 2018 15:37:23 +0000 (15:37 +0000)]
Add "-fsave-optimization-record"

This patch implements a -fsave-optimization-record option, which
leads to a JSON file being written out, recording the dump_* calls
made (via the optinfo infrastructure).

The patch includes a minimal version of the JSON patch I posted last
year, with just enough support needed for optimization records (I
removed all of the parser code, leaving just the code for building
in-memory JSON trees and writing them to a pretty_printer).

gcc/ChangeLog:
* Makefile.in (OBJS): Add json.o and optinfo-emit-json.o.
(CFLAGS-optinfo-emit-json.o): Define TARGET_NAME.
* common.opt (fsave-optimization-record): New option.
* coretypes.h (struct kv_pair): Move here from dumpfile.c.
* doc/invoke.texi (-fsave-optimization-record): New option.
* dumpfile.c: Include "optinfo-emit-json.h".
(struct kv_pair): Move to coretypes.h.
(optgroup_options): Make non-static.
(dump_context::end_scope): Call
optimization_records_maybe_pop_dump_scope.
* dumpfile.h (optgroup_options): New decl.
* json.cc: New file.
* json.h: New file.
* optinfo-emit-json.cc: New file.
* optinfo-emit-json.h: New file.
* optinfo.cc: Include "optinfo-emit-json.h".
(optinfo::emit): Call optimization_records_maybe_record_optinfo.
(optinfo_enabled_p): Check optimization_records_enabled_p.
(optinfo_wants_inlining_info_p): Likewise.
* optinfo.h: Update comment.
* profile-count.c (profile_quality_as_string): New function.
* profile-count.h (profile_quality_as_string): New decl.
(profile_count::quality): New accessor.
* selftest-run-tests.c (selftest::run_tests): Call json_cc_tests
and optinfo_emit_json_cc_tests.
* selftest.h (selftest::json_cc_tests): New decl.
(selftest::optinfo_emit_json_cc_tests): New decl.
* toplev.c: Include "optinfo-emit-json.h".
(compile_file): Call optimization_records_finish.
(do_compile): Call optimization_records_start.
* tree-ssa-live.c: Include optinfo.h.
(remove_unused_scope_block_p): Retain inlining information if
optinfo_wants_inlining_info_p returns true.

From-SVN: r262905

6 years agoPR libstdc++/86595 add missing noexcept
Jonathan Wakely [Fri, 20 Jul 2018 11:52:54 +0000 (12:52 +0100)]
PR libstdc++/86595 add missing noexcept

PR libstdc++/86595
* include/bits/fs_dir.h (directory_entry::refresh(error_code&)): Add
noexcept.

From-SVN: r262904

6 years agoUse default visibility to work around clang -fvisibility-inlines-hidden bug
Fangrui Song [Fri, 20 Jul 2018 11:24:55 +0000 (11:24 +0000)]
Use default visibility to work around clang -fvisibility-inlines-hidden bug

Clang (including trunk and many older versions) incorrectly marks static
local variables (__tag) hidden when -fvisibility-inlines-hidden is used.
This can lead to multiple instances of __tag when shares objects are used.

2018-07-20  Fangrui Song  <maskray@google.com>

* include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Use
_GLIBCXX_VISIBILITY(default).

From-SVN: r262903

6 years agoPR libstdc++/86603 Move __cpp_lib_list_remove_return_type macro
Jonathan Wakely [Fri, 20 Jul 2018 11:24:38 +0000 (12:24 +0100)]
PR libstdc++/86603 Move __cpp_lib_list_remove_return_type macro

This should only be defined for C++2a not C++17.

PR libstdc++/86603
* include/std/version: Move __cpp_lib_list_remove_return_type macro.

From-SVN: r262902

6 years agore PR debug/86585 (ICE in gen_member_die, at dwarf2out.c:24935)
Richard Biener [Fri, 20 Jul 2018 11:13:47 +0000 (11:13 +0000)]
re PR debug/86585 (ICE in gen_member_die, at dwarf2out.c:24935)

2018-07-20  Richard Biener  <rguenther@suse.de>

PR debug/86585
* dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p
to cover -flto-partition=none.

lto/
* lto.c (unify_scc): Before we throw away an SCC see if we
can amend prevailing single-entry SCC with debug refs.

* g++.dg/lto/pr86585_0.C: New testcase.
* g++.dg/lto/pr86585_1.C: Likewise.

From-SVN: r262901

6 years agoRemove unused code.
Martin Liska [Fri, 20 Jul 2018 11:00:56 +0000 (13:00 +0200)]
Remove unused code.

2018-07-20  Martin Liska  <mliska@suse.cz>

* tree.h (DECL_LOCATION_RANGE): Remove unused macro.
(get_decl_source_range): Remove unused function.

From-SVN: r262900

6 years agotree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
Richard Biener [Fri, 20 Jul 2018 07:18:35 +0000 (07:18 +0000)]
tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.

2018-07-20  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
(struct vn_phi_s): Likewise.
(struct vn_reference_s): Likewise.
* tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut
for searching the slot of an entry known to be in the hash itself.
(vn_phi_hasher::equal): Likewise.
(vn_reference_hasher::equal): Likewise.
(last_inserted_ref, last_inserted_phi, last_inserted_nary): New
globals.
(optimistic_info, current_info): Remove, keeping only valid_info.
(vn_reference_lookup_1): Remove fallback lookup.
(vn_reference_lookup_2): Likewise.
(vn_nary_op_lookup_1): Likewise.
(vn_phi_lookup): Likewise.
(vn_nary_build_or_lookup_1): Make sure to not chain the built
hash element.
(vn_reference_insert): Adjust, chain the inserted hash element
at last_inserted_ref.
(vn_reference_insert_pieces): Likewise.
(visit_reference_op_call): Likewise.
(vn_nary_op_insert_into): Chain the inserted hash element at
last_inserted_nary.
(vn_nary_op_insert_pieces): Adjust.
(vn_nary_op_insert): Likewise.
(vn_nary_op_insert_stmt): Likewise.
(vn_phi_insert): Adjust, chain the inserted hash element at
last_inserted_phi.
(process_scc): Remove clearing and copying the optimistic
table.  Instead remove elements inserted during an optimistic
iteration from the single table we maintain.
(init_scc_vn): Adjust.
(free_scc_vn): Likewise.
(sccvn_dom_walker::record_cond): Likewise.
(sccvn_dom_walker::after_dom_children): Likewise.

From-SVN: r262899

6 years agoMAINTAINERS (m32c, [...]): Remove myself as maintainer.
DJ Delorie [Fri, 20 Jul 2018 02:01:30 +0000 (22:01 -0400)]
MAINTAINERS (m32c, [...]): Remove myself as maintainer.

* MAINTAINERS (m32c, msp43, rl78, libiberty, build): Remove myself
as maintainer.

From-SVN: r262898

6 years agoDaily bump.
GCC Administrator [Fri, 20 Jul 2018 00:16:29 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262897

6 years agoPR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into...
Martin Sebor [Thu, 19 Jul 2018 23:36:34 +0000 (23:36 +0000)]
PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into an array

PR tree-optimization/84047 - missing -Warray-bounds on an out-of-bounds index into an array
PR tree-optimization/83776 - missing -Warray-bounds indexing past the end of a string literal

gcc/ChangeLog:

PR tree-optimization/84047
PR tree-optimization/83776
* tree-vrp.c (vrp_prop::check_mem_ref): New function.
(check_array_bounds): Call it.

gcc/testsuite/ChangeLog:

PR tree-optimization/83776
PR tree-optimization/84047
* gcc.dg/Warray-bounds-29.c: New test.
* gcc.dg/Warray-bounds-30.c: New test.
* gcc.dg/Warray-bounds-31.c: New test.
* gcc.dg/Warray-bounds-32.c: New test.

From-SVN: r262893

6 years agoalign.h (align_flags): Use member initialization.
Martin Sebor [Thu, 19 Jul 2018 22:12:06 +0000 (22:12 +0000)]
align.h (align_flags): Use member initialization.

gcc/ChangeLog:

* align.h (align_flags): Use member initialization.

From-SVN: r262892

6 years agoAdd "optinfo" framework
David Malcolm [Thu, 19 Jul 2018 20:49:25 +0000 (20:49 +0000)]
Add "optinfo" framework

This patch implements a way to consolidate dump_* calls into
optinfo objects, as enabling work towards being able to write out
optimization records to a file.

The patch adds the support for building optinfo instances from dump_*
calls, but leaves implementing any *users* of them to followup patches.

gcc/ChangeLog:
* Makefile.in (OBJS): Add optinfo.o.
* coretypes.h (class symtab_node): New forward decl.
(struct cgraph_node): New forward decl.
(class varpool_node): New forward decl.
* dump-context.h: New file.
* dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h",
"tree-pass.h".
(refresh_dumps_are_enabled): Use optinfo_enabled_p.
(set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed.
(set_alt_dump_file): Likewise.
(dump_context::~dump_context): New dtor.
(dump_gimple_stmt): Move implementation to...
(dump_context::dump_gimple_stmt): ...this new member function.
Add the stmt to any pending optinfo, creating one if need be.
(dump_gimple_stmt_loc): Move implementation to...
(dump_context::dump_gimple_stmt_loc): ...this new member function.
Start a new optinfo and add the stmt to it.
(dump_gimple_expr): Move implementation to...
(dump_context::dump_gimple_expr): ...this new member function.
Add the stmt to any pending optinfo, creating one if need be.
(dump_gimple_expr_loc): Move implementation to...
(dump_context::dump_gimple_expr_loc): ...this new member function.
Start a new optinfo and add the stmt to it.
(dump_generic_expr): Move implementation to...
(dump_context::dump_generic_expr): ...this new member function.
Add the tree to any pending optinfo, creating one if need be.
(dump_generic_expr_loc): Move implementation to...
(dump_context::dump_generic_expr_loc): ...this new member
function.  Add the tree to any pending optinfo, creating one if
need be.
(dump_printf): Move implementation to...
(dump_context::dump_printf_va): ...this new member function.  Add
the text to any pending optinfo, creating one if need be.
(dump_printf_loc): Move implementation to...
(dump_context::dump_printf_loc_va): ...this new member function.
Start a new optinfo and add the stmt to it.
(dump_dec): Move implementation to...
(dump_context::dump_dec): ...this new member function.  Add the
value to any pending optinfo, creating one if need be.
(dump_context::dump_symtab_node): New member function.
(dump_context::get_scope_depth): New member function.
(dump_context::begin_scope): New member function.
(dump_context::end_scope): New member function.
(dump_context::ensure_pending_optinfo): New member function.
(dump_context::begin_next_optinfo): New member function.
(dump_context::end_any_optinfo): New member function.
(dump_context::s_current): New global.
(dump_context::s_default): New global.
(dump_scope_depth): Delete global.
(dumpfile_ensure_any_optinfo_are_flushed): New function.
(dump_symtab_node): New function.
(get_dump_scope_depth): Reimplement in terms of dump_context.
(dump_begin_scope): Likewise.
(dump_end_scope): Likewise.
(selftest::temp_dump_context::temp_dump_context): New ctor.
(selftest::temp_dump_context::~temp_dump_context): New dtor.
(selftest::verify_item): New function.
(ASSERT_IS_TEXT): New macro.
(ASSERT_IS_TREE): New macro.
(ASSERT_IS_GIMPLE): New macro.
(selftest::test_capture_of_dump_calls): New test.
(selftest::dumpfile_c_tests): Call it.
* dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block)
(dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc)
(dump_gimple_stmt, dump_dec): Gather these related decls and add a
descriptive comment.
(dump_function, print_combine_total_stats, enable_rtl_dump_file)
(dump_node, dump_bb): Move these unrelated decls.
(class dump_manager): Add leading comment.
* optinfo.cc: New file.
* optinfo.h: New file.

From-SVN: r262891

6 years agoaarch64.md (subv<GPI>4, [...]): New patterns.
Michael Collison [Thu, 19 Jul 2018 20:24:47 +0000 (20:24 +0000)]
aarch64.md (subv<GPI>4, [...]): New patterns.

2018-07-19  Michael Collison  <michael.collison@arm.com>
    Richard Henderson <rth@redhat.com>

* config/aarch64/aarch64.md (subv<GPI>4, usubv<GPI>4): New patterns.
(subti): Handle op1 zero.
(subvti4, usub4ti4): New.
(*sub<GPI>3_compare1_imm): New.
(sub<GPI>3_carryinCV): New.
(*sub<GPI>3_carryinCV_z1_z2, *sub<GPI>3_carryinCV_z1): New.
(*sub<GPI>3_carryinCV_z2, *sub<GPI>3_carryinCV): New.

2018-07-19  Michael Collison  <michael.collison@arm.com>
    Richard Henderson <rth@redhat.com>

* config/aarch64/aarch64.md: (addv<GPI>4, uaddv<GPI>4): New.
(addti3): Create simpler code if low part is already known to be 0.
(addvti4, uaddvti4): New.
(*add<GPI>3_compareC_cconly_imm): New.
(*add<GPI>3_compareC_cconly): New.
(*add<GPI>3_compareC_imm): New.
(*add<GPI>3_compareC): Rename from add<GPI>3_compare1; do not
handle constants within this pattern..
(*add<GPI>3_compareV_cconly_imm): New.
(*add<GPI>3_compareV_cconly): New.
(*add<GPI>3_compareV_imm): New.
(add<GPI>3_compareV): New.
(add<GPI>3_carryinC, add<GPI>3_carryinV): New.
(*add<GPI>3_carryinC_zero, *add<GPI>3_carryinV_zero): New.
(*add<GPI>3_carryinC, *add<GPI>3_carryinV): New.
((*add<GPI>3_compareC_cconly_imm): Replace 'ne' operator
with 'comparison' operator.
(*add<GPI>3_compareV_cconly_imm): Ditto.
(*add<GPI>3_compareV_cconly): Ditto.
(*add<GPI>3_compareV_imm): Ditto.
(add<GPI>3_compareV): Ditto.
(add<mode>3_carryinC): Ditto.
(*add<mode>3_carryinC_zero): Ditto.
(*add<mode>3_carryinC): Ditto.
(add<mode>3_carryinV): Ditto.
(*add<mode>3_carryinV_zero): Ditto.
(*add<mode>3_carryinV): Ditto.

2018-07-19  Michael Collison  <michael.collison@arm.com>
    Richard Henderson <rth@redhat.com>

* config/aarch64/aarch64-modes.def (CC_V): New.
* config/aarch64/aarch64-protos.h
(aarch64_addti_scratch_regs): Declare
(aarch64_subvti_scratch_regs): Declare.
(aarch64_expand_subvti): Declare.
(aarch64_gen_unlikely_cbranch): Declare
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Test
for signed overflow using CC_Vmode.
(aarch64_get_condition_code_1): Handle CC_Vmode.
(aarch64_gen_unlikely_cbranch): New function.
(aarch64_addti_scratch_regs): New function.
(aarch64_subvti_scratch_regs): New function.
(aarch64_expand_subvti): New function.

2018-07-19  Michael Collison  <michael.collison@arm.com>
    Richard Henderson <rth@redhat.com>

* gcc.target/aarch64/builtin_sadd_128.c: New testcase.
* gcc.target/aarch64/builtin_saddl.c: New testcase.
* gcc.target/aarch64/builtin_saddll.c: New testcase.
* gcc.target/aarch64/builtin_uadd_128.c: New testcase.
* gcc.target/aarch64/builtin_uaddl.c: New testcase.
* gcc.target/aarch64/builtin_uaddll.c: New testcase.
* gcc.target/aarch64/builtin_ssub_128.c: New testcase.
* gcc.target/aarch64/builtin_ssubl.c: New testcase.
* gcc.target/aarch64/builtin_ssubll.c: New testcase.
* gcc.target/aarch64/builtin_usub_128.c: New testcase.
* gcc.target/aarch64/builtin_usubl.c: New testcase.
* gcc.target/aarch64/builtin_usubll.c: New testcase.

Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r262890

6 years agoSimplify the base characteristics for some type traits
Jonathan Wakely [Thu, 19 Jul 2018 19:12:37 +0000 (20:12 +0100)]
Simplify the base characteristics for some type traits

* include/std/type_traits (__is_member_object_pointer_helper): Use
__not_<is_function<_Tp>>::type instead of integral_constant.
(__is_member_function_pointer_helper): Likewise for
is_function<_Tp>::type.
(is_compund): Likewise for __not_<is_fundamental<_Tp>>::type.
(__do_is_nt_destructible_impl): Use __bool_constant and reindent.
(is_trivially_constructible): Remove redundant use of
is_constructible.
(__is_trivially_copy_assignable_impl): Remove redundant use of
is_copy_assignable.
(__is_trivially_move_assignable_impl): Remove redundant use of
is_move_assignable.
(is_trivially_destructible): Use __bool_constant.
* testsuite/20_util/is_trivially_assignable/value.cc: Add some more
tests for scalar types.

From-SVN: r262889

6 years agoUse __builtin_memmove for trivially copyable types
Glen Joseph Fernandes [Thu, 19 Jul 2018 18:58:09 +0000 (18:58 +0000)]
Use __builtin_memmove for trivially copyable types

2018-07-19  Glen Joseph Fernandes  <glenjofe@gmail.com>

* include/bits/stl_algobase.h (__copy_move_a): Used
__is_trivially_copyable.
(__copy_move_backward_a): Likewise.
* testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
New test.

From-SVN: r262884

6 years agorevert: [multiple changes]
Paolo Carlini [Thu, 19 Jul 2018 16:58:06 +0000 (16:58 +0000)]
revert: [multiple changes]

2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>

Revert fix for c++/59480 (and testsuite followup)

/testsuite
2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.old-deja/g++.mike/p784.C: Add -fpermissive.

/cp
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* decl.c (check_no_redeclaration_friend_default_args): New.
(duplicate_decls): Use the latter; also check that a friend
declaration specifying default arguments is a definition.

/testsuite
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* g++.dg/other/friend8.C: New.
* g++.dg/other/friend9.C: Likewise.
* g++.dg/other/friend10.C: Likewise.
* g++.dg/other/friend11.C: Likewise.
* g++.dg/other/friend12.C: Likewise.
* g++.dg/parse/defarg4.C: Compile with -fpermissive -w.
* g++.dg/parse/defarg8.C: Likewise.

From-SVN: r262883

6 years ago[PATCH, GCC, AARCH64] Add support for +profile extension
Andre Vieira [Thu, 19 Jul 2018 15:47:15 +0000 (15:47 +0000)]
[PATCH, GCC, AARCH64] Add support for +profile extension

This patch adds support for the Statistical Profiling Extension (SPE) on
AArch64. Even though the compiler will not generate code any differently
given this extension, it will need to pass it on to the assembler in
order to let it correctly assemble inline asm containing accesses to the
extension's system registers.  The same applies when using the
preprocessor on an assembly file as this first must pass through cc1.

I left the hwcaps string for SPE empty as the kernel does not define a
feature string for this extension.  The current effect of this is that
driver will disable profile feature bit in GCC.  This is OK though
because we don't, nor do we ever, enable this feature bit, as codegen is
not affect by the SPE support and more importantly the driver will still
pass the extension down to the assembler regardless.

gcc/ChangeLog
2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/aarch64/aarch64-option-extensions.def: New entry for profile
extension.
* config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New.
* doc/invoke.texi (aarch64-feature-modifiers): New entry for profile
extension.

gcc/testsuite/ChangeLog
2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* gcc.target/aarch64/profile.c: New test.

From-SVN: r262882

6 years ago[AArch64][PATCH 2/2] PR target/83009: Relax strict address checking for store
Andre Vieira [Thu, 19 Jul 2018 14:03:21 +0000 (14:03 +0000)]
[AArch64][PATCH 2/2] PR target/83009: Relax strict address checking for store
pair lanes

gcc/ChangeLog
2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

PR target/83009
* config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
address check not strict.

gcc/testsuite/ChangeLog
2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

PR target/83009
* gcc/target/aarch64/store_v2vec_lanes.c: Add extra tests.

From-SVN: r262881

6 years ago[AArch64][PATCH 1/2] Fix addressing printing of LDP/STP
Andre Vieira [Thu, 19 Jul 2018 13:59:17 +0000 (13:59 +0000)]
[AArch64][PATCH 1/2] Fix addressing printing of LDP/STP

gcc/ChangeLog
2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/aarch64/aarch64-simd.md (aarch64_simd_mov<VQ:mode>): Replace
Umq with Umn.
(store_pair_lanes<mode>): Likewise.
* config/aarch64/aarch64-protos.h (aarch64_addr_query_type): Add new
enum value 'ADDR_QUERY_LDP_STP_N'.
* config/aarch64/aarch64.c (aarch64_addr_query_type): Likewise.
(aarch64_print_address_internal): Add declaration.
(aarch64_print_ldpstp_address): Remove.
(aarch64_classify_address): Adapt mode for 'ADDR_QUERY_LDP_STP_N'.
(aarch64_print_operand): Change printing of 'y'.
* config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Use
new enum value 'ADDR_QUERY_LDP_STP_N', don't hardcode mode and use
'true' rather than '1'.
* gcc/config/aarch64/constraints.md (Uml): Likewise.
(Uml): Rename to Umn.
(Umq): Remove.

From-SVN: r262880

6 years agotree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member a trailing array.
Richard Biener [Thu, 19 Jul 2018 12:19:07 +0000 (12:19 +0000)]
tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member a trailing array.

2018-07-19  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member
a trailing array.
* tree-ssa-sccvn.c: Remove alloc-pool.h use.
(vn_phi_hasher): Derive from nofree_ptr_hash and remove remove method.
(vn_reference_hasher): Likewise.
(struct vn_tables_s): Remove obstack and alloc-pool members.
(vn_tables_obstack, vn_tables_insert_obstack): New global obstacks.
(vn_nary_build_or_lookup_1): Manually build in vn_tables_insert_obstack.
(vn_reference_insert): Allocate from obstack instead of from alloc-pool.
(vn_reference_insert_pieces): Likewise.
(alloc_vn_nary_op_noinit): Adjust.
(vn_nary_op_insert_stmt): Allocate phiargs in-place.
(vn_phi_eq): Adjust.
(shared_lookup_phiargs): Remove.
(vn_phi_lookup): Allocate temporary vn_phi_s on the stack.
(vn_phi_insert): Allocate from obstack instead of from alloc-pool.
(visit_reference_op_call): Likewise.
(copy_nary, copy_phi, copy_reference): Remove.
(process_scc): Rewind the obstack when iterating.  Do not
copy the elements to valid_info but just move them from one
hashtable to the other.
(allocate_vn_table): Adjust.
(free_vn_table): Likewise.
(init_scc_vn): Likewise.
(free_scc_vn): Likewise.

From-SVN: r262879

6 years agoi386: Test __has_attribute (__indirect_return__)
H.J. Lu [Thu, 19 Jul 2018 12:00:59 +0000 (12:00 +0000)]
i386: Test __has_attribute (__indirect_return__)

The new indirect_return attribute is intended to mark swapcontext in
<ucontext.h>.  Test __has_attribute (__indirect_return__) so that it
can be backported to GCC 8.

PR target/86560
* gcc.target/i386/pr86560-4.c: New test.
* gcc.target/i386/pr86560-5.c: Likewise.
---
 gcc/testsuite/gcc.target/i386/pr86560-4.c | 21 +++++++++++++++++++++
 gcc/testsuite/gcc.target/i386/pr86560-5.c | 21 +++++++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr86560-4.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr86560-5.c

diff --git a/gcc/testsuite/gcc.target/i386/pr86560-4.c b/gcc/testsuite/gcc.target/i386/pr86560-4.c
new file mode 100644
index 00000000000..a623e3dcbeb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr86560-4.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcf-protection" } */
+/* { dg-final { scan-assembler-times {\mendbr} 2 } } */
+
+struct ucontext;
+
+extern int (*bar) (struct ucontext *)
+#ifdef __has_attribute
+# if __has_attribute (indirect_return)
+  __attribute__((__indirect_return__))
+# endif
+#endif
+;
+
+extern int res;
+
+void
+foo (struct ucontext *oucp)
+{
+  res = bar (oucp);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr86560-5.c b/gcc/testsuite/gcc.target/i386/pr86560-5.c
new file mode 100644
index 00000000000..33b0f6424c2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr86560-5.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcf-protection" } */
+/* { dg-final { scan-assembler-times {\mendbr} 2 } } */
+
+struct ucontext;
+
+extern int (*bar) (struct ucontext *)
+#ifdef __has_attribute
+# if __has_attribute (__indirect_return__)
+  __attribute__((__indirect_return__))
+# endif
+#endif
+;
+
+extern int res;
+
+void
+foo (struct ucontext *oucp)
+{
+  res = bar (oucp);
+}
--
2.17.1

From-SVN: r262878

6 years agoi386: Change indirect_return to function type attribute
H.J. Lu [Thu, 19 Jul 2018 10:47:23 +0000 (10:47 +0000)]
i386: Change indirect_return to function type attribute

In

struct ucontext;
typedef struct ucontext ucontext_t;

extern int (*bar) (ucontext_t *__restrict __oucp,
                   const ucontext_t *__restrict __ucp)
  __attribute__((__indirect_return__));

extern int res;

void
foo (ucontext_t *oucp, ucontext_t *ucp)
{
  res = bar (oucp, ucp);
}

bar() may return via indirect branch.  This patch changes indirect_return
to type attribute to allow indirect_return attribute on variable or type
of function pointer so that ENDBR can be inserted after call to bar().

gcc/

PR target/86560
* config/i386/i386.c (rest_of_insert_endbranch): Lookup
indirect_return as function type attribute.
(ix86_attribute_table): Change indirect_return to function
type attribute.
* doc/extend.texi: Update indirect_return attribute.

gcc/testsuite/

PR target/86560
* gcc.target/i386/pr86560-1.c: New test.
* gcc.target/i386/pr86560-2.c: Likewise.
* gcc.target/i386/pr86560-3.c: Likewise.

From-SVN: r262877

6 years ago[Fortran] Use MIN/MAX_EXPR or IFN_FMIN/MAX for min/max intrinsics when possible
Kyrylo Tkachov [Thu, 19 Jul 2018 09:49:36 +0000 (09:49 +0000)]
[Fortran] Use MIN/MAX_EXPR or IFN_FMIN/MAX for min/max intrinsics when possible

* trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR
or IFN_FMIN/FMAX sequence to calculate the min/max when possible.

* gfortran.dg/max_fmax_aarch64.f90: New test.
* gfortran.dg/min_fmin_aarch64.f90: Likewise.
* gfortran.dg/minmax_integer.f90: Likewise.

From-SVN: r262876

6 years agop784.C: Add -fpermissive.
Paolo Carlini [Thu, 19 Jul 2018 09:44:11 +0000 (09:44 +0000)]
p784.C: Add -fpermissive.

2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.old-deja/g++.mike/p784.C: Add -fpermissive.

From-SVN: r262875

6 years agowide-int.h (widest2_int): New.
Aldy Hernandez [Thu, 19 Jul 2018 09:12:32 +0000 (09:12 +0000)]
wide-int.h (widest2_int): New.

* wide-int.h (widest2_int): New.
* gimple-fold.c (arith_overflowed_p): Use it.
* tree.h (widest2_int_cst): New.
* tree-vrp.c (wide_int_binop_overflow): Rename from
vrp_int_const_binop.
Rewrite to work on trees.
(extract_range_from_multiplicative_op_1): Abstract code to...
(wide_int_range_min_max): ...here.
(wide_int_range_cross_product): ...and here.
(extract_range_from_binary_expr_1): Abstract overflow code to...
(wide_int_range_cross_product_wrapping): ...here.
* tree-vrp.h (wide_int_range_cross_product): New.
(wide_int_range_cross_product_wrapping): New.

From-SVN: r262874

6 years agosimple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect to ENOSYS.
Eli Zaretskii [Thu, 19 Jul 2018 08:47:34 +0000 (08:47 +0000)]
simple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect to ENOSYS.

2018-07-19  Eli Zaretskii  <eliz@gnu.org>

* simple-object-elf.c (ENOTSUP): If not defined by errno.h, redirect
to ENOSYS.

From-SVN: r262872

6 years agox86-tune-costs.h (skylake_memcpy, [...]): Replace rep_prefix with unrolling for size...
Andrew Senkevich [Thu, 19 Jul 2018 06:49:10 +0000 (06:49 +0000)]
x86-tune-costs.h (skylake_memcpy, [...]): Replace rep_prefix with unrolling for size 512.

* config/i386/x86-tune-costs.h (skylake_memcpy,
skylake_memset): Replace rep_prefix with unrolling for size 512.

Co-Authored-By: Julia Koval <julia.koval@intel.com>
From-SVN: r262871

6 years agoDaily bump.
GCC Administrator [Thu, 19 Jul 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262870

6 years agore PR tree-optimization/86544 (Popcount detection generates different code on C and...
Kugan Vivekanandarajah [Wed, 18 Jul 2018 22:11:24 +0000 (22:11 +0000)]
re PR tree-optimization/86544 (Popcount detection generates different code on C and C++)

gcc/ChangeLog:

2018-07-18  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86544
* tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle comparision with EQ_EXPR
in last stmt.

gcc/testsuite/ChangeLog:

2018-07-18  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86544
* g++.dg/tree-ssa/pr86544.C: New test.

From-SVN: r262864

6 years agoextend.texi (PowerPC AltiVec Built-in Functions): Rename this subsection to "PowerPC...
Kelvin Nilsen [Wed, 18 Jul 2018 21:31:04 +0000 (21:31 +0000)]
extend.texi (PowerPC AltiVec Built-in Functions): Rename this subsection to "PowerPC AltiVec/VSX Built-in Functions".

gcc/ChangeLog:

2018-07-18  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename
this subsection to "PowerPC AltiVec/VSX Built-in Functions".
(PowerPC AltiVec/VSX Built-in Functions): New name for subsection
previously known as "PowerPC AltiVec Built-in Functions".  Move
some material to new subsubsections "PowerPC AltiVec Built-in
Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on
ISA 2.07".
(PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection.
(PowerPC Altivec Built-in Functions on ISA 2.06): Likewise.
(PowerPC Altivec Built-in Functions on ISA 2.07): Likewise.
(PowerPC Altivec Built-in Functions on ISA 3.0): Likewise.

From-SVN: r262863

6 years agore PR c++/86550 (Lambda parsing allows arbitrary types in decl-specifier-seq)
Jakub Jelinek [Wed, 18 Jul 2018 21:01:54 +0000 (23:01 +0200)]
re PR c++/86550 (Lambda parsing allows arbitrary types in decl-specifier-seq)

PR c++/86550
* parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.

* g++.dg/cpp0x/lambda/lambda-86550.C: New test.

From-SVN: r262862

6 years agore PR c/69558 (glib2 warning pragmas stopped working)
Bernd Edlinger [Wed, 18 Jul 2018 19:36:01 +0000 (19:36 +0000)]
re PR c/69558 (glib2 warning pragmas stopped working)

libcpp:
2018-07-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR 69558
        * macro.c (enter_macro_context): Change the location info for builtin
        macros and _Pragma from location of the closing parenthesis to location
        of the macro expansion point.

testsuite:
2018-07-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR 69558
        * c-c++-common/cpp/diagnostic-pragma-2.c: New test.
        * c-c++-common/pr69558.c: Remove xfail.
        * gcc.dg/cpp/builtin-macro-1.c: Adjust test expectations.
        * gcc.dg/pr61817-1.c: Likewise.
        * gcc.dg/pr61817-2.c: Likewise.
        * g++.dg/plugin/pragma_plugin.c: Warn at expansion_point_location.

From-SVN: r262861

6 years agore PR fortran/85599 (warn about short-circuiting of logical expressions for non-pure...
Janus Weil [Wed, 18 Jul 2018 18:31:59 +0000 (20:31 +0200)]
re PR fortran/85599 (warn about short-circuiting of logical expressions for non-pure functions)

2018-07-18  Janus Weil  <janus@gcc.gnu.org>
    Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/85599
* dump-parse-tree.c (show_attr): Add handling of implicit_pure.
* frontend-passes.c (do_warn_function_elimination): Do not warn for
pure functions.
* gfortran.h: Add prototypes for gfc_pure_function and
gfc_implicit_pure_function.
* gfortran.texi: Add chapter on evaluation of logical expressions.
* invoke.texi: Mention that -Wfunction-elimination is implied
by -Wextra.
* lang.opt: Make -Wextra imply -Wfunction-elimination.
* resolve.c (pure_function): Rename to gfc_pure_function.
(gfc_implicit_pure_function): New function.
(check_pure_function): Use it here.
(impure_function_callback): New function.
(resolve_operator): Call it via gfc_expr_walker.

2018-07-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/85599
* gfortran.dg/function_optimize_5.f90: Add option
'-faggressive-function-elimination' and update dg-warning clauses.
* gfortran.dg/short_circuiting.f90: New test.

Co-Authored-By: Thomas Koenig <tkoenig@gcc.gnu.org>
From-SVN: r262860

6 years agoPR c++/86190 - bogus -Wsign-conversion warning
Marek Polacek [Wed, 18 Jul 2018 13:13:11 +0000 (13:13 +0000)]
PR c++/86190 - bogus -Wsign-conversion warning

PR c++/86190 - bogus -Wsign-conversion warning
* typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
sentinel.

* g++.dg/warn/Wsign-conversion-3.C: New test.
* g++.dg/warn/Wsign-conversion-4.C: New test.

From-SVN: r262855

6 years agore PR target/86557 (missed vectorization with std::vector compared to icc 18)
Richard Biener [Wed, 18 Jul 2018 12:57:15 +0000 (12:57 +0000)]
re PR target/86557 (missed vectorization with std::vector compared to icc 18)

2018-07-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86557
* tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle
EXACT_DIV_EXPR.

From-SVN: r262854

6 years ago2018-07-18 Paolo Carlini <paolo.carlini@oracle.com>
Paolo Carlini [Wed, 18 Jul 2018 10:30:42 +0000 (10:30 +0000)]
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* Fix typos in ChangeLog entries.

From-SVN: r262852

6 years agore PR c++/59480 (Missing error diagnostic: friend declaration specifying a default...
Paolo Carlini [Wed, 18 Jul 2018 10:27:12 +0000 (10:27 +0000)]
re PR c++/59480 (Missing error diagnostic: friend declaration specifying a default argument must be a definition)

/cp
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* class.c (note_name_declared_in_class): Prefer permerror + inform
to a pair of permerrors; use DECL_SOURCE_LOCATION.

/testsuite
2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/ext/uow-3.C: Adjust.
* g++.dg/ext/uow-4.C: Likewise.
* g++.dg/lookup/name-clash11.C: Likewise.
* g++.dg/lookup/name-clash7.C: Likewise.
* g++.dg/lookup/redecl1.C: Likewise.
* g++.dg/warn/changes-meaning.C: Likewise.
* g++.old-deja/g++.jason/scoping8.C: Likewise.
* g++.old-deja/g++.law/nest1.C: Likewise.

/cp
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* decl.c (check_no_redeclaration_friend_default_args): New.
(duplicate_decls): Use the latter; also check that a friend
declaration specifying default arguments is a definition.

/testsuite
2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/59480, DR 136
* g++.dg/other/friend8.C: New.
* g++.dg/other/friend9.C: Likewise.
* g++.dg/other/friend10.C: Likewise.
* g++.dg/other/friend11.C: Likewise.
* g++.dg/other/friend12.C: Likewise.
* g++.dg/parse/defarg4.C: Compile with -fpermissive -w.
* g++.dg/parse/defarg8.C: Likewise.

From-SVN: r262851

6 years agoS/390: Add CFI for mcount call sequences
Ilya Leoshkevich [Wed, 18 Jul 2018 06:58:39 +0000 (06:58 +0000)]
S/390: Add CFI for mcount call sequences

2018-07-18  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/s390.c (s390_function_profiler): Generate CFI.

From-SVN: r262850

6 years agore PR debug/86523 (ICE in gen_member_die, at dwarf2out.c:24933 starting from r262560)
Richard Biener [Wed, 18 Jul 2018 06:54:23 +0000 (06:54 +0000)]
re PR debug/86523 (ICE in gen_member_die, at dwarf2out.c:24933 starting from r262560)

2018-07-18  Richard Biener  <rguenther@suse.de>

PR debug/86523
cp/
* decl2.c (c_parse_final_cleanups): Call write_out_vars before
start_static_storage_duration_function sets current_function_decl.

* g++.dg/lto/pr86523-3_0.C: New testcase.

From-SVN: r262849

6 years agoarm.c (get_label_padding): Update for recent changes to label_to_alignment.
Jeff Law [Wed, 18 Jul 2018 04:55:03 +0000 (22:55 -0600)]
arm.c (get_label_padding): Update for recent changes to label_to_alignment.

* config/arm/arm.c (get_label_padding): Update for recent
changes to label_to_alignment.

From-SVN: r262848

6 years agoDaily bump.
GCC Administrator [Wed, 18 Jul 2018 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262846

6 years agore PR tree-optimization/86010 (redundant memset with smaller size not eliminated)
Jeff Law [Tue, 17 Jul 2018 23:54:10 +0000 (17:54 -0600)]
re PR tree-optimization/86010 (redundant memset with smaller size not eliminated)

PR tree-optimization/86010
* tree-ssa-dse.c (compute_trims): Fix typo/thinko.

From-SVN: r262841

6 years agomips.c (vr4130_align_insns): Update for recent changes to label_to_alignment.
Jeff Law [Tue, 17 Jul 2018 20:52:20 +0000 (14:52 -0600)]
mips.c (vr4130_align_insns): Update for recent changes to label_to_alignment.

* config/mips/mips.c (vr4130_align_insns): Update for recent
changes to label_to_alignment.

From-SVN: r262838

6 years agofrv.c (frv_label_align): Update for recent changes to label_to_alignment.
Jeff Law [Tue, 17 Jul 2018 20:30:49 +0000 (14:30 -0600)]
frv.c (frv_label_align): Update for recent changes to label_to_alignment.

       * config/frv/frv.c (frv_label_align): Update for recent changes
        to label_to_alignment.

From-SVN: r262837

6 years agonios2.c (nios2_label_align): Update for recent changes which dropped ALIGN_LABELS_LOG.
Jeff Law [Tue, 17 Jul 2018 20:23:25 +0000 (14:23 -0600)]
nios2.c (nios2_label_align): Update for recent changes which dropped ALIGN_LABELS_LOG.

* config/nios2/nios2.c (nios2_label_align): Update for recent
changes which dropped ALIGN_LABELS_LOG.

From-SVN: r262836

6 years agoFix invalid cc_status after [const_][us]mulsi3_highpart
Andreas Schwab [Tue, 17 Jul 2018 18:42:42 +0000 (18:42 +0000)]
Fix invalid cc_status after [const_][us]mulsi3_highpart

* config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart)
(smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT.

testsuite/:
* gcc.target/m68k/mulsi_highpart.c: New test.

From-SVN: r262835

6 years agocompiler: don't set btype_ too early for alias type
Ian Lance Taylor [Tue, 17 Jul 2018 18:27:22 +0000 (18:27 +0000)]
compiler: don't set btype_ too early for alias type

    CL 123362 introduced a bug in creating alias type's backend
    representation. A type's btype_ should not be set before
    named types are converted if it is a placeholder. For alias
    type, it is set too early. This may result in unresolved
    placeholders. This CL fixes it.

    Reviewed-on: https://go-review.googlesource.com/123975

From-SVN: r262833

6 years agolex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN...
Jakub Jelinek [Tue, 17 Jul 2018 18:10:57 +0000 (20:10 +0200)]
lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN...

* lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN,
CPP_DL_WARNING or CPP_DL_ERROR for note that diagnostics for C++ style
comments is reported only once per file and guard those calls on the
preceding cpp_error returning true.

* gcc.dg/cpp/pr61854-c90.c (foo): Expect a note, rather than error.
* gcc.dg/cpp/pr61854-c94.c (foo): Likewise.
* gcc.dg/cpp/pr61854-4.c (foo): Likewise.
* gcc.dg/cpp/pr61854-8.c: New test.

From-SVN: r262832

6 years ago* gcc.target/powerpc/pr85456.c: Require longdouble128.
David Edelsohn [Tue, 17 Jul 2018 17:35:24 +0000 (17:35 +0000)]
* gcc.target/powerpc/pr85456.c: Require longdouble128.

From-SVN: r262831

6 years agocompiler: connect the concrete type and the placeholder for circular types
Ian Lance Taylor [Tue, 17 Jul 2018 17:21:10 +0000 (17:21 +0000)]
compiler: connect the concrete type and the placeholder for circular types

    Previously, when creating the backend representation of a
    circular type, we resolve the placeholder to a
    circular_pointer_type. The backend doesn't know what the
    concrete type is.

    This CL changes it to resolve the placeholder to the concrete
    type instead, so the backend may have better knowledge of the
    concrete type.

    Reviewed-on: https://go-review.googlesource.com/123738

From-SVN: r262830

6 years agore PR fortran/83184 (Out of memory or ICE with option -fdec)
Fritz Reese [Tue, 17 Jul 2018 16:02:03 +0000 (16:02 +0000)]
re PR fortran/83184 (Out of memory or ICE with option -fdec)

2018-07-17  Fritz Reese  <fritzoreese@gmail.com>

    gcc/testsuite/ChangeLog:

PR fortran/83184
* gfortran.dg/dec_structure_23.f90: Oops, "un-fix" error messages.

From-SVN: r262828

6 years agofold-vec-unpack-char.c: New.
Will Schmidt [Tue, 17 Jul 2018 15:51:12 +0000 (15:51 +0000)]
fold-vec-unpack-char.c: New.

[testsuite]

2018-07-06  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-unpack-char.c: New.
* gcc.target/powerpc/fold-vec-unpack-float.c: New.
* gcc.target/powerpc/fold-vec-unpack-int.c: New.
* gcc.target/powerpc/fold-vec-unpack-pixel.c: New.
* gcc.target/powerpc/fold-vec-unpack-short.c: New.

From-SVN: r262827

6 years agopr57150.c: Require longdouble128.
David Edelsohn [Tue, 17 Jul 2018 15:41:47 +0000 (15:41 +0000)]
pr57150.c: Require longdouble128.

* gcc.target/powerpc/pr57150.c: Require longdouble128.
* gcc.target/powerpc/pr79916.c: Require dfp.

From-SVN: r262826

6 years agoPR c++/86480 - nested variadic lambda and constexpr if.
Jason Merrill [Tue, 17 Jul 2018 15:39:46 +0000 (11:39 -0400)]
PR c++/86480 - nested variadic lambda and constexpr if.

* pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
IF_STMT_EXTRA_ARGS.
* tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
cp_unevaluated_operand.
[ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.

From-SVN: r262825

6 years agoPR libstdc++/86450 use -Wabi=2 and simplify -Werror use
Jonathan Wakely [Tue, 17 Jul 2018 13:18:47 +0000 (14:18 +0100)]
PR libstdc++/86450 use -Wabi=2 and simplify -Werror use

Use -Wabi=2 to fix warnings about -Wabi having no effect on its own.
This requires suppressing two warnings in src/c++11/debug.cc which do
not affect the library ABI.

Previously libstdc++ defaulted to --enable-werror but the -Werror flag
was not actually added unless --enable-maintainer-mode was used. This is
not documented and not the expected behaviour. This removes any special
treatment for maintainer-mode, makes -Werror depend directly on
--enable-werror, and changes the default to --enable-werror=no.

PR libstdc++/86450
* acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Don't define WERROR.
(GLIBCXX_EXPORT_FLAGS): Use -Wabi=2 instead of -Wabi.
* configure: Regenerate.
* configure.ac: Change GLIBCXX_ENABLE_WERROR default to "no".
* doc/Makefile.in: Regenerate.
* fragment.am: Set WERROR_FLAG to -Werror instead of $(WERROR).
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/debug.cc: Use diagnostic pragmas to suppress warnings
from -Wabi=2 that don't affect exported symbols.
* src/c++98/Makefile.in: Regenerate.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

From-SVN: r262824

6 years agoRemove unused explicit instantiation of __bind_simple
Jonathan Wakely [Tue, 17 Jul 2018 13:16:51 +0000 (14:16 +0100)]
Remove unused explicit instantiation of __bind_simple

The explicit instantiation of std::call_once used to require an
instantiation of __bind_simple, but call_once was changed by r241031 to
not use __bind_simple. The instantiation of __bind_simple (and the
definitions it uses) are not needed. They should have been removed
instead of doing the changes in r241111 that kept them compiling.

The use of std::call_once by _Async_state_common::_M_join can be
simplified to use a pointer instead of reference wrapper. The call_once
symbol isn't exported so the change isn't visible outside the library.

* src/c++11/compatibility-thread-c++0x.cc [_GLIBCXX_SHARED]
(_Async_state_common::_M_join): Simplify use of std::call_once and
corresponding explicit instantiation.
(_Maybe_wrap_member_pointer, _Bind_simple, _Bind_simple_helper)
(__bind_simple): Remove definitions and explicit instantiation that
are not required by exported symbols.

From-SVN: r262823

6 years ago[ARC] Don't use deprecated align_labels_log variable.
Claudiu Zissulescu [Tue, 17 Jul 2018 12:27:10 +0000 (14:27 +0200)]
[ARC] Don't use deprecated align_labels_log variable.

2018-07-17  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_label_align): Use alogn_labels instead of
deprecated align_labels_log.

From-SVN: r262820

6 years agore PR debug/86456 (Segfault in switch_to_section at gcc/varasm.c:7353 since r259317)
Richard Biener [Tue, 17 Jul 2018 12:26:21 +0000 (12:26 +0000)]
re PR debug/86456 (Segfault in switch_to_section at  gcc/varasm.c:7353 since r259317)

2018-07-17  Richard Biener  <rguenther@suse.de>

PR lto/86456
* dwarf2out.c (init_sections_and_labels): Always generate
a debug_line_str_section for early LTO debug.
(dwarf2out_finish): Reset debug_line_str_hash output early.
Bump counter for extra dwarf5 .debug_loc labels to not conflict
with fat LTO part.
(dwarf2out_early_finish): Output debug_line_str.

* g++.dg/debug/dwarf2/pr86456.C: New testcase.

From-SVN: r262819

6 years agoS/390: Do not use LA with index register on z196 or newer.
Robin Dapp [Tue, 17 Jul 2018 12:08:06 +0000 (12:08 +0000)]
S/390: Do not use LA with index register on z196 or newer.

gcc/ChangeLog:

2018-07-17  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/s390.c (preferred_la_operand_p): Do not use LA with
index register on z196 or later.

From-SVN: r262818