Backport from trunk
PR fortran/71838
* symbol.c (check_conflict): A dummy procedure in a submodule,
module procedure is not an error.
(gfc_add_flavor): Ditto.
2017-04-01 Paul Thomas <pault@gcc.gnu.org>
Backport from trunk
PR fortran/71838
* gfortran.dg/submodule_26.f08 : New test.
* gfortran.dg/submodule_27.f08 : New test.
Backport from trunk
PR fortran/79676
* module.c (mio_symbol_attribute): Remove reset of the flag
'no_module_procedures'.
(check_for_module_procedures): New function. Move declaration
of 'no_module_procedures' to above it.
(gfc_dump_module): Traverse namespace calling new function.
2017-04-01 Paul Thomas <pault@gcc.gnu.org>
Backport from trunk
PR fortran/79676
* gfortran.dg/submodule_28.f08 : New test.
rsandifo [Fri, 31 Mar 2017 11:51:32 +0000 (11:51 +0000)]
PR80218: Call CDCE fails to update the block profile
tree-call-cdce.c was updating the edge probabilities and counts but
it wasn't updating the corresponding block information. Among other
things, this tricked the register allocator into thinking that the
libm call was relatively hot and that it wasn't worth assigning
call-clobbered registers to values that were live across the call.
With correct frequency information, the RA instead keeps x in the
first argument register and spills it only around the call.
Although the problem has been around for a long time, it became more
acute (and would only trigger for the first function in the testcase)
after r230488. Until that patch, the code was specific to calls that
had no lhs, but that we still had to keep for their effect on errno.
After the patch we also used the code for calls with an lhs, provided
that the hardware could calculate the lhs directly.
meissner [Wed, 29 Mar 2017 23:15:51 +0000 (23:15 +0000)]
[gcc]
2017-03-29 Michael Meissner <meissner@linux.vnet.ibm.com>
Back port from trunk
2017-03-21 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
PR target/80123
* doc/md.texi (Constraints): Document wA constraint.
* config/rs6000/constraints.md (wA): New.
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
(rs6000_init_hard_regno_mode_ok): Init wA constraint.
* config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
* config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
2017-03-16 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/71294
* config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
SPLAT operation on ISA 2.07 64-bit systems that have direct move,
but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
[gcc/testsuite]
2017-03-29 Michael Meissner <meissner@linux.vnet.ibm.com>
Back port from trunk
2017-03-16 Michael Meissner <meissner@linux.vnet.ibm.com>
schwab [Tue, 28 Mar 2017 14:22:29 +0000 (14:22 +0000)]
Backport "Support for Ada on aarch64 with -mabi=ilp32" from trunk
PR ada/80117
* system-linux-aarch64-ilp32.ads: New file.
* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
from LIBGNAT_TARGET_PAIRS.
(LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
(LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
or -mabi=ilp32, resp.
meissner [Mon, 27 Mar 2017 19:35:35 +0000 (19:35 +0000)]
[gcc]
2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
Back port from trunk
2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/78543
* config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
HImode and SImode with zero extend to DImode to one insn.
(bswap<mode>2_extenddi): Likewise.
(bswapsi2_extenddi): Likewise.
(bswaphi2_extendsi): Likewise.
(bswaphi2): Combine bswap HImode and SImode into one insn.
Separate memory insns from swapping register.
(bswapsi2): Likewise.
(bswap<mode>2): Likewise.
(bswaphi2_internal): Delete, no longer used.
(bswapsi2_internal): Likewise.
(bswap<mode>2_load): Split bswap HImode/SImode into separate load,
store, and gpr<-gpr swap insns.
(bswap<mode>2_store): Likewise.
(bswaphi2_reg): Register only splitter, combine with the splitter.
(bswaphi2 splitter): Likewise.
(bswapsi2_reg): Likewise.
(bswapsi2 splitter): Likewise.
(bswapdi2): If we have the LDBRX and STDBRX instructions, split
the insns into load, store, and register/register insns.
(bswapdi2_ldbrx): Likewise.
(bswapdi2_load): Likewise.
(bswapdi2_store): Likewise.
(bswapdi2_reg): Likewise.
[gcc/testsuite]
2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
Back port from trunk
2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/78543
* gcc.target/powerpc/pr78543.c: New test.
pault [Sun, 26 Mar 2017 20:01:07 +0000 (20:01 +0000)]
2017-03-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/79434
* parse.c (check_component, parse_union): Whitespace.
(set_syms_host_assoc): For a derived type, check if the module
in which it was declared is one of the submodule ancestors. If
it is, make the components public. Otherwise, reset attribute
'host_assoc' and set 'use-assoc' so that encapsulation is
preserved.
2017-03-26 Paul Thomas <pault@gcc.gnu.org>
PR fortran/79434
* gfortran.dg/submodule_25.f08 : New test.
uros [Sat, 25 Mar 2017 18:10:37 +0000 (18:10 +0000)]
PR target/80180
* config/i386/i386.c (ix86_expand_builtin)
<IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
flags reg setting and flags reg using instructions.
<IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto. Use non-flags reg
clobbering instructions to zero extend op2.
marxin [Wed, 22 Mar 2017 14:32:24 +0000 (14:32 +0000)]
Backport r245647
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-02-22 Martin Liska <mliska@suse.cz>
PR lto/79587
* data-streamer-in.c (streamer_read_gcov_count): Remove assert.
* data-streamer-out.c (streamer_write_gcov_count_stream):
Likewise.
* value-prof.c (stream_out_histogram_value): Make assert more
precise based on type of counter.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-02-22 Martin Liska <mliska@suse.cz>
PR lto/79587
* gcc.dg/tree-prof/pr79587.c: New test.
marxin [Wed, 22 Mar 2017 14:31:55 +0000 (14:31 +0000)]
Backport r245155
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-02-03 Martin Liska <mliska@suse.cz>
PR lto/66295
* multiple_target.c (create_dispatcher_calls): Redirect edge
from a caller of a dispatcher.
(expand_target_clones): Make the clones local.
(ipa_target_clone): Do both target clones and resolvers.
(ipa_dispatcher_calls): Remove the pass.
(pass_dispatcher_calls::gate): Likewise.
(make_pass_dispatcher_calls): Likewise.
* passes.def (pass_target_clone): Put as very first IPA early
pass.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-02-03 Martin Liska <mliska@suse.cz>
marxin [Wed, 22 Mar 2017 10:49:24 +0000 (10:49 +0000)]
Backport r246321
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-21 Martin Liska <mliska@suse.cz>
PR gcov-profile/80081
* Makefile.in: Add gcov-dump and fix installation of gcov-tool.
* doc/gcc.texi: Include gcov-dump stuff.
* doc/gcov-dump.texi: New file.
marxin [Wed, 22 Mar 2017 10:47:52 +0000 (10:47 +0000)]
Backport r246276
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-20 Martin Liska <mliska@suse.cz>
PR middle-end/79753
* tree-chkp.c (chkp_build_returned_bound): Do not build
returned bounds for a LHS that's not a BOUNDED_P type.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-20 Martin Liska <mliska@suse.cz>
PR middle-end/79753
* gcc.target/i386/mpx/pr79753.c: New test.
marxin [Wed, 22 Mar 2017 10:46:27 +0000 (10:46 +0000)]
Backport r246098
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-13 Martin Liska <mliska@suse.cz>
PR middle-end/78339
* ipa-pure-const.c (warn_function_noreturn): If the declarations
is a CHKP clone, use original declaration.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-13 Martin Liska <mliska@suse.cz>
PR middle-end/78339
* gcc.target/i386/mpx/pr78339.c: New test.
marxin [Wed, 22 Mar 2017 10:44:58 +0000 (10:44 +0000)]
Backport r245998
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-09 Martin Liska <mliska@suse.cz>
PR tree-optimization/79631
* tree-chkp-opt.c (chkp_is_constant_addr): Call
tree_int_cst_sign_bit just for INTEGER constants.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-09 Martin Liska <mliska@suse.cz>
PR tree-optimization/79631
* gcc.target/i386/mpx/pr79631.c: New test.
marxin [Wed, 22 Mar 2017 10:43:31 +0000 (10:43 +0000)]
Backport r245993
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-09 Martin Liska <mliska@suse.cz>
PR ipa/79761
* tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
(chkp_find_bounds_1): Remove gcc_unreachable.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-09 Martin Liska <mliska@suse.cz>
marxin [Wed, 22 Mar 2017 10:42:33 +0000 (10:42 +0000)]
Backport r245869
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-03 Martin Liska <mliska@suse.cz>
PR tree-optimization/79803
* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
assert.
(pass_loop_prefetch::execute): Disabled optimization if an
assumption about L1 cache size is not met.
2017-03-22 Martin Liska <mliska@suse.cz>
Backport from mainline
2017-03-03 Martin Liska <mliska@suse.cz>
PR tree-optimization/79803
* gcc.dg/tree-ssa/pr79803.c: New test.
redi [Fri, 17 Mar 2017 19:28:29 +0000 (19:28 +0000)]
Backport <codecvt> fixes from trunk
Fix alignment bugs in std::codecvt_utf16
* src/c++11/codecvt.cc (range): Add non-type template parameter and
define oerloaded operators for reading and writing code units.
(range<Elem, false>): Define partial specialization for accessing
wide characters in potentially unaligned byte ranges.
(ucs2_span(const char16_t*, const char16_t*, ...))
(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
to range<const char16_t, false> in order to avoid unaligned reads.
(__codecvt_utf16_base<char16_t>::do_out)
(__codecvt_utf16_base<char32_t>::do_out)
(__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
unaligned data to avoid unaligned writes.
(__codecvt_utf16_base<char16_t>::do_in)
(__codecvt_utf16_base<char32_t>::do_in)
(__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
error if there are unprocessable trailing bytes.
(__codecvt_utf16_base<char16_t>::do_length)
(__codecvt_utf16_base<char32_t>::do_length)
(__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
range<const char16_t, false> to span functions.
* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
PR libstdc++/80041 fix codecvt_utf16<wchar_t> to use UTF-16 not UTF-8
PR libstdc++/80041
* src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
(__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
char16_t to work with UTF-16 instead of UTF-8.
* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
Fix encoding() and max_length() values for codecvt facets
* src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
(codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
(__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
(__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
(__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
(__codecvt_utf8_utf16_base<char32_t>)
(__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
do_max_length() return values.
* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
PR libstdc++/79980
* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
error path.
* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
for manipulating codecvt_mode values.
(read_utf16_bom): Compare input to BOM constants instead of integral
constants that depend on endianness. Take mode parameter by
reference and adjust it, to distinguish between no BOM present and
UTF-16BE BOM present.
(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
(surrogates): New enumeration type.
(utf16_in, utf16_out): Add surrogates parameter to choose between
UTF-16 and UCS2 behaviour.
(utf16_span, ucs2_span): Use std::min not std::max.
(ucs2_out): Use std::min not std::max. Disallow surrogate pairs.
(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
PR libstdc++/79511 fix endianness of UTF-16 data
PR libstdc++/79511
* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
as a surrogate pair.
(__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
for internal representation.
(__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
mpolacek [Tue, 14 Mar 2017 16:03:10 +0000 (16:03 +0000)]
PR c++/79264
* lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
* semantics.c (finish_member_declaration): Assert class is being
defined.
* g++.dg/cpp1y/pr61636-1.C: Augment.
PR c++/61636
* cp-tree.h (maybe_generic_this_capture): Declare.
* lambda.c (resolvable_dummy_lambda): New, broken out of ...
(maybe_resolve_dummy): ... here. Call it.
(maybe_generic_this_capture): New.
* parser.c (cp_parser_postfix_expression): Speculatively capture
this in generic lambda in unresolved member function call.
* pt.c (tsubst_copy_and_build): Force hard error from failed
member function lookup in generic lambda.
rguenth [Tue, 14 Mar 2017 12:57:08 +0000 (12:57 +0000)]
2017-03-14 Richard Biener <rguenther@suse.de>
Backport from mainline
2016-05-02 Jakub Jelinek <jakub@redhat.com>
PR middle-end/80004
PR target/49244
* gimple.c (gimple_builtin_call_types_compatible_p): Allow
char/short arguments promoted to int because of promote_prototypes.
2017-03-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/79977
* graphite-scop-detection.c (scop_detection::merge_sese):
Handle the case of extra exits to blocks dominating the entry.
* gcc.dg/graphite/pr79977.c: New testcase.
2017-03-09 Richard Biener <rguenther@suse.de>
PR middle-end/79971
* gimple-expr.c (useless_type_conversion_p): Preserve
TYPE_SATURATING for fixed-point types.
PR c/79756
* c-common.c (c_common_mark_addressable_vec): Look through
C_MAYBE_CONST_EXPR.
* gcc.dg/vector-1.c: New testcase.
2017-02-22 Richard Biener <rguenther@suse.de>
PR tree-optimization/79666
* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
to not symbolically negate if that may introduce undefined
overflow.
* gcc.dg/torture/pr79666.c: New testcase.
2017-02-17 Richard Biener <rguenther@suse.de>
PR middle-end/79576
* params.def (max-ssa-name-query-depth): Limit to 10.
ville [Mon, 13 Mar 2017 19:43:27 +0000 (19:43 +0000)]
PR libstdc++/80034
* include/bits/list.tcc (merge(list&&)): Use const for the size_t
in the function and in the catch-block, qualify uses of std::distance.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/80034.cc: New.
rsandifo [Fri, 10 Mar 2017 12:24:45 +0000 (12:24 +0000)]
[libstdc++-v3] Fix detection of obsolete isnan
libstdc++-v3 configure checks whether old glibc inline definitions
of isnan would conflict with the libstdc++-v3 definitions and
works around them if so. But if g++ 6.x build A is used to build
another g++ 6.x B, the configure step for B will pick up the math.h
installed alongside A instead of the glibc version. configure will
then assume that the workaround isn't necessary, leaving B with a
broken cmath.
isinf already worked around this. This patch extends the same fix
to isnan. (Thanks to George for the fix.)
libstdc++-v3/
2017-03-10 George Lander <george.lander@arm.com>
* acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
_GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
* configure: Regenerate.