* gimple-ssa-sprintf.c (format_string): Do not hardcode size of
target's wchar_t.
* tree.c (get_typenode_from_name): Moved from fortran/trans-types.c.
* tree.h (get_typenode_from_name): Prototype.
* trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.
From-SVN: r264833
* gimple-ssa-sprintf.c (struct fmtresult): Add new member and
initialize it.
(get_string_length): Detect unterminated arrays.
(format_string): Same.
(format_directive): Warn about unterminated arrays.
(handle_gimple_call): Mark statements with no_warning as needed.
* gcc.dg/warn-sprintf-no-nul.c: New test.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264822
* gimple-fold.c (get_range_strlen): Only set *nonstr when
an unterminated string is discovered. Bubble up range
even for unterminated strings.
(gimple_fold_builtin_strlen): Do not fold if get_range_strlen
indicates the string was not terminated via NONSTR.
From-SVN: r264816
The [[no_unique_address]] attribute on a non-static data member
enables the equivalent of the empty base optimization.
gcc/cp/
* tree.c (handle_no_unique_addr_attribute): New.
(cxx_attribute_table): Add [[no_unique_address]].
* class.c (field_poverlapping_p): New.
(layout_class_type): Check it. Adjust DECL_SIZE of potentially
overlapping fields.
(layout_empty_base_or_field): Rename from layout_empty_base, handle
FIELD_DECL as well.
(build_base_field, record_subobject_offsets): Adjust.
c-family/
* c-lex.c (c_common_has_attribute): Add no_unique_address.
From-SVN: r264813
The global locale::_Impl that represents the "C" locale is never
destroyed, so there is no need to keep track of reference count updates
for that object. This greatly reduce contention between threads that
refer to the classic locale. Since the global std::locale initially uses
the classic locale, this benefits the common case for any code using the
global locale, such as construction/destruction of iostream objects.
All these updates are done inside libstdc++.so so there's no need to
worry about users' objects having inlined old versions of the code which
still update the reference count for the classic locale.
PR libstdc++/59439
* src/c++98/locale.cc (locale::locale(const locale&)): Bypass
reference count updates for the classic locale.
(locale::~locale()): Likewise.
(locale::operator=(const locale&)): Likewise.
* src/c++98/locale_init.cc (locale::locale()): Likewise.
(locale::global(const locale&)): Likewise.
From-SVN: r264811
2018-10-03 Martin Liska <mliska@suse.cz>
PR gcov-profile/86109
* coverage.c (coverage_begin_function): Do not
mark lambdas as artificial.
* tree-core.h (struct GTY): Remove tm_clone_flag
and introduce new lambda_function.
* tree.h (DECL_LAMBDA_FUNCTION): New macro.
2018-10-03 Martin Liska <mliska@suse.cz>
PR gcov-profile/86109
* parser.c (cp_parser_lambda_declarator_opt):
Set DECL_LAMBDA_FUNCTION for lambdas.
2018-10-03 Martin Liska <mliska@suse.cz>
PR gcov-profile/86109
* g++.dg/gcov/pr86109.C: New test.
From-SVN: r264806
2018-10-02 Aaron Sawdey <acsawdey@linux.ibm.com>
PR target/87474
* config/rs6000/rs6000-string.c (expand_strn_compare): Check that both
P8_VECTOR and VSX are enabled.
From-SVN: r264799
This adds the CPU model number of the IBM z14 Model ZR1 machine to
-march=native. The patch doesn't actually change anything since we
anyway default to z14 for unknown CPU model numbers. So this is just
for the sake of completeness.
2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/driver-native.c (s390_host_detect_local_cpu): Add
0x3907 as CPU model number.
From-SVN: r264797
This is a mechanical change not impacting code generation. With that
patch I try to hide the artificial CPU name arch12 which we had to use
before the announcement of the IBM z14 machine. arch12 of course
stays a valid option to -march and -mtune. So this is just about
making the code somewhat easier to read.
gcc/ChangeLog:
2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com>
* common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14.
* config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to
PF_Z14. Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14,
TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to
TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P.
* config/s390/s390.md: Likewise. Rename also the cpu attribute
value from arch12 to z14.
From-SVN: r264796
This reportedly happens on CentOS 5.11. The real code will work fine;
this test is assuming that the unexported slice function will handle
the splice, but if pipe2 does not work then it doesn't. The relevant
code in internal/poll/splice_linux.go says "Falling back to pipe is
possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when
the connection is closed."
Reviewed-on: https://go-review.googlesource.com/138838
From-SVN: r264793
Since a while we use a rldimi instead of rldicl/rldicr/or to combine
two words to one.
PR target/87081
* gcc.target/powerpc/vec-init-6.c: Fix expected asm.
From-SVN: r264789
* builtins.c (unterminated_array): Add new arguments.
If argument is not terminated, bubble up size and exact
state to callers.
(expand_builtin_strnlen): Detect, avoid expanding
and diagnose unterminated arrays.
(c_strlen): Fill in offset of start of unterminated strings.
* builtins.h (unterminated_array): Update prototype.
* gcc.dg/warn-strnlen-no-nul.c: New.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264787
Calling std::get will check some static assertions and also do a runtime
check for a valid index before calling __detail::__variant::__get. The
std::visit function already handles the case where any variant has an
invalid index, so __get can be used directly in __visit_invoke.
* include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
directly instead of get, as caller ensures correct index is used.
(holds_alternative, get, get_if): Remove redundant inline specifiers.
(_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.
From-SVN: r264786
2018-10-02 Richard Biener <rguenther@suse.de>
* config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use
of haddv4df, first reduce to SSE width and exploit the fact
that we only need element zero with the reduction result.
(reduc_plus_scal_v2df): Likewise.
From-SVN: r264785
<https://gcc.gnu.org/ml/libstdc++/2016-08/msg00006.html> arranged for
libstdc++ tests to use -fno-show-column by default, but only for
build-tree testing. This patch adds it to the options used for
installed testing as well.
Tested with installed testing for a cross to x86_64-linux-gnu, where
it fixes various test failures.
* testsuite/lib/libstdc++.exp (libstdc++_init): Use
-fno-show-column in default cxxflags.
From-SVN: r264784
__NO_STRING_INLINES was removed from uClibc around 2004 so has no
effect.
libstdc++-v3/ChangeLog:
2018-10-01 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
* config/os/uclibc/os_defines.h (__NO_STRING_INLINES): Delete.
From-SVN: r264783
2018-10-02 Richard Biener <rguenther@suse.de>
c/
* c-decl.c (warn_if_shadowing): Do not test DECL_FROM_INLINE.
cp/
* name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.
From-SVN: r264779
2018-10-02 Richard Biener <rguenther@suse.de>
* tree-inline.c (expand_call_inline): Use the location of
the callee declaration for the inline-entry marker.
* final.c (notice_source_line): Remove special-casing of
NOTE_INSN_INLINE_ENTRY.
From-SVN: r264778
When asking for a placeholder type of an alias type, build a
placeholder for the underlying type, instead of treating the
alias as a named type and calling get_backend. The latter may
fail as we may not be ready to build a complete backend type. We
have already used a unified backend type for alias type and its
underlying type. Do the same for placeholders as well.
Reviewed-on: https://go-review.googlesource.com/138635
From-SVN: r264773
This is enough to let libgo build when configured using
--with-multilib-list=m64,m32,mx32. I don't have an x32-enabled kernel
so I haven't tested whether it executes correctly.
For https://gcc.gnu.org/PR87470
Reviewed-on: https://go-review.googlesource.com/138817
From-SVN: r264772
Rewrite the arm64 AES hashing code from gc assembler to C code using
intrinsics. The resulting code generates the same hash code for the
same input as the gc code--that doesn't matter as such, but testing it
ensures that the C code does something useful.
Reviewed-on: https://go-review.googlesource.com/138535
From-SVN: r264771