Richard Biener [Thu, 21 Feb 2019 08:03:40 +0000 (08:03 +0000)]
re PR c++/89392 (ICE in bitmap_bit_p, at bitmap.c:978)
2019-02-21 Richard Biener <rguenther@suse.de>
PR middle-end/89392
cp/
* vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
make symtab process new functions here.
From-SVN: r269065
Jason Merrill [Thu, 21 Feb 2019 02:24:40 +0000 (21:24 -0500)]
PR c++/87921 - wrong error with inline static data member.
c_parse_final_cleanups checks DECL_IN_AGGR_P to avoid trying to emit a
static data member that has not been defined. The inline variable patch
changed that to exempt inline variables. But in this case we haven't
instantiated the variable yet, so we really don't have a definition. This
patch changes inline variable handling such that DECL_IN_AGGR_P is not set
for a defined inline variable, so we can remove all the checks of
DECL_INLINE_VAR_P after DECL_IN_AGGR_P.
With that change we were failing on a static data member that had been
instantiated due to a use before we got around to processing it in
instantiate_class_template; we should detect that and avoid all the
finish_static_data_member_decl processing, which assumes that it is the
first time we're seeing the variable.
* decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
for a non-template inline variable. Do nothing for an
already-instantiated variable.
(c_parse_final_cleanups): Check DECL_IN_AGGR_P without
DECL_INLINE_VAR_P.
* decl.c (check_initializer): Likewise.
(make_rtl_for_nonlocal_decl): Likewise.
* pt.c (instantiate_decl): Likewise.
* typeck2.c (store_init_value): Likewise.
From-SVN: r269064
Ian Lance Taylor [Thu, 21 Feb 2019 01:06:01 +0000 (01:06 +0000)]
re PR go/89407 (go bootstrap failure on s390x starting with r268941)
PR go/89407
internal/cpu: use #ifdef __s390x__ in C code
Patch by Jakub Jelinek.
Fixes https://gcc.gnu.org/PR89407
Reviewed-on: https://go-review.googlesource.com/c/163297
From-SVN: r269063
GCC Administrator [Thu, 21 Feb 2019 00:16:45 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r269062
Jakub Jelinek [Thu, 21 Feb 2019 00:09:47 +0000 (01:09 +0100)]
re PR c++/89403 (ICE in maybe_clone_body, at cp/optimize.c:693)
PR c++/89403
* decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
for flag_syntax_only from here...
* semantics.c (expand_or_defer_fn_1): ... here.
* g++.dg/cpp0x/pr89403.C: New test.
From-SVN: r269059
Jakub Jelinek [Thu, 21 Feb 2019 00:08:59 +0000 (01:08 +0100)]
re PR c++/89405 (ICE in import_export_decl, at cp/decl2.c:2959)
PR c++/89405
* decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
DECL_COMMON, set DECL_INTERFACE_KNOWN.
* g++.dg/cpp1z/inline-var5.C: New test.
From-SVN: r269058
Jakub Jelinek [Wed, 20 Feb 2019 23:02:29 +0000 (00:02 +0100)]
re PR middle-end/89412 (gcc ICE in simplify_subreg, at simplify-rtx.c:6273 on i686-linux-gnu)
PR middle-end/89412
* expr.c (expand_assignment): If result is a MEM, use change_address
instead of simplify_gen_subreg.
* gcc.c-torture/compile/pr89412.c: New test.
From-SVN: r269057
Jakub Jelinek [Wed, 20 Feb 2019 23:01:41 +0000 (00:01 +0100)]
re PR middle-end/89091 (ICE: Segmentation fault (in tree_class_check))
PR middle-end/89091
* fold-const.c (decode_field_reference): Return NULL_TREE if
lang_hooks.types.type_for_size returns NULL. Check it before
overwriting *exp_. Use return NULL_TREE instead of return 0.
* gcc.dg/torture/pr89091.c: New test.
Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
From-SVN: r269056
Jakub Jelinek [Wed, 20 Feb 2019 22:41:26 +0000 (23:41 +0100)]
re PR tree-optimization/88074 (g++ hangs on math expression)
PR middle-end/88074
PR middle-end/89415
* toplev.c (do_compile): Double the emin/emax exponents to workaround
buggy mpc_norm.
* gcc.dg/pr88074-2.c: New test.
From-SVN: r269055
Uros Bizjak [Wed, 20 Feb 2019 21:58:45 +0000 (22:58 +0100)]
re PR target/89397 (ICE in build_call_expr_loc_array at gcc/tree.c:11563 since r229082)
PR target/89397
* config/i386/i386.c (ix86_atomic_assign_expand_fenv): Check
TARGET_SSE in addition to TARGET_SSE_MATH.
(ix86_excess_precision): Ditto.
(ix86_float_exceptions_rounding_supported_p): Ditto.
(use_rsqrt_p): Ditto.
* config/i386/sse.md (rsqrt<mode>2): Ditto.
From-SVN: r269054
Uros Bizjak [Wed, 20 Feb 2019 21:37:21 +0000 (22:37 +0100)]
linux-unwind.h (alpha_fallback_frame_state): Cast 'mcontext_t *' &rt_->uc.uc_mcontext to 'struct sigcontext *'.
* config/alpha/linux-unwind.h (alpha_fallback_frame_state):
Cast 'mcontext_t *' &rt_->uc.uc_mcontext to 'struct sigcontext *'.
From-SVN: r269053
Jakub Jelinek [Wed, 20 Feb 2019 21:16:27 +0000 (22:16 +0100)]
re PR c++/89336 (internal compiler error when compiling a constexpr function)
PR c++/89336
* constexpr.c (cxx_eval_store_expression): Diagnose changing of active
union member for -std=c++17 and earlier.
* g++.dg/cpp1y/constexpr-89336-3.C: New test.
From-SVN: r269052
David Malcolm [Wed, 20 Feb 2019 20:07:20 +0000 (20:07 +0000)]
Fix ICE with #line directive (PR c/89410)
PR c/89410 reports various issues with #line directives with very
large numbers; one of them is an ICE inside diagnostic-show-locus.c
when emitting a diagnostic at line 0xffffffff.
The issue is that the arithmetic in layout::calculate_line_spans to
determine if two line spans are sufficiently close to consolidate
was using the unsigned 32-bit linenum_type, which was overflowing
when comparing the line for the expanded location with those of
the location range (all on line 0xffffffff), leading to it
erroneously adding two spans for the same line, leading to an
assertion failure.
This patch fixes the ICE by generalizing the use of long long in
line-map.h's comparison function for linenum_type into a new
linenum_arith_t typedef, and using it here.
Doing so uncovered a second problem: the loop to print the lines
within the line_span for this case is infinite: looping from
0xfffffff upwards, overflowing to 0, and then never becoming
greater than 0xfffffff. The patch fixes this by using linenum_arith_t
there also.
gcc/ChangeLog:
PR c/89410
* diagnostic-show-locus.c (layout::calculate_line_spans): Use
linenum_arith_t when determining if two adjacent line spans are
close enough to merge.
(diagnostic_show_locus): Use linenum_arith_t when iterating over
lines within each line_span.
gcc/testsuite/ChangeLog:
PR c/89410
* gcc.dg/pr89410-1.c: New test.
* gcc.dg/pr89410-2.c: New test.
libcpp/ChangeLog:
PR c/89410
* include/line-map.h (linenum_arith_t): New typedef.
(compare): Use it.
From-SVN: r269050
Ian Lance Taylor [Wed, 20 Feb 2019 19:14:12 +0000 (19:14 +0000)]
compiler: fix a typo in comments
Reviewed-on: https://go-review.googlesource.com/c/163097
From-SVN: r269049
Jason Merrill [Wed, 20 Feb 2019 18:59:18 +0000 (13:59 -0500)]
PR c++/87513 - 'sorry' mangling PMF template-id.
Here build_offset_ref calls build_qualified_name to make a SCOPE_REF because
the dependent template arguments make type_dependent_expression_p (member)
true. We could probably work hard to prevent this, but it doesn't seem
necessary, and it's easy to fix write_expression to handle the result.
* mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
From-SVN: r269048
Jason Merrill [Wed, 20 Feb 2019 18:58:46 +0000 (13:58 -0500)]
* g++.old-deja/g++.robertl/eb92.C: Handle warning as well.
From-SVN: r269047
Jason Merrill [Wed, 20 Feb 2019 18:54:45 +0000 (13:54 -0500)]
PR c++/88380 - wrong-code with flexible array and NSDMI.
Here 'skipped' was set to -1 to force an explicit initializer for 'uninit'
before the initializer for 'initialized', and so we also tried to emit an
explicit initializer for the flexible array, for which build_zero_init
returns error_mark_node. We should ignore flexarrays even when
skipped < 0.
* typeck2.c (process_init_constructor_record): Skip flexarrays.
From-SVN: r269046
Will Wray [Wed, 20 Feb 2019 18:50:32 +0000 (13:50 -0500)]
PR c++/88572 - wrong handling of braces on scalar init.
* decl.c (reshape_init_r): Allow braces around scalar initializer
within aggregate init. Reject double braced-init of scalar
variable.
From-SVN: r269045
Pat Haugen [Wed, 20 Feb 2019 17:50:28 +0000 (17:50 +0000)]
target-supports.exp (check_effective_target_vect_usad_char): Add PowerPC support.
* lib/target-supports.exp (check_effective_target_vect_usad_char):
Add PowerPC support.
* gcc.dg/vect/slp-reduc-sad.c: Update scan string.
* gcc.dg/vect/vect-reduc-sad.c: Likewise.
From-SVN: r269043
H.J. Lu [Wed, 20 Feb 2019 16:20:50 +0000 (16:20 +0000)]
libsanitizer: Restore internal_readlink for x32
Cherry-pick compiler-rt revision 354451:
r316591 has
@@ -389,13 +383,11 @@ uptr internal_dup2(int oldfd, int newfd) {
}
uptr internal_readlink(const char *path, char *buf, uptr bufsize) {
-#if SANITIZER_NETBSD
- return internal_syscall_ptr(SYSCALL(readlink), path, buf, bufsize);
-#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
+#if SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
return internal_syscall(SYSCALL(readlinkat), AT_FDCWD,
(uptr)path, (uptr)buf, bufsize);
#else
- return internal_syscall(SYSCALL(readlink), (uptr)path, (uptr)buf, bufsize);
+ return internal_syscall_ptr(SYSCALL(readlink), path, buf, bufsize);
#endif
}
which dropped the (uptr) cast and broke x32. This patch puts back the
(uptr) cast to restore x32 and fixes:
https://bugs.llvm.org/show_bug.cgi?id=40783
Differential Revision: https://reviews.llvm.org/D58413
PR sanitizer/89409
* sanitizer_common/sanitizer_linux.cc (internal_readlink):
Cherry-pick compiler-rt r354451.
From-SVN: r269042
Caroline Tice [Wed, 20 Feb 2019 16:07:19 +0000 (08:07 -0800)]
Fix testsuite
2019-02-19 Caroline Tice <cmtice@google.com>
Fix testsuite
* testsuite/libvtv.cc/const_vtable.cc (main): Fix function signature.
From-SVN: r269041
Uros Bizjak [Wed, 20 Feb 2019 15:23:47 +0000 (16:23 +0100)]
revert: re PR target/89397 (ICE in build_call_expr_loc_array at gcc/tree.c:11563 since r229082)
Revert:
PR target/89397
* config/i386/i386.c (ix86_option_override_internal): Set
opts->x_ix86_fpmath to FPMATH_387 when SSE is disabled.
gcc/testsuite/
PR target/89397
* gcc.target/i386/pr89397.c: New test.
From-SVN: r269040
Andre Vieira [Wed, 20 Feb 2019 14:11:43 +0000 (14:11 +0000)]
[GCC] PR target/86487: fix the way 'uses_hard_regs_p' handles paradoxical
subregs
gcc/ChangeLog:
2019-02-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR target/86487
* lra-constraints.c(uses_hard_regs_p): Fix handling of
paradoxical SUBREGS.
gcc/testsuite/ChangeLog:
2019-02-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR target/86487
* gcc.target/arm/pr86487.c: New.
From-SVN: r269039
Martin Liska [Wed, 20 Feb 2019 11:12:10 +0000 (12:12 +0100)]
Change singular to plural in gfortran.texi.
2019-02-20 Martin Liska <mliska@suse.cz>
* gfortran.texi: Change singular to plural.
From-SVN: r269038
Paolo Carlini [Wed, 20 Feb 2019 10:47:02 +0000 (10:47 +0000)]
re PR c++/84536 (ICE with non-type template parameter)
/cp
2019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84536
* pt.c (tsubst_init): Diagnose an initializer expanding to an
empty list of expressions; tweak wrt dependent types.
(regenerate_decl_from_template): For VAR_DECLs call tsubst_init
instead of tsubst_expr.
/testsuite
2019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84536
* g++.dg/cpp1y/var-templ60.C: New.
From-SVN: r269037
Thomas Schwinge [Wed, 20 Feb 2019 10:09:53 +0000 (10:09 +0000)]
Correction of ChangeLog entry, Thomas provided the code for this change.
2019-02-19 Thomas Schwinge <thomas@codesourcery.com>
PR c/87924
* openmp.c (gfc_match_omp_clauses): Add representation of wait clause
without argument as 'wait (GOMP_ASYNC_NOVAL)'.
From-SVN: r269036
Martin Liska [Wed, 20 Feb 2019 09:23:12 +0000 (10:23 +0100)]
Document Fortran header directive.
2019-02-20 Martin Liska <mliska@suse.cz>
* gfortran.texi: Document Fortran header directive.
From-SVN: r269035
Jakub Jelinek [Wed, 20 Feb 2019 07:57:41 +0000 (08:57 +0100)]
re PR libstdc++/89402 (warning: ‘void _ZNKSt4hashIeEclEe()’ specifies less restrictive attribute than its target)
PR libstdc++/89402
* src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
_GLIBCXX_PURE to the alias declaration.
From-SVN: r269034
Li Jia He [Wed, 20 Feb 2019 02:35:39 +0000 (02:35 +0000)]
[rs6000] fix PR 88100, range check for vec_splat_{su}{8,16,32}
GCC revision 259524 implemented range check for the vec_splat_{su}{8,16,32}
builtins. However, as a consequence of the implementation, the range check
is not done correctly for the expected vspltis[bhw] instructions. The result
is that we may not get a valid error message if the valid range of the data
is exceeded.
Although the input of the function prototype of vec_splat_{su}{8,16,32} is
const int, the actual data usage range is limited to the data range of 5 bits
signed. We should limit the int_cst.val[0] data to the 5 bit signed data range
without any modification in the input arg0 parameter. However, the sext_hwi
function intercepts the data of TREE_INT_CST_LOW (arg0) as size bits in the
sext_hwi (TREE_INT_CST_LOW (arg0), size) statement. This will cause some of
the excess data to fall within the range of 5 bits signed, so that the correct
diagnostic information cannot be generated, we need to remove the sext_hwi to
ensure that the input data has not been modified.
This patch fix range check for the vec_splat_s[8,16,32] builtins. The argument
must be a 5-bit const int as specified for the vspltis[bhw] instructions.
for gcc/ChangeLog
PR target/88100
* gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin)
<case ALTIVEC_BUILTIN_VSPLTISB, ALTIVEC_BUILTIN_VSPLTISH,
ALTIVEC_BUILTIN_VSPLTISW>: Don't convert the operand before
range checking it.
for gcc/testsuite/ChangeLog
PR target/88100
* gcc/testsuite/gcc.target/powerpc/pr88100.c: New testcase.
From-SVN: r269033
Jason Merrill [Wed, 20 Feb 2019 02:00:29 +0000 (21:00 -0500)]
PR c++/88368 - wrong 'use of deleted function'
Since my patch for 81359 allowed us to signal failure on return from
maybe_instantiate_noexcept, we no longer need to turn an error into
noexcept(false). We also need to handle NSDMI instantiation errors under
synthesized_method_walk. This change caused some instantiation context
notes to be lost in the testsuite, so I added push_tinst_level to
get_defaulted_eh_spec to restore that context.
* method.c (walk_field_subobs): Remember errors from get_nsdmi.
(get_defaulted_eh_spec): Call push_tinst_level.
* pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
* typeck2.c (merge_exception_specifiers): Handle error_mark_node.
From-SVN: r269032
GCC Administrator [Wed, 20 Feb 2019 00:16:45 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r269031
Jonathan Wakely [Tue, 19 Feb 2019 19:30:59 +0000 (19:30 +0000)]
* config/gcn/gcn.c (print_operand): Fix typo.
From-SVN: r269028
Ian Lance Taylor [Tue, 19 Feb 2019 18:44:24 +0000 (18:44 +0000)]
compiler: add debugger-callable AST dump functins
Introduce a set debug_go_* global functions that can be used to emit
AST dumps for Go statements and expressions from within GDB (for use
by people developing gccgo).
Reviewed-on: https://go-review.googlesource.com/c/162903
From-SVN: r269027
Wilco Dijkstra [Tue, 19 Feb 2019 18:43:43 +0000 (18:43 +0000)]
Fix pr88850 test
Fix pr88850.c testcase which was failing in hardfp environments.
Committed as obvious.
gcc/testsuite/
* gcc.target/arm/pr88850.c: Block -mfloat-abi override.
From-SVN: r269026
Bernd Edlinger [Tue, 19 Feb 2019 18:21:26 +0000 (18:21 +0000)]
Makefile.am: Avoid the -D option which is not available with the install-sh fallback.
2019-02-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
* src/Makefile.am: Avoid the -D option which is not available
with the install-sh fallback. Use $(MKDIR_P) instead.
* libdruntime/Makefile.am: Likewise.
* src/Makefile.in: Regenerated.
* libdruntime/Makefile.in: Regenerated.
From-SVN: r269025
Thomas Koenig [Tue, 19 Feb 2019 17:55:33 +0000 (17:55 +0000)]
re PR fortran/89384 (CONTIGUOUS dummy argument in BIND(C) interface incorrect when actual is non-contiguous)
2019-02-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/89384
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): If the dummy
argument is contiguous and the actual argument may not be,
use gfc_conv_subref_array_arg.
2019-02-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/89384
* gfortran.dg/ISO_Fortran_binding_4.f90
From-SVN: r269024
Uros Bizjak [Tue, 19 Feb 2019 16:10:00 +0000 (17:10 +0100)]
unwind-dw2.c (_Unwind_GetGR): Compare regno instead of index to DWARF_ZERO_REG.
* unwind-dw2.c (_Unwind_GetGR) [DWARF_ZERO_REG]: Compare
regno instead of index to DWARF_ZERO_REG.
From-SVN: r269021
Thomas Schwinge [Tue, 19 Feb 2019 16:04:17 +0000 (17:04 +0100)]
[PR87924] OpenACC wait clauses without async-arguments: remove XFAILs
... which the recent r269016 didn't do.
gcc/testsuite/
PR c/87924
* c-c++-common/goacc/asyncwait-5.c: Remove XFAILs.
* gfortran.dg/goacc/asyncwait-5.f: Likewise.
From-SVN: r269020
Ian Lance Taylor [Tue, 19 Feb 2019 15:42:09 +0000 (15:42 +0000)]
re PR go/89169 (FAIL: internal/cpu)
PR go/89169
internal/cpu: do not require POWER8
Although the gc toolchain requires POWER8, the gccgo toolchain does not.
Fixes https://gcc.gnu.org/PR89169
Reviewed-on: https://go-review.googlesource.com/c/162979
From-SVN: r269019
Ian Lance Taylor [Tue, 19 Feb 2019 15:32:34 +0000 (15:32 +0000)]
runtime: abort stack scan in cases that we cannot unwind the stack
In signal-triggered stack scan, if the signal is delivered at
certain bad time (e.g. in vdso, or in the middle of setcontext?),
the unwinder may not be able to unwind the whole stack, while it
still reports _URC_END_OF_STACK. So we cannot rely on _URC_END_OF_STACK
to tell if it successfully scanned the stack. Instead, we check
the last Go frame to see it actually reached the end of the stack.
For Go-created stack, this is runtime.kickoff. For C-created
stack, we need to record the outermost Go frame when it enters
the Go side.
Also we cannot unwind the stack if the signal is delivered in the
middle of runtime.gogo, halfway through a goroutine switch, where
the g and the stack don't match. Give up in this case as well.
Reviewed-on: https://go-review.googlesource.com/c/159098
From-SVN: r269018
H.J. Lu [Tue, 19 Feb 2019 14:19:33 +0000 (14:19 +0000)]
i386: Set ix86_fpmath to FPMATH_387 without SSE
ix86_fpmath should be set to combination of FPMATH_387 and FPMATH_SSE.
When SSE is disabled, it should be set to FPMATH_387 and 387 codegen is
also controlled by -msoft-float.
gcc/
PR target/89397
* config/i386/i386.c (ix86_option_override_internal): Set
opts->x_ix86_fpmath to FPMATH_387 when SSE is disabled.
gcc/testsuite/
PR target/89397
* gcc.target/i386/pr89397.c: New test.
From-SVN: r269017
Chung-Lin Tang [Tue, 19 Feb 2019 14:10:15 +0000 (14:10 +0000)]
re PR c/87924 (OpenACC wait clauses without async-arguments)
2019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
PR c/87924
gcc/c/
* c-parser.c (c_parser_oacc_clause_wait): Add representation of wait
clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
gcc/cp/
* parser.c (cp_parser_oacc_clause_wait): Add representation of wait
clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
gcc/fortran/
* openmp.c (gfc_match_omp_clauses): Add representation of wait clause
without argument as 'wait (GOMP_ASYNC_NOVAL)'.
libgomp/
* oacc-parallel.c (GOACC_parallel_keyed): Remove condition on call to
goacc_wait().
(goacc_wait): Handle ACC_ASYNC_NOVAL case, remove goacc_thread() call
and related adjustment.
Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r269016
Richard Biener [Tue, 19 Feb 2019 12:46:48 +0000 (12:46 +0000)]
re PR tree-optimization/88074 (g++ hangs on math expression)
2019-02-19 Richard Biener <rguenther@suse.de>
PR middle-end/88074
* toplev.c (do_compile): Initialize mpfr's exponent range
based on available float modes.
* gcc.dg/pr88074.c: New testcase.
From-SVN: r269015
Iain Buclaw [Tue, 19 Feb 2019 12:38:48 +0000 (12:38 +0000)]
Fix libphobos.shared/load.d compile failure on Solaris
2019-02-19 Iain Buclaw <ibuclaw@gdcproject.org>
* testsuite/libphobos.shared/load.d: Import core.sys.posix.dlfcn.
[DragonFlyBSD, FreeBSD, linux, NetBSD, OSX, Solaris]: Import only
RTLD_NOLOAD from core.sys.*.dlfcn.
Assert RTLD_NOLOAD is available.
From-SVN: r269014
Eric Botcazou [Tue, 19 Feb 2019 09:25:39 +0000 (09:25 +0000)]
rtlanal.c (get_initial_register_offset): Fall back to the estimate as long as the epilogue isn't completed.
* rtlanal.c (get_initial_register_offset): Fall back to the estimate
as long as the epilogue isn't completed.
From-SVN: r269013
Rainer Orth [Tue, 19 Feb 2019 09:24:50 +0000 (09:24 +0000)]
Fix libphobos linking on Solaris 11
* m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_NET): New macro.
* configure.ac: Invoke it.
* configure: Regenerate.
From-SVN: r269012
Jakub Jelinek [Tue, 19 Feb 2019 08:57:24 +0000 (09:57 +0100)]
re PR middle-end/89303 (memory leak with shared_ptr and enable_shared_from_this)
PR middle-end/89303
* g++.dg/torture/pr89303.C: Move everything from std namespace to my
namespace.
From-SVN: r269010
Jakub Jelinek [Tue, 19 Feb 2019 08:43:23 +0000 (09:43 +0100)]
re PR c++/89387 (ICE in maybe_generic_this_capture at gcc/cp/lambda.c:945 since r268851)
PR c++/89387
* lambda.c (maybe_generic_this_capture): Don't check
DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
* g++.dg/cpp0x/lambda/lambda-89387.C: New test.
From-SVN: r269009
Jakub Jelinek [Tue, 19 Feb 2019 08:40:07 +0000 (09:40 +0100)]
re PR c++/89391 (ICE in build_target_expr_with_type, at cp/tree.c:795)
PR c++/89391
* typeck.c (build_reinterpret_cast_1): Don't handle void to
&& conversion go through build_target_expr_with_type.
* g++.dg/cpp0x/reinterpret_cast2.C: New test.
From-SVN: r269008
Jakub Jelinek [Tue, 19 Feb 2019 08:38:54 +0000 (09:38 +0100)]
re PR c++/89390 (ICE in get_string, at spellcheck-tree.h:46)
PR c++/89390
* error.c (qualified_name_lookup_error): Only call
suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
* g++.dg/diagnostic/pr89390.C: New test.
From-SVN: r269007
Jonathan Wakely [Tue, 19 Feb 2019 02:55:12 +0000 (02:55 +0000)]
Adjust C++11/C++14 tests to work with -fchar8_t
* testsuite/21_strings/basic_string/literals/types.cc
[_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
* testsuite/21_strings/basic_string/literals/values.cc
[_GLIBCXX_USE_CHAR8_T]: Likewise.
* testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
potentially having different type.
* testsuite/22_locale/codecvt/char32_t.cc: Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
to char.
* testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
* testsuite/22_locale/codecvt/utf8.cc: Likewise.
* testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
string literals only using basic character set.
* testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
u8 literals to char.
* testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
Test ATOMIC_CHAR8_T_LOCK_FREE.
Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
[_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
* testsuite/experimental/string_view/literals/types.cc
[_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
literal.
* testsuite/experimental/string_view/literals/values.cc
[_GLIBCXX_USE_CHAR8_T]: Likewise.
From-SVN: r269006
Tom Honermann [Tue, 19 Feb 2019 02:55:05 +0000 (02:55 +0000)]
P0482R5 char8_t: New standard library tests
2019-02-19 Tom Honermann <tom@honermann.net>
* testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
from char16_32_t.cc; validates numeric_limits<char8_t>.
* testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
test cloned from types.cc; validates operator""s for char8_t
returns u8string.
* testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
test cloned from values.cc; validates construction and comparison
of u8string values.
* testsuite/21_strings/basic_string/requirements/
/explicit_instantiation/char8_t/1.cc: New test cloned from
char16_t/1.cc; validates explicit instantiation of
basic_string<char8_t>.
* testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
New test cloned from types.cc; validates operator""sv for char8_t
returns u8string_view.
* testsuite/21_strings/basic_string_view/literals/
values-char8_t.cc: New test cloned from values.cc; validates
construction and comparison of u8string_view values.
* testsuite/21_strings/basic_string_view/requirements/
explicit_instantiation/char8_t/1.cc: New test cloned from
char16_t/1.cc; validates explicit instantiation of
basic_string_view<char8_t>.
* testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
New test cloned from char16_t/65049.cc; validates that
char_traits<char8_t> is not vulnerable to the concerns in PR65049.
* testsuite/21_strings/char_traits/requirements/char8_t/
typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
that char_traits<char8_t> member typedefs are present and correct.
* testsuite/21_strings/char_traits/requirements/
explicit_instantiation/char8_t/1.cc: New test cloned from
char16_t/1.cc; validates explicit instantiation of
char_traits<char8_t>.
* testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
from char16_t.cc: validates
codecvt<char16_t, char8_t, mbstate_t>.
* testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
from char32_t.cc: validates
codecvt<char32_t, char8_t, mbstate_t>.
* testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
codecvt<char32_t, char8_t, std::mbstate_t>.
* testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
test cloned from string.cc; validates filesystem::path construction
from char8_t input.
* testsuite/experimental/feat-char8_t.cc: New test; validates that
the __cpp_lib_char8_t feature test macro is defined with the
correct value.
* testsuite/experimental/filesystem/path/native/string-char8_t.cc:
New test cloned from string.cc; validates filesystem::path
construction from char8_t input.
* testsuite/experimental/string_view/literals/types-char8_t.cc: New
test cloned from types.cc; validates operator""sv for char8_t
returns u8string_view.
* testsuite/experimental/string_view/literals/values-char8_t.cc:
New test cloned from values.cc; validates construction and
comparison of u8string_view values.
* testsuite/experimental/string_view/requirements/
explicit_instantiation/char8_t/1.cc: New test cloned from
char16_t/1.cc; validates explicit instantiation of
basic_string_view<char8_t>.
* testsuite/ext/char8_t/atomic-1.cc: New test; validates that
ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
enabled.
From-SVN: r269005
Tom Honermann [Tue, 19 Feb 2019 02:54:42 +0000 (02:54 +0000)]
P0482R5 char8_t: Standard library support
gcc/cp:
2019-02-19 Tom Honermann <tom@honermann.net>
* name-lookup.c (get_std_name_hint): Added u8string as a name hint.
libstdc++:
2019-02-19 Tom Honermann <tom@honermann.net>
P0482R5 char8_t: Standard library support
* config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
typeinfo symbols for char8_t.
* config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
(GLIBCXX_3.4.26): Add symbols for specializations of
numeric_limits and codecvt that involve char8_t.
(CXXABI_1.3.12): Add typeinfo symbols for char8_t.
* include/bits/atomic_base.h: Add atomic_char8_t.
* include/bits/basic_string.h: Add std::hash<u8string> and
operator""s(const char8_t*, size_t).
* include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
__cpp_lib_char8_t.
* include/bits/char_traits.h: Add char_traits<char8_t>.
* include/bits/codecvt.h: Add
codecvt<char16_t, char8_t, mbstate_t>,
codecvt<char32_t, char8_t, mbstate_t>,
codecvt_byname<char16_t, char8_t, mbstate_t>, and
codecvt_byname<char32_t, char8_t, mbstate_t>.
* include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
recognize char8_t as an integral type.
* include/bits/fs_path.h: (path::__is_encoded_char): Recognize
char8_t.
(path::u8string): Return std::u8string when char8_t support is
enabled.
(path::generic_u8string): Likewise.
(path::_S_convert): Handle conversion from char8_t input.
(path::_S_str_convert): Likewise.
* include/bits/functional_hash.h: Add hash<char8_t>.
* include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
char8_t.
* include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
for new char8_t specializations.
* include/bits/localefwd.h: Add missing declarations of
codecvt<char16_t, char, mbstate_t> and
codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
codecvt<char16_t, char8_t, mbstate_t> and
codecvt<char32_t, char8_t, mbstate_t>.
* include/bits/postypes.h: Add u8streampos
* include/bits/stringfwd.h: Add declarations of
char_traits<char8_t> and u8string.
* include/c_global/cstddef: Add __byte_operand<char8_t>.
* include/experimental/bits/fs_path.h (path::__is_encoded_char):
Recognize char8_t.
(path::u8string): Return std::u8string when char8_t support is
enabled.
(path::generic_u8string): Likewise.
(path::_S_convert): Handle conversion from char8_t input.
(path::_S_str_convert): Likewise.
* include/experimental/string: Add u8string.
* include/experimental/string_view: Add u8string_view,
hash<experimental::u8string_view>, and
operator""sv(const char8_t*, size_t).
* include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
* include/std/charconv (__is_int_to_chars_type): Recognize char8_t
as a character type.
* include/std/limits: Add numeric_limits<char8_t>.
* include/std/string_view: Add u8string_view,
hash<experimental::u8string_view>, and
operator""sv(const char8_t*, size_t).
* include/std/type_traits: Add __is_integral_helper<char8_t>,
__make_unsigned<char8_t>, and __make_signed<char8_t>.
* libsupc++/atomic_lockfree_defines.h: Define
ATOMIC_CHAR8_T_LOCK_FREE.
* src/c++11/Makefile.am: Compile with -fchar8_t when compiling
codecvt.cc and limits.cc so that char8_t specializations of
numeric_limits and codecvt and emitted.
* src/c++11/Makefile.in: Likewise.
* src/c++11/codecvt.cc: Define members of
codecvt<char16_t, char8_t, mbstate_t>,
codecvt<char32_t, char8_t, mbstate_t>,
codecvt_byname<char16_t, char8_t, mbstate_t>, and
codecvt_byname<char32_t, char8_t, mbstate_t>.
* src/c++11/limits.cc: Define members of
numeric_limits<char8_t>.
* src/c++98/Makefile.am: Compile with -fchar8_t when compiling
locale_init.cc and localename.cc.
* src/c++98/Makefile.in: Likewise.
* src/c++98/locale_init.cc: Add initialization for the
codecvt<char16_t, char8_t, mbstate_t> and
codecvt<char32_t, char8_t, mbstate_t> facets.
* src/c++98/localename.cc: Likewise.
* testsuite/util/testsuite_abi.cc: Validate ABI bump.
From-SVN: r269004
Jason Merrill [Tue, 19 Feb 2019 01:01:50 +0000 (20:01 -0500)]
PR c++/89336 - multiple stores in constexpr stmt.
If we evaluate the RHS in the context of the LHS, that evaluation might
change the LHS in ways that mess with being able to store the value later.
So for assignment or scalar values, evaluate the RHS first.
* constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
assigned value.
From-SVN: r269003
GCC Administrator [Tue, 19 Feb 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r269002
Johannes Pfau [Mon, 18 Feb 2019 23:29:39 +0000 (23:29 +0000)]
libphobos: Detect if qsort_r is available
Merges upstream druntime
bbfb58e8.
libphobos/ChangeLog:
2019-02-19 Johannes Pfau <johannespfau@gmail.com>
PR d/88127
* m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_CLIB): Add new macro.
* configure.ac: Use DRUNTIME_LIBRARIES_CLIB.
* configure: Regenerate
* Makefile.in: Regenerate
* libdruntime/gcc/config.d.in: Add Have_Qsort_R.
* libdruntime/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
From-SVN: r268999
Joseph Myers [Mon, 18 Feb 2019 23:16:00 +0000 (23:16 +0000)]
* fr.po: Update.
From-SVN: r268998
Jason Merrill [Mon, 18 Feb 2019 21:35:48 +0000 (16:35 -0500)]
Improve diagnostic for redundant template arguments in declaration.
* pt.c (check_explicit_specialization): If the declarator is a
template-id, only check whether the arguments are dependent.
From-SVN: r268997
Sharon Dvir [Mon, 18 Feb 2019 21:10:57 +0000 (21:10 +0000)]
README: Fix typos.
2019-02-18 Sharon Dvir <unapologtic@gmail.com>
gcc/testsuite/
* README: Fix typos.
From-SVN: r268996
Rainer Orth [Mon, 18 Feb 2019 20:25:55 +0000 (20:25 +0000)]
Fix g++.dg/torture/pr89303.C with Solaris ld
* g++.dg/torture/pr89303.C (bad_weak_ptr): Rename to
bad_weak_ptr_.
From-SVN: r268995
Jason Merrill [Mon, 18 Feb 2019 19:34:02 +0000 (14:34 -0500)]
Improve duplicate [[likely]] diagnostic.
* parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
to process_stmt_hotness_attribute.
* cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
(genericize_if_stmt): Use likely/unlikely instead of predictor_name.
From-SVN: r268994
Martin Sebor [Mon, 18 Feb 2019 18:37:55 +0000 (18:37 +0000)]
cpp.texi (Conditional syntax): Add __has_attribute, __has_cpp_attribute, and __has_include.
gcc/ChangeLog:
* doc/cpp.texi (Conditional syntax): Add __has_attribute,
__has_cpp_attribute, and __has_include.
From-SVN: r268993
Thomas Koenig [Mon, 18 Feb 2019 18:28:58 +0000 (18:28 +0000)]
re PR fortran/87689 (PowerPC64 ELFv2 function parameter passing violation)
2019-02-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/87689
* trans-decl.c (gfc_get_extern_function_decl): Add argument
actual_args and pass it through to gfc_get_function_type.
* trans-expr.c (conv_function_val): Add argument actual_args
and pass it on to gfc_get_extern_function_decl.
(conv_procedure_call): Pass actual arguments to conv_function_val.
* trans-types.c (get_formal_from_actual_arglist): New function.
(gfc_get_function_type): Add argument actual_args. Generate
formal args from actual args if necessary.
* trans-types.h (gfc_get_function_type): Add optional argument.
* trans.h (gfc_get_extern_function_decl): Add optional argument.
2019-02-18 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/87689
* gfortran.dg/lto/
20091028-1_0.f90: Add -Wno-lto-type-mismatch to
options.
* gfortran.dg/lto/
20091028-2_0.f90: Likewise.
* gfortran.dg/lto/pr87689_0.f: New file.
* gfortran.dg/lto/pr87689_1.f: New file.
From-SVN: r268992
Martin Sebor [Mon, 18 Feb 2019 17:44:11 +0000 (17:44 +0000)]
invoke.texi (-Wreturn-type): Correct and expand.
gcc/ChangeLog:
* doc/invoke.texi (-Wreturn-type): Correct and expand.
From-SVN: r268991
Martin Sebor [Mon, 18 Feb 2019 16:31:17 +0000 (16:31 +0000)]
PR middle-end/89294 - ICE in valid_constant_size_p
gcc/c-family/ChangeLog:
PR middle-end/89294
* c-common.c (invalid_array_size_error): Handle cst_size_not_constant.
gcc/ChangeLog:
PR middle-end/89294
* tree.c (valid_constant_size_p): Avoid assuming size is a constant
expression.
* tree.h (cst_size_error): Add the cst_size_not_constant enumerator.
From-SVN: r268990
Wilco Dijkstra [Mon, 18 Feb 2019 14:09:17 +0000 (14:09 +0000)]
Fix libstdc++ filesystem tests
Some recently added libstdc++ filesystem tests are missing a
dg-require-filesystem-ts.
Committed as obvious.
libstdc++/testsuite/
* 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
* 27_io/filesystem/operations/resize_file.cc: Likewise.
* 27_io/filesystem/path/generation/normal2.cc: Likewise.
From-SVN: r268989
Wilco Dijkstra [Mon, 18 Feb 2019 14:06:49 +0000 (14:06 +0000)]
Fix test pr88680.C
Fix pr88680.C failures due to short enums on arm-none-eabi.
Committed as obvious.
gcc/testsuite/
* g++.dg/wrappers/pr88680.C: Add -fno-short-enums.
From-SVN: r268988
Rainer Orth [Mon, 18 Feb 2019 13:53:51 +0000 (13:53 +0000)]
Tabify all D *.exp files
libphobos:
* testsuite/lib/libphobos-dg.exp: Tabify.
* testsuite/lib/libphobos.exp: Likewise.
* testsuite/libphobos.cycles/cycles.exp: Likewise.
* testsuite/libphobos.shared/shared.exp: Likewise.
* testsuite/libphobos.unittests/unittests.exp: Likewise.
gcc/testsuite:
* gdc.dg/dg.exp: Tabify.
* gdc.dg/lto/lto.exp: Likewise.
* gdc.test/gdc-test.exp: Likewise.
* lib/gdc-dg.exp: Likewise.
* lib/gdc.exp: Likewise.
From-SVN: r268987
Richard Biener [Mon, 18 Feb 2019 12:56:15 +0000 (12:56 +0000)]
re PR tree-optimization/89296 (tree copy-header masking uninitialized warning)
2019-02-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/89296
* tree-ssa-loop-ch.c (ch_base::copy_headers): Restrict setting
of no-warning flag to cases that might emit the bogus warning.
* gcc.dg/uninit-pr89296.c: New testcase.
From-SVN: r268986
Jakub Jelinek [Mon, 18 Feb 2019 12:52:36 +0000 (13:52 +0100)]
re PR bootstrap/88714 (bootstrap comparison failure on armv7l since r265398)
PR bootstrap/88714
* config/arm/arm.md (*arm_movdi, *movdf_soft_insn): Use "r" instead of
"q" constraint.
* config/arm/vfp.md (*movdi_vfp): Likewise.
* config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use "r" instead of
"q" constraint for operands[0].
From-SVN: r268985
Jakub Jelinek [Mon, 18 Feb 2019 11:20:43 +0000 (12:20 +0100)]
re PR target/89369 (pseudo-RNG miscompiled on s390x-linux with -O2 -march=zEC12 -mtune=z13 starting with r266203)
PR target/89369
* config/s390/s390.md (*r<noxa>sbg_<mode>_srl_bitmask,
*r<noxa>sbg_<mode>_sll, *r<noxa>sbg_<mode>_srl): Don't construct
pattern in a temporary buffer.
(*r<noxa>sbg_sidi_srl): Likewise. Always use 32 as I3 rather
than 64-operands[2].
* gcc.c-torture/execute/pr89369.c: New test.
* gcc.target/s390/md/rXsbg_mode_sXl.c (rosbg_si_srl,
rxsbg_si_srl): Expect last 3 operands 32,63,62 rather than
34,63,62.
From-SVN: r268984
Jakub Jelinek [Mon, 18 Feb 2019 11:16:33 +0000 (12:16 +0100)]
re PR target/89361 (s390 broken without S390_USE_TARGET_ATTRIBUTE, likely since r257489)
PR target/89361
* config/s390/s390.c (s390_indirect_branch_attrvalue,
s390_indirect_branch_settings): Define unconditionally.
(s390_set_current_function): Likewise, but guard the whole body except
the s390_indirect_branch_settings call with
#if S390_USE_TARGET_ATTRIBUTE.
(TARGET_SET_CURRENT_FUNCTION): Redefine unconditionally.
From-SVN: r268983
Jakub Jelinek [Mon, 18 Feb 2019 10:08:04 +0000 (11:08 +0100)]
* config/s390/s390.md (*<risbg_n>_ior_and_sr_ze,
*<risbg_n>_<mode>_ior_and_lshiftrt, *<risbg_n>_sidi_ior_and_lshiftrt):
Use HOST_WIDE_INT_M1U instead of ~(0ULL).
(*<risbg_n>_and_subregdi_rotr, *<risbg_n>_and_subregdi_rotl): Use
HOST_WIDE_INT_1U instead of 1ULL.
(*pre_z10_extzv<mode>, *pre_z10_extv<mode>): Change mask type from int
to unsigned HOST_WIDE_INT, use HOST_WIDE_INT_1U instead of 1ul.
(*insv<mode><clobbercc_or_nocc>_appendbitsleft,
z = (x << c) | (y >> d) splitters): Use HOST_WIDE_INT_1U
instead of 1UL.
(*insv<mode>_mem_reg, *insvdi_mem_reghigh): Use HOST_WIDE_INT_1U
instead of 1ul.
From-SVN: r268982
Martin Liska [Mon, 18 Feb 2019 09:46:19 +0000 (10:46 +0100)]
Use 1UL constant in order to not overflow (PR c++/89383).
2019-02-18 Martin Liska <mliska@suse.cz>
PR c++/89383
* line-map.c (linemap_line_start): Use 1UL in order
to not overflow.
From-SVN: r268981
Martin Jambor [Mon, 18 Feb 2019 08:59:04 +0000 (09:59 +0100)]
[PR 89209] Avoid segfault in a peculiar corner case in SRA
2019-02-18 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/89209
* tree-sra.c (create_access_replacement): New optional parameter
reg_tree. Use it as a type if non-NULL and access type is not of
a register type.
(get_repl_default_def_ssa_name): New parameter REG_TYPE, pass it
to create_access_replacement.
(sra_modify_assign): Pass LHS type to get_repl_default_def_ssa_name.
Check lacc is non-NULL before attempting to re-create it on the RHS.
testsuite/
* gcc.dg/tree-ssa/pr89209.c: New test.
From-SVN: r268980
Martin Liska [Mon, 18 Feb 2019 08:21:23 +0000 (09:21 +0100)]
Come up with fast {function,call}_summary classes (PR ipa/89306).
2019-02-18 Martin Liska <mliska@suse.cz>
PR ipa/89306
* cgraph.c (symbol_table::create_edge): Set m_summary_id to -1
by default.
(symbol_table::free_edge): Recycle m_summary_id.
* cgraph.h (get_summary_id): New.
(symbol_table::release_symbol): Set m_summary_id to -1
by default.
(symbol_table::allocate_cgraph_symbol): Recycle m_summary_id.
* ipa-fnsummary.c (ipa_fn_summary_t): Switch from
function_summary to fast_function_summary.
* ipa-fnsummary.h (ipa_fn_summary_t): Likewise.
* ipa-pure-const.c (class funct_state_summary_t):
Switch from function_summary to fast_function_summary.
* ipa-reference.c (class ipa_ref_var_info_summary_t): Likewise.
(class ipa_ref_opt_summary_t): Switch from function_summary
to fast_function_summary.
* symbol-summary.h (class function_summary_base): New class
that is created from base of former function_summary.
(function_summary_base::unregister_hooks): New.
(class function_summary): Inherit from function_summary_base.
(class call_summary_base): New class
that is created from base of former call_summary.
(class call_summary): Inherit from call_summary_base.
(struct is_same): New.
(class fast_function_summary): New summary class.
(class fast_call_summary): New summary class.
* vec.h (vec_safe_grow_cleared): New function.
From-SVN: r268979
Martin Liska [Mon, 18 Feb 2019 08:19:47 +0000 (09:19 +0100)]
Support if statement in !GCC$ builtin directive.
2019-02-18 Martin Liska <mliska@suse.cz>
* config/i386/i386.c (ix86_get_multilib_abi_name): New function.
(TARGET_GET_MULTILIB_ABI_NAME): New macro defined.
* doc/tm.texi: Document new target hook.
* doc/tm.texi.in: Likewise.
* target.def: Add new target macro.
* gcc.c (find_fortran_preinclude_file): Do not search multilib
suffixes.
2019-02-18 Martin Liska <mliska@suse.cz>
* decl.c (gfc_match_gcc_builtin): Add support for filtering
of builtin directive based on multilib ABI name.
2019-02-18 Martin Liska <mliska@suse.cz>
* gfortran.dg/simd-builtins-7.f90: New test.
* gfortran.dg/simd-builtins-7.h: New test.
From-SVN: r268978
GCC Administrator [Mon, 18 Feb 2019 00:17:08 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r268977
Harald Anlauf [Sun, 17 Feb 2019 21:19:20 +0000 (21:19 +0000)]
re PR fortran/88299 ([F18] COMMON in a legacy module produces bogus warnings in dependent code)
2019-02-17 Harald Anlauf <anlauf@gmx.de>
PR fortran/88299
* resolve.c (resolve_common_blocks,resolve_common_vars): Move
check for obsolent COMMON feature in F2018 to better place.
PR fortran/88299
* gfortran.dg/pr88299.f90: New test.
From-SVN: r268974
Harald Anlauf [Sun, 17 Feb 2019 21:14:14 +0000 (21:14 +0000)]
re PR fortran/89077 (ICE using * as len specifier for character parameter)
2019-02-17 Harald Anlauf <anlauf@gmx.de>
PR fortran/89077
* decl.c (gfc_set_constant_character_len): Clear original string
representation after padding has been performed to target length.
PR fortran/89077
* gfortran.dg/transfer_simplify_12.f90: New test.
From-SVN: r268973
Marek Polacek [Sun, 17 Feb 2019 17:53:54 +0000 (17:53 +0000)]
re PR c++/89356 (sorry, unimplemented: mangling implicit_conv_expr in nodejs8 package since r268321)
PR c++/89356
* g++.dg/abi/mangle68.C: New test.
* g++.dg/cpp0x/decltype69.C: New test.
From-SVN: r268972
Marek Polacek [Sun, 17 Feb 2019 17:25:27 +0000 (17:25 +0000)]
re PR c++/89315 (Cannot convert to std::initializer_list - fails with gcc9 works with gcc8)
PR c++/89315
* g++.dg/cpp0x/initlist114.C: New test.
From-SVN: r268971
Marek Polacek [Sun, 17 Feb 2019 16:55:37 +0000 (16:55 +0000)]
* g++.old-deja/g++.robertl/eb82.C: Tweak dg-error.
From-SVN: r268970
Marek Polacek [Sun, 17 Feb 2019 16:52:40 +0000 (16:52 +0000)]
PR c++/89217 - ICE with list-initialization in range-based for loop.
* constexpr.c (unshare_constructor): No longer static.
* cp-tree.h (unshare_constructor): Declare.
* semantics.c (finish_compound_literal): When dealing with a
non-dependent expression in a template, return the original
expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
* g++.dg/cpp0x/range-for37.C: New test.
From-SVN: r268969
Alan Modra [Sun, 17 Feb 2019 03:01:41 +0000 (13:31 +1030)]
[RS6000] Fix <bd>_<mode> and <bd>tf_<mode> splitters
This patch fixes a bug that can result in "insn does not satisfy its
constraints" if these splitters fire due to not getting ctr for the
jump insn. Since the jump insn can have any of r,m,d,wi,c,l as the
decremented count output, it's not sufficient to check for
gpc_reg_operand (which matches VSX regs for example). Seen after
correcting register_move_cost when the cost of gpr <-> vsx is much
lower. Since this is a prerequisite to fixing PR89271, I'm mentioning
that PR in the ChangeLog.
The <bd>tf_<mode> split had a further bug in that it wouldn't match
if the count output was m,d,wi, or l.
PR target/89271
* config/rs6000/rs6000.md (<bd>_<mode> split): Check for an int
output reg on add insn.
(<bd>tf_<mode> split): Likewise. Match predicates with insn.
From-SVN: r268968
GCC Administrator [Sun, 17 Feb 2019 00:16:28 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r268967
H.J. Lu [Sat, 16 Feb 2019 22:16:04 +0000 (22:16 +0000)]
i386: Add ssse3_pmulhrswv4hi3 expander
There is no V4HI pmulhrsw in AVX512BW and V4HI/V8HI pmulhrsw don't require
AVX2.
PR target/89372
* config/i386/sse.md (ssedoublemode): Remove V4HI.
(PMULHRSW): Likewise.
(<ssse3_avx2>_pmulhrsw<mode>3): Require TARGET_SSSE3, not
TARGET_AVX2.
(ssse3_pmulhrswv4hi3): New expander.
From-SVN: r268964
H.J. Lu [Sat, 16 Feb 2019 20:29:24 +0000 (20:29 +0000)]
i386: Correct *vec_extractv2si_zext_mem
The second and third alternatives in *vec_extractv2si_zext_mem don't
require MMX. But the second one requires SSE2.
* config/i386/mmx.md (*vec_extractv2si_zext_mem): Doesn't require
MMX. Add isa attribute.
From-SVN: r268963
Jakub Jelinek [Sat, 16 Feb 2019 18:46:04 +0000 (19:46 +0100)]
re PR tree-optimization/88074 (g++ hangs on math expression)
PR middle-end/88074
* simplify.c (simplify_transformation_to_array): Run post_op
immediately after processing corresponding row, rather than at the
end.
(norm2_scale): New variable.
(add_squared): Rename to ...
(norm2_add_squared): ... this. Scale down operand and/or result
if needed.
(do_sqrt): Rename to ...
(norm2_do_sqrt): ... this. Handle the result == e case. Scale up
result and clear norm2_scale.
(gfc_simplify_norm2): Clear norm2_scale. Change add_squared to
norm2_add_squared and &do_sqrt to norm2_do_sqrt. Scale up result
and clear norm2_scale again.
From-SVN: r268962
David Malcolm [Sat, 16 Feb 2019 16:17:17 +0000 (16:17 +0000)]
Fix excess warnings from -Wtype-limits with location wrappers (PR c++/88680)
PR c++/88680 reports excess warnings from -Wtype-limits after the C++
FE's use of location wrappers was extended in r267272 for cases such as:
const unsigned n = 8;
static_assert (n >= 0 && n % 2 == 0, "");
t.C:3:18: warning: comparison of unsigned expression >= 0 is always true
[-Wtype-limits]
3 | static_assert (n >= 0 && n % 2 == 0, "");
| ~~^~~~
The root cause is that the location wrapper around "n" breaks the
suppression of the warning for the "if OP0 is a constant that is >= 0"
case.
This patch fixes it by calling fold_for_warn on OP0, extracting the
constant.
gcc/c-family/ChangeLog:
PR c++/88680
* c-common.c (shorten_compare): Call fold_for_warn on op0 when
implementing -Wtype-limits.
gcc/testsuite/ChangeLog:
PR c++/88680
* g++.dg/wrappers/pr88680.C: New test.
From-SVN: r268961
Thomas Koenig [Sat, 16 Feb 2019 16:12:51 +0000 (16:12 +0000)]
re PR fortran/71066 (ICE in set_loop_bounds, at fortran/trans-array.c:4680)
2019-02-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71066
* trans-decl.c (generate_coarray_sym_init): For an array
constructor in a DATA statement of a coarray variable, set the
rank to 1 to avoid confusion later on. If the constructor
contains only one value, use that for initiailizig.
2019-02-17 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71066
* gfortran.dg/coarray_data_1.f90: New test.
From-SVN: r268960
Eric Botcazou [Sat, 16 Feb 2019 14:40:53 +0000 (14:40 +0000)]
patchable_function_entry-decl.c: Add -fno-pie on SPARC.
* c-c++-common/patchable_function_entry-decl.c: Add -fno-pie on SPARC.
* c-c++-common/patchable_function_entry-default.c: Likewise.
* c-c++-common/patchable_function_entry-definition.c: Likewise.
From-SVN: r268958
Jakub Jelinek [Sat, 16 Feb 2019 11:20:33 +0000 (12:20 +0100)]
re PR rtl-optimization/66152 (suboptimal load bytes to stack)
PR rtl-optimization/66152
* builtins.h (c_readstr): Declare.
* builtins.c (c_readstr): Remove forward declaration. Add
null_terminated_p argument, if false, read all bytes from the
string instead of stopping after '\0'.
* expr.c (string_cst_read_str): New function.
(store_expr): Use string_cst_read_str instead of
builtin_strncpy_read_str. Try to store by pieces the whole
exp_len first, and only if that fails, split it up into
store by pieces followed by clear_storage. Formatting fix.
* gcc.target/i386/pr66152.c: New test.
From-SVN: r268957
Jakub Jelinek [Sat, 16 Feb 2019 10:05:16 +0000 (11:05 +0100)]
i386.md (*movqi_internal): Remove static from buf variable.
* config/i386/i386.md (*movqi_internal): Remove static from
buf variable. Use output_asm_insn (buf, operands); return "";
instead of return buf;.
* config/i386/sse.md (<sse>_andnot<mode>3<mask_name>,
*<code><mode>3<mask_name>, *andnot<mode>3, *andnottf3, *<code><mode>3,
*<code>tf3, <mask_codefor><code><mode>3<mask_name>): Likewise.
From-SVN: r268956
GCC Administrator [Sat, 16 Feb 2019 00:16:34 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r268955
Cherry Zhang [Fri, 15 Feb 2019 23:22:29 +0000 (23:22 +0000)]
compiler,runtime: use __builtin_dwarf_cfa for getcallersp
Currently, the compiler lowers runtime.getcallersp to
__builtin_frame_address(1). In the C side of the runtime,
getcallersp is defined as __builtin_frame_address(0). They don't
match. Further, neither of them actually returns the caller's SP.
On AMD64, __builtin_frame_address(0) just returns the frame
pointer. __builtin_frame_address(1) returns the memory content
where the frame pointer points to, which is typically the
caller's frame pointer but can also be garbage if the frame
pointer is not enabled.
This CL changes it to use __builtin_dwarf_cfa(), which returns
the caller's SP at the call site. This matches the SP we get
from unwinding the stack.
Currently getcallersp is not used for anything real. It will be
used for precise stack scan (a new version of CL 159098).
Reviewed-on: https://go-review.googlesource.com/c/162905
* go-gcc.cc (Gcc_backend::Gcc_backend): Define __builtin_dwarf_cfa
instead of __builtin_frame_address.
From-SVN: r268952
Eric Botcazou [Fri, 15 Feb 2019 23:16:25 +0000 (23:16 +0000)]
asan_oob_test.cc: Skip OOB_int on SPARC.
* g++.dg/asan/asan_oob_test.cc: Skip OOB_int on SPARC.
* g++.dg/asan/function-argument-3.C: Tweak for 32-bit SPARC.
From-SVN: r268951
Eric Botcazou [Fri, 15 Feb 2019 23:08:49 +0000 (23:08 +0000)]
linux.h (ASAN_CC1_SPEC): Define.
* config/sparc/linux.h (ASAN_CC1_SPEC): Define.
(CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC and ASAN_CC1_SPEC.
* config/sparc/linux64.h (ASAN_CC1_SPEC): Likewise.
(CC1_SPEC): Likewise.
* config/sparc/sparc.c (sparc_asan_shadow_offset): Adjust for 64-bit.
From-SVN: r268950
Eric Botcazou [Fri, 15 Feb 2019 21:40:24 +0000 (21:40 +0000)]
asan.c (asan_emit_stack_protection): Use full-sized mask to align the base address on 64-bit strict-alignment platforms.
* asan.c (asan_emit_stack_protection): Use full-sized mask to align
the base address on 64-bit strict-alignment platforms.
From-SVN: r268949
Ian Lance Taylor [Fri, 15 Feb 2019 21:04:58 +0000 (21:04 +0000)]
re PR go/89368 (ICE in go/gofrontend/expressions.cc:4669 after r268923)
PR go/89368
compiler: write barrier check nil-check policy tweak
Tweak the recipe for generating writeBarrier loads to insure that the
dereference expr is marked as not requiring a nil check (not needed
for gccgo, but needed for gollvm).
Fixes https://gcc.gnu.org/PR89368
Reviewed-on: https://go-review.googlesource.com/c/162904
From-SVN: r268948