Commit Graph

180054 Commits

Author SHA1 Message Date
Nikhil Benesch 28774a6015 libgo: print reason code if throwing unwind exception fails
Calls to _Unwind_RaiseException and friends *can* return due to bugs in
libgo or memory corruption. When this occurs, print a message to stderr
with the reason code before aborting to aid debugging.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261257
2020-10-14 17:00:02 -07:00
Martin Sebor 14d83c6f58 PR middle-end/97391 - bogus -Warray-bounds accessing a multidimensional array parameter
gcc/ChangeLog:

	PR middle-end/97391
	* builtins.c (gimple_parm_array_size): Peel off one less layer
	of array types.

gcc/testsuite/ChangeLog:

	PR middle-end/97391
	* gcc.dg/Warray-bounds-68.c: New test.
2020-10-14 15:36:24 -06:00
Martin Sebor 34efa5c2a8 PR c/97413 - bogus error on function declaration with many VLA arguments
gcc/ChangeLog:

	PR c/97413
	* attribs.c (init_attr_rdwr_indices): Unwrap extra list layer.

gcc/c-family/ChangeLog:

	PR c/97413
	* c-attribs.c (build_attr_access_from_parms): Wrap chain of VLA
	bounds in an extra list.

gcc/testsuite/ChangeLog:

	PR c/97413
	* gcc.dg/Wvla-parameter-8.c: New test.
2020-10-14 15:18:19 -06:00
Tom de Vries 30d06b7d30 [testsuite] Don't overwrite compiler_flags in check_compile
Consider the test-case gcc.c-torture/compile/pr42717.c, which has:
...
/* { dg-xfail-if "ptxas crashes" { nvptx-*-* } { "-O0" } { "" } } */
...

When running make check-gcc, I get:
...
XPASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...
but when forcing to run only that test-case using
RUNTESTFLAGS=compile.exp=pr42717.c I get instead:
...
PASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...

Using RUNTESTFLAGS="-v -v -v" we can see what happens:
...
check_cached_effective_target exceptions_enabled: \
  returning 1 for nvptx-none-run
Limited to targets: *-*-*
Will search for options  "-O0"
Will exclude for options  ""
Compiler flags are: exceptions_enabled9848.cc -fdiagnostics-plain-output \
  --sysroot=/home/vries/nvptx/trunk/install/nvptx-none -S  -isystem \
  /home/vries/nvptx/trunk/build-gcc/nvptx-none/./newlib/targ-include \
  -isystem /home/vries/nvptx/trunk/source-gcc/newlib/libc/include \
  -o exceptions_enabled9848.s
Checking "*-*-*" against "nvptx-unknown-none"
Looking for -O0 to include in the compiler flags
Looking for  to exclude in the compiler flags
This is not a conditional match
PASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...

The effective target exceptions_enabled is tested from gcc-dg-prune, but
the calculation overwrites $compiler_flags, which is subsequently tested for
-O0.

Fix this by saving and restoring $compiler_flags when calling
${tool}_target_compile in check_compile.

Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-14  Tom de Vries  <tdevries@suse.de>

	* lib/target-supports.exp (check_compile): Save and restore
	$compiler_flags when calling ${tool}_target_compile.
2020-10-14 23:08:42 +02:00
Nikhil Benesch dc570700be libgo: export NetBSD-specific types in mksysinfo.sh
The syscall package depends on many NetBSD-specific types on NetBSD.
Teach mksysinfo.sh to export these types.

This alone is not sufficient to get the syscall package to compile on
NetBSD, but it's a start.

Note that the IfMsgHdr type is recapitalized to IfMsghdr, which requires
changes in the AIX port. The new capitalization is what's used by
upstream in existing NetBSD-specific code and is more consistent with
the capitalization of other C structs with the "hdr" suffix.

Updates golang/go#38538.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261739
2020-10-14 13:56:01 -07:00
Nikhil Benesch ca56d57624 runtime: correct semaphore implementation on netbsd
NetBSD's semaphores use the underlying lighweight process mechanism
(LWP) on NetBSD, rather than pthreads. This means the m.prodcid needs
to be set to the LWP ID rather than the pthread ID in order for unpark
notifications to get sent to the right place.

Introduce a new getProcID() method that selects the correct ID for the
platform.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261742
2020-10-14 13:56:01 -07:00
David Malcolm 61a43de58c analyzer: fix ICE on globals with unknown size [PR93388]
This patch fixes an ICE seen when attempting to build various existing
tests in our testsuite with -fanalyzer, including
gcc.c-torture/compile/980816-1.c.

gcc/analyzer/ChangeLog:
	PR analyzer/93388
	* region-model.cc (region_model::get_initial_value_for_global):
	Fall back to returning an initial_svalue if
	decl_region::get_svalue_for_initializer fails.
	* region.cc (decl_region::get_svalue_for_initializer): Don't
	attempt to create a compound_svalue if the region has an unknown
	size.

gcc/testsuite/ChangeLog:
	PR analyzer/93388
	* gcc.dg/analyzer/data-model-21.c: New test.
2020-10-14 16:38:25 -04:00
David Malcolm 12b267cc60 analyzer: fix build with ada [PR93723]
gcc/analyzer/ChangeLog:
	PR analyzer/93723
	* store.cc (binding_map::apply_ctor_to_region): Remove redundant
	assertion.
2020-10-14 16:37:36 -04:00
David Malcolm 974e3975c5 analyzer: don't use <setjmp.h> in tests [PR97394]
PR analyzer/97394 reports issues with analyzer setjmp results
when testing against MUSL.  This patch fixes up gcc.dg/analyzer
so that it doesn't use <setjmp.h>.

gcc/testsuite/ChangeLog:
	PR analyzer/97394
	* gcc.dg/analyzer/setjmp-pr93378.c: Use test-setjmp.h rather than
	<setjmp.h>.
	* gcc.dg/analyzer/sigsetjmp-5.c: Likewise.
	* gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
	* gcc.dg/analyzer/test-setjmp.h: Don't include <setjmp.h>.
	Provide decls of jmp_buf, sigjmp_buf, setjmp, sigsetjmp,
	longjmp, and siglongjmp.
2020-10-14 16:36:25 -04:00
Jason Merrill 270c5a982c c++: Diagnose bogus variadic lambda. [PR97358]
If the lambda has a capture pack, it cannot be used unexpanded within the
body of the lambda.  If you want to expand the pack across multiple lambdas,
don't capture the whole pack.

gcc/cp/ChangeLog:

	PR c++/97358
	* pt.c (check_for_bare_parameter_packs): Diagnose use of
	capture pack.

gcc/testsuite/ChangeLog:

	PR c++/97358
	* g++.dg/cpp0x/lambda/lambda-variadic11.C: New test.
2020-10-14 15:44:29 -04:00
Alexandre Oliva 8f8cba46b8 Rework the condition variables support for VxWorks
This change reworks the condition variables support for VxWorks
to address the very legit points raised by Rasmus in

 https://gcc.gnu.org/pipermail/gcc/2020-May/232524.html

While some of the issues were taken care of by the use of semFlush,
a few others were indeed calling for adjustments.

We first considered resorting to the condvarLib library available
in VxWorks7. Unfortunately, it is vx7 only and we wanted something working
for at least vx 6.9 as well. It also turned out requiring the use of
recursive mutexes for condVarWait, which seemed unnecessarily constraining.

Instead, this change corrects the sequencing logic in a few places and
leverages the semExchange API to ensure the key atomicity requirement on
cond_wait operations.

2020-10-14  Alexandre Oliva  <oliva@adacore.com>

libgcc/
	* config/gthr-vxworks-thread.c: Include stdlib.h.
	(tls_delete_hook): Prototype it.
	(__gthread_cond_signal): Return early if no waiters.  Consume
	signal in case the semaphore got full.  Use semInfoGet instead
	of kernel-mode-only semInfo.
	(__gthread_cond_timedwait): Use semExchange.  Always take the
	mutex again before returning.
	* config/gthr-vxworks-cond.c (__ghtread_cond_wait): Likewise.
2020-10-14 19:24:45 +00:00
Sunil K Pandey 93103603fd x86: Add missing intrinsics [PR95483]
Tested on x86-64.

gcc/ChangeLog:

	PR target/95483
	* config/i386/avx2intrin.h (_mm_broadcastsi128_si256): New intrinsics.
	(_mm_broadcastsd_pd): Ditto.
	* config/i386/avx512bwintrin.h (_mm512_loadu_epi16): New intrinsics.
	(_mm512_storeu_epi16): Ditto.
	(_mm512_loadu_epi8): Ditto.
	(_mm512_storeu_epi8): Ditto.
	* config/i386/avx512dqintrin.h (_mm_reduce_round_sd): New intrinsics.
	(_mm_mask_reduce_round_sd): Ditto.
	(_mm_maskz_reduce_round_sd): Ditto.
	(_mm_reduce_round_ss): Ditto.
	(_mm_mask_reduce_round_ss): Ditto.
	(_mm_maskz_reduce_round_ss): Ditto.
	(_mm512_reduce_round_pd): Ditto.
	(_mm512_mask_reduce_round_pd): Ditto.
	(_mm512_maskz_reduce_round_pd): Ditto.
	(_mm512_reduce_round_ps): Ditto.
	(_mm512_mask_reduce_round_ps): Ditto.
	(_mm512_maskz_reduce_round_ps): Ditto.
	* config/i386/avx512erintrin.h
	(_mm_mask_rcp28_round_sd): New intrinsics.
	(_mm_maskz_rcp28_round_sd): Ditto.
	(_mm_mask_rcp28_round_ss): Ditto.
	(_mm_maskz_rcp28_round_ss): Ditto.
	(_mm_mask_rsqrt28_round_sd): Ditto.
	(_mm_maskz_rsqrt28_round_sd): Ditto.
	(_mm_mask_rsqrt28_round_ss): Ditto.
	(_mm_maskz_rsqrt28_round_ss): Ditto.
	(_mm_mask_rcp28_sd): Ditto.
	(_mm_maskz_rcp28_sd): Ditto.
	(_mm_mask_rcp28_ss): Ditto.
	(_mm_maskz_rcp28_ss): Ditto.
	(_mm_mask_rsqrt28_sd): Ditto.
	(_mm_maskz_rsqrt28_sd): Ditto.
	(_mm_mask_rsqrt28_ss): Ditto.
	(_mm_maskz_rsqrt28_ss): Ditto.
	* config/i386/avx512fintrin.h (_mm_mask_sqrt_sd): New intrinsics.
	(_mm_maskz_sqrt_sd): Ditto.
	(_mm_mask_sqrt_ss): Ditto.
	(_mm_maskz_sqrt_ss): Ditto.
	(_mm_mask_scalef_sd): Ditto.
	(_mm_maskz_scalef_sd): Ditto.
	(_mm_mask_scalef_ss): Ditto.
	(_mm_maskz_scalef_ss): Ditto.
	(_mm_mask_cvt_roundsd_ss): Ditto.
	(_mm_maskz_cvt_roundsd_ss): Ditto.
	(_mm_mask_cvt_roundss_sd): Ditto.
	(_mm_maskz_cvt_roundss_sd): Ditto.
	(_mm_mask_cvtss_sd): Ditto.
	(_mm_maskz_cvtss_sd): Ditto.
	(_mm_mask_cvtsd_ss): Ditto.
	(_mm_maskz_cvtsd_ss): Ditto.
	(_mm512_cvtsi512_si32): Ditto.
	(_mm_cvtsd_i32): Ditto.
	(_mm_cvtss_i32): Ditto.
	(_mm_cvti32_sd): Ditto.
	(_mm_cvti32_ss): Ditto.
	(_mm_cvtsd_i64): Ditto.
	(_mm_cvtss_i64): Ditto.
	(_mm_cvti64_sd): Ditto.
	(_mm_cvti64_ss): Ditto.
	* config/i386/avx512vlbwintrin.h (_mm256_storeu_epi8): New intrinsics.
	(_mm_storeu_epi8): Ditto.
	(_mm256_loadu_epi16): Ditto.
	(_mm_loadu_epi16): Ditto.
	(_mm256_loadu_epi8): Ditto.
	(_mm_loadu_epi8): Ditto.
	(_mm256_storeu_epi16): Ditto.
	(_mm_storeu_epi16): Ditto.
	* config/i386/avx512vlintrin.h (_mm256_load_epi64): New intrinsics.
	(_mm_load_epi64): Ditto.
	(_mm256_load_epi32): Ditto.
	(_mm_load_epi32): Ditto.
	(_mm256_store_epi32): Ditto.
	(_mm_store_epi32): Ditto.
	(_mm256_loadu_epi64): Ditto.
	(_mm_loadu_epi64): Ditto.
	(_mm256_loadu_epi32): Ditto.
	(_mm_loadu_epi32): Ditto.
	(_mm256_mask_cvt_roundps_ph): Ditto.
	(_mm256_maskz_cvt_roundps_ph): Ditto.
	(_mm_mask_cvt_roundps_ph): Ditto.
	(_mm_maskz_cvt_roundps_ph): Ditto.
	* config/i386/avxintrin.h (_mm256_cvtsi256_si32): New intrinsics.
	* config/i386/emmintrin.h (_mm_loadu_si32): New intrinsics.
	(_mm_loadu_si16): Ditto.
	(_mm_storeu_si32): Ditto.
	(_mm_storeu_si16): Ditto.
	* config/i386/i386-builtin-types.def
	(V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT): Add new type.
	(V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT): Ditto.
	(V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT): Ditto.
	(V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT): Ditto.
	* config/i386/i386-builtin.def
	(__builtin_ia32_cvtsd2ss_mask_round): New builtin.
	(__builtin_ia32_cvtss2sd_mask_round): Ditto.
	(__builtin_ia32_rcp28sd_mask_round): Ditto.
	(__builtin_ia32_rcp28ss_mask_round): Ditto.
	(__builtin_ia32_rsqrt28sd_mask_round): Ditto.
	(__builtin_ia32_rsqrt28ss_mask_round): Ditto.
	(__builtin_ia32_reducepd512_mask_round): Ditto.
	(__builtin_ia32_reduceps512_mask_round): Ditto.
	(__builtin_ia32_reducesd_mask_round): Ditto.
	(__builtin_ia32_reducess_mask_round): Ditto.
	* config/i386/i386-expand.c
	(ix86_expand_round_builtin): Expand round builtin for new type.
	(V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT)
	(V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT)
	(V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
	(V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT)
	* config/i386/mmintrin.h ()
	Define datatype __m32 and __m16.
	Define datatype __m32_u and __m16_u.
	* config/i386/sse.md: Adjust pattern.
	(<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): Adjust.
	(reduces<mode><mask_scalar_name><round_saeonly_scalar_name>): Ditto.
	(sse2_cvtsd2ss<mask_name><round_name>): Ditto.
	(sse2_cvtss2sd<mask_name><round_saeonly_name>): Ditto.
	(avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Ditto.
	(avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>): Ditto.

gcc/testsuite/ChangeLog:

	PR target/95483
	* gcc.target/i386/avx-1.c: Add test.
	* gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
	* gcc.target/i386/avx2-vbroadcastsi128-2.c: Ditto.
	* gcc.target/i386/avx512bw-vmovdqu16-1.c: Ditto.
	* gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
	* gcc.target/i386/avx512dq-vreducesd-1.c: Ditto.
	* gcc.target/i386/avx512dq-vreducesd-2.c: Ditto.
	* gcc.target/i386/avx512dq-vreducess-1.c: Ditto.
	* gcc.target/i386/avx512dq-vreducess-2.c: Ditto.
	* gcc.target/i386/avx512er-vrcp28sd-1.c: Ditto.
	* gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto.
	* gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto.
	* gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto.
	* gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto.
	* gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto.
	* gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto.
	* gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto.
	* gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto.
	* gcc.target/i386/avx512f-vscalefsd-1.c: Ditto.
	* gcc.target/i386/avx512f-vscalefsd-2.c: Ditto.
	* gcc.target/i386/avx512f-vscalefss-1.c: Ditto.
	* gcc.target/i386/avx512f-vscalefss-2.c: Ditto.
	* gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto.
	* gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto.
	* gcc.target/i386/avx512f-vsqrtss-1.c: Ditto.
	* gcc.target/i386/avx512f-vsqrtss-2.c: Ditto.
	* gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
	* gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-23.c: Ditto.
	* gcc.target/i386/avx512dq-vreducepd-3.c: New test.
	* gcc.target/i386/avx512dq-vreducepd-4.c: New test.
	* gcc.target/i386/avx512dq-vreduceps-3.c: New test.
	* gcc.target/i386/avx512dq-vreduceps-4.c: New test.
	* gcc.target/i386/avx512f-vcvtsi2sd-1.c: New test.
	* gcc.target/i386/pr95483-1.c: New test.
	* gcc.target/i386/pr95483-2.c: New test.
	* gcc.target/i386/pr95483-3.c: New test.
	* gcc.target/i386/pr95483-4.c: New test.
	* gcc.target/i386/pr95483-5.c: New test.
	* gcc.target/i386/pr95483-6.c: New test.
	* gcc.target/i386/pr95483-7.c: New test.
2020-10-14 11:37:38 -07:00
Olivier Hainque 2fca6a9817 Fix the VX_CPU selection for -mcpu=xscale on arm-vxworks
This fixlet makes sure -mcpu=xscale selects the correct VX_CPU.

2020-10-14  Olivier Hainque  <hainque@adacore.com>

gcc/
	* config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Fix
	the VX_CPU selection for -mcpu=xscale on arm-vxworks.
2020-10-14 18:13:54 +00:00
Jonathan Wakely 78198b6021 libstdc++: Fix unspecified comparison to null pointer [PR 97415]
The standard doesn't guarantee that null pointers compare less than
non-null pointers. AddressSanitizer complains about the pptr()> egptr()
comparison in basic_stringbuf::str() when egptr() is null.

libstdc++-v3/ChangeLog:

	PR libstdc++/97415
	* include/std/sstream (basic_stringbuf::str()): Check for
	null egptr() before comparing to non-null pptr().
2020-10-14 18:55:14 +01:00
Olivier Hainque 5b00bcc543 Rework CPP_BUILTINS_SPEC for powerpc-vxworks
This change reworks CPP_BUILTINS_SPEC for powerpc-vxworks to
prepare for the upcoming addition of 32 and 64 bit ports for
VxWorks 7r2.

2020-10-14  Olivier Hainque  <hainque@adacore.com>

gcc/
	* config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Accommodate
	expectations from different versions of VxWorks, for 32 or 64bit
	configurations.
2020-10-14 17:38:38 +00:00
Olivier Hainque d00f8b4056 Fallback to default CPP spec for C++ on VxWorks
Arrange to inhibit the effects of CPLUSPLUS_CPP_SPEC in gnu-user.h,
which #defines _GNU_SOURCE, which is invalid for VxWorks (possibly
not providing ::mkstemp, for example).

2020-10-14  Olivier Hainque  <hainque@adacore.com>

gcc/
	* config/vxworks.h: #undef CPLUSPLUS_CPP_SPEC.
2020-10-14 17:38:38 +00:00
Olivier Hainque 69d6b3f650 Honor $(MULTISUBDIR) in -I directives for libgcc on VxWorks
This is useful to handle ports where we might arrange to use
different sets of fixed headers for different multilibs, typically
for kernel vs rtp modes.

2020-10-14  Olivier Hainque  <hainque@adacore.com>

libgcc/
	* config/t-vxworks (LIBGCC2_INCLUDES): Append
	$(MULTISUBDIR) to the -I path for fixed headers, as we
	arrange to have different sets of such headers for different
	multilibs when they are activated.
	* config/t-vxworks7: Likewise.
2020-10-14 17:38:37 +00:00
Olivier Hainque e4b887cb76 Add include-fixed to include search paths for libgcc on VxWorks
The special vxworks rules for the compilation of libgcc had
-I.../gcc/include and not .../gcc/include-fixed, causing build
failure of our arm-vxworks7r2 port because of indirect dependencies
on limits.h.

The omission was just an oversight and this change just adds the
missing -I.

2020-10-14  Olivier Hainque  <hainque@adacore.com>

libgcc/
	* config/t-vxworks: Add include-fixed to include search
	paths for libgcc on VxWorks.
	* config/t-vxworks7: Likewise.
2020-10-14 17:38:37 +00:00
Olivier Hainque b3f1fef1f0 Adjust the VxWorks alternative LIMITS_H guard for glimits.h
This is a minor adjustment to the vxworks specific macro name
used to guard the header file contents, to make it closer to the
original one and easier to search for.

2020-10-14  Olivier Hainque  <hainque@adacore.com>

gcc/
	* config/t-vxworks: Adjust the VxWorks alternative LIMITS_H guard
	for glimits.h, make it both closer to the previous one and easier to
	search for.
2020-10-14 17:38:37 +00:00
Nathan Sidwell 068644a149 c++: DECL_FRIEND_P cleanup
DECL_FRIEND_P's meaning has changed over time.  It now (almost) means
the the friend function decl has not been met via an explicit decl.
This completes that transition, renaming it to DECL_UNIQUE_FRIEND_P,
so one doesn't think it is the sole indicator of friendliness (plenty
of friends do not have the flag set).  This allows reduction in the
complexity of managing the field -- all in duplicate_decls now.

	gcc/cp/
	* cp-tree.h (struct lang_decl_fn): Adjust context comment.
	(DECL_FRIEND_P): Replace with ...
	(DECL_UNIQUE_FRIEND_P): ... this.  Only for FUNCTION_DECLs.
	(DECL_FRIEND_CONTEXT): Adjust.
	* class.c (add_implicitly_declared_members): Detect friendly
	spaceship from context.
	* constraint.cc (remove_constraints): Use a checking assert.
	(maybe_substitute_reqs_for): Use DECL_UNIQUE_FRIEND_P.
	* decl.c (check_no_redeclaration_friend_default_args):
	DECL_UNIQUE_FRIEND_P is signficant, not hiddenness.
	(duplicate_decls): Adjust DECL_UNIQUE_FRIEND_P clearing.
	(redeclaration_error_message): Use DECL_UNIQUE_FRIEND_P.
	(start_preparsed_function): Correct in-class friend processing.
	Refactor some initializers.
	(grokmethod): Directly check friend decl-spec.
	* decl2.c (grokfield): Check DECL_UNIQUE_FRIEND_P.
	* friend.c (do_friend): Set DECL_UNIQUE_FRIEND_P first, remove
	extraneous conditions.  Don't re set it afterwards.
	* name-lookup.c (lookup_elaborated_type_1): Simplify revealing
	code.
	(do_pushtag): Likewise.
	* pt.c (optimize_specialization_lookup_p): Check
	DECL_UNIQUE_FRIEND_P.
	(push_template_decl): Likewise.  Drop unneeded friend setting.
	(type_dependent_expression_p): Check DECL_UNIQUE_FRIEND_P.
	libcc1/
	* libcp1plugin.cc (plugin_add_friend): Set DECL_UNIQUE_FRIEND_P.
2020-10-14 10:04:18 -07:00
Jakub Jelinek 06bec55e80 i386: Improve chaining of _{addcarry,subborrow}_u{32,64} [PR97387]
These builtins have two known issues and this patch fixes one of them.

One issue is that the builtins effectively return two results and
they make the destination addressable until expansion, which means
a stack slot is allocated for them and e.g. with -fstack-protector*
DSE isn't able to optimize that away.  I think for that we want to use
the technique of returning complex value; the patch doesn't handle that
though.  See PR93990 for that.

The other problem is optimization of successive uses of the builtin
e.g. for arbitrary precision arithmetic additions/subtractions.
As shown PR93990, combine is able to optimize the case when the first
argument to these builtins is 0 (the first instance when several are used
together), and also the last one if the last one ignores its result (i.e.
the carry/borrow is dead and thrown away in that case).
As shown in this PR, combiner refuses to optimize the rest, where it sees:
(insn 10 9 11 2 (set (reg:QI 88 [ _31 ])
        (ltu:QI (reg:CCC 17 flags)
            (const_int 0 [0]))) "include/adxintrin.h":69:10 785 {*setcc_qi}
     (expr_list:REG_DEAD (reg:CCC 17 flags)
        (nil)))
- set pseudo 88 to CF from flags, then some uninteresting insns that
don't modify flags, and finally:
(insn 17 15 18 2 (parallel [
            (set (reg:CCC 17 flags)
                (compare:CCC (plus:QI (reg:QI 88 [ _31 ])
                        (const_int -1 [0xffffffffffffffff]))
                    (reg:QI 88 [ _31 ])))
            (clobber (scratch:QI))
        ]) "include/adxintrin.h":69:10 350 {*addqi3_cconly_overflow_1}
     (expr_list:REG_DEAD (reg:QI 88 [ _31 ])
        (nil)))
to set CF in flags back to what we saved earlier.  The combiner just punts
trying to combine the 10, 17 and following addcarrydi (etc.) instruction,
because
  if (i1 && !can_combine_p (i1, i3, i0, NULL, i2, NULL, &i1dest, &i1src))
    {
      if (dump_file && (dump_flags & TDF_DETAILS))
        fprintf (dump_file, "Can't combine i1 into i3\n");
      undo_all ();
      return 0;
    }
fails - the 3 insns aren't all adjacent and
      || (! all_adjacent
          && (((!MEM_P (src)
                || ! find_reg_note (insn, REG_EQUIV, src))
               && modified_between_p (src, insn, i3))
src (flags hard register) is modified between the first and third insn - in
the second insn.

The following patch optimizes this by optimizing just the two insns,
10 and 17 above, i.e. save CF into pseudo, set CF from that pseudo, into
a nop.  The new define_insn_and_split matches how combine simplifies those
two together (except without the ix86_cc_mode change it was choosing CCmode
for the destination instead of CCCmode, so had to change that function too,
and also adjust costs so that combiner understand it is beneficial).

With this, all the testcases are optimized, so that the:
        setc    %dl
...
        addb    $-1, %dl
insns in between the ad[dc][lq] or s[ub]b[lq] instructions are all optimized
away (sure, if something would clobber flags in between they wouldn't, but
there is nothing that can be done about that).

2020-10-14  Jakub Jelinek  <jakub@redhat.com>

	PR target/97387
	* config/i386/i386.md (CC_CCC): New mode iterator.
	(*setcc_qi_addqi3_cconly_overflow_1_<mode>): New
	define_insn_and_split.
	* config/i386/i386.c (ix86_cc_mode): Return CCCmode
	for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern operands.
	(ix86_rtx_costs): Return true and *total = 0;
	for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern.  Use op0 and
	op1 temporaries to simplify COMPARE checks.

	* gcc.target/i386/pr97387-1.c: New test.
	* gcc.target/i386/pr97387-2.c: New test.
2020-10-14 17:29:36 +02:00
Jonathan Wakely 2b9c09a78b libstdc++: Fix tests that fail with old std::string ABI
These two tests have started to fail with the old std::string ABI. The
scan-assembler-not checks fail because they match debug info, not code.

Adding -g0 to the test flags fixes them.

libstdc++-v3/ChangeLog:

	* testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc:
	Do not generate debug info.
	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc:
	Likewise.
2020-10-14 16:15:49 +01:00
Aldy Hernandez a121715bca Do not call range_of_ssa_name_with_loop_info with the loop tree root.
gcc/ChangeLog:

	PR tree-optimization/97396
	* gimple-range.cc (gimple_ranger::range_of_phi): Do not call
	range_of_ssa_name_with_loop_info with the loop tree root.

gcc/testsuite/ChangeLog:

	* gcc.dg/pr97396.c: New test.
2020-10-14 10:57:37 -04:00
Richard Biener ea9535e75e More vect_get_and_check_slp_defs refactoring
This is another tiny piece in some bigger refactoring of
vect_get_and_check_slp_defs.  Split out a test that has nothing
to do with def types or commutation.

2020-10-14  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_get_and_check_slp_defs): Split out
	test for compatible operand types.
2020-10-14 16:27:03 +02:00
Olivier Hainque c602426cc7 Tigthen flag_pic processing in vxworks_override_options
This fixes spurious complaints about PIC mode not supported
from "gcc --help=...", on VxWorks without -mrtp. The spurious message
is emitted by vxworks_override_options, called with flag_pic == -1
when we're running for --help.

The change simply adjusts the check testing for "we're generating pic code"
to "flag_pic > 0" instead of just "flag_pic". We're not generating code at
all when reaching here with -1.

gcc/ChangeLog:

2020-10-14  Olivier Hainque  <hainque@adacore.com>

	* config/vxworks.c (vxworks_override_options): Guard pic checks with
	flag_pic > 0 instead of just flag_pic.
2020-10-14 14:18:58 +00:00
Jan Hubicka 1433846862 Turn offset_map to HOST_WIDE_INT
gcc/ChangeLog:

2020-10-14  Jan Hubicka  <hubicka@ucw.cz>

	* ipa-fnsummary.c (remap_edge_summaries): Make offset_map HOST_WIDE_INT.
	(remap_freqcounting_predicate): Likewise.
	(ipa_merge_fn_summary_after_inlining): Likewise.
	* ipa-predicate.c (predicate::remap_after_inlining): Likewise
	* ipa-predicate.h (remap_after_inlining): Update.
2020-10-14 16:07:07 +02:00
Jan Hubicka 4d90edb96e Handle POINTER_PLUS_EXPR in jump functions in ipa-modref.
gcc/ChangeLog:

	* ipa-modref.c (compute_parm_map): Handle POINTER_PLUS_EXPR in
	PASSTHROUGH.

gcc/testsuite/ChangeLog:

	* gcc.dg/ipa/modref-1.c: New test.
	* gcc.dg/tree-ssa/modref-4.c: New test.
2020-10-14 16:01:39 +02:00
Tobias Burnus 4aa9742252 Fortran: Fix line-truncation warning for !$acc and !gcc$
gcc/fortran/ChangeLog:

	PR fortran/97390
	* scanner.c (load_line): Fix line-truncation warning for !$acc
	and !gcc$ in free-form source code.

gcc/testsuite/ChangeLog:

	PR fortran/97390
	* gfortran.dg/goacc/warn_truncated.f90: New test.
2020-10-14 15:48:22 +02:00
Richard Biener ec5e646709 adjust BB SLP build from scalars heuristics
We can end up with { _1, 1.0 } * { 3.0, _2 } which isn't really
profitable.  The following adjusts things so we reject more than
one possibly expensive (non-constant and not uniform) vector CTOR
and instead build a CTOR for the scalar operation results.

This also moves a check in vect_get_and_check_slp_defs to a better
place.

2020-10-14  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_get_and_check_slp_defs): Move
	check for duplicate/interleave of variable size constants
	to a place done once and early.
	(vect_build_slp_tree_2): Adjust heuristics when to build
	a BB SLP node from scalars.
2020-10-14 15:07:17 +02:00
Tom de Vries 17d5739a6b [gimple] Move can_duplicate_bb_p to gimple_can_duplicate_bb_p
The function gimple_can_duplicate_bb_p currently always returns true.

The presence of can_duplicate_bb_p in tracer.c however suggests that
there are cases when bb's indeed cannot be duplicated.

Move the implementation of can_duplicate_bb_p to gimple_can_duplicate_bb_p.

Bootstrapped and reg-tested on x86_64-linux.

Build x86_64-linux with nvptx accelerator and tested libgomp.

No issues found.

As corner-case check, bootstrapped and reg-tested a patch that makes
gimple_can_duplicate_bb_p always return false, resulting in
PR97333 - "[gimple_can_duplicate_bb_p == false, tree-ssa-threadupdate]
ICE in duplicate_block, at cfghooks.c:1093".

gcc/ChangeLog:

2020-10-09  Tom de Vries  <tdevries@suse.de>

	* tracer.c (cached_can_duplicate_bb_p, analyze_bb): Use
	can_duplicate_block_p.
	(can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
	(can_duplicate_bb_p): Move and merge ...
	* tree-cfg.c (gimple_can_duplicate_bb_p): ... here.
2020-10-14 14:37:03 +02:00
Nathan Sidwell 9068711f21 c++: Instantiation with local extern [PR97395]
It turns out that pushdecl_with_scope has somewhat strange behaviour,
which probably made more sense way back.  Unfortunately making it
somewhat saner turned into a rathole.  Instead use a
push_nested_namespace around pushing the alias -- this is similar to
some of the friend handling we already have.

	gcc/cp/
	* name-lookup.c (push_local_extern_decl_alias): Push into alias's
	namespace and use pushdecl.
	(do_pushdecl_with_scope): Clarify behaviour.
	gcc/testsuite/
	* g++.dg/lookup/extern-redecl2.C: New.
2020-10-14 05:08:36 -07:00
Jonathan Wakely 252c9967ba libstdc++: Define some std::string constructors inline
There are a lot of very simple constructors for the old string which are
not defined inline. I don't see any reason for this and it probably
makes them less likely to be optimized away. Move the definitions into
the class body.

libstdc++-v3/ChangeLog:

	* include/bits/basic_string.h (basic_string(const Alloc&))
	(basic_string(const basic_string&)
	(basic_string(const CharT*, size_type, const Alloc&))
	(basic_string(const CharT*, const Alloc&))
	(basic_string(size_type, CharT, const Alloc&))
	(basic_string(initializer_list<CharT>, const Alloc&))
	(basic_string(InputIterator, InputIterator, const Alloc&)):
	Define inline in class body.
	* include/bits/basic_string.tcc (basic_string(const Alloc&))
	(basic_string(const basic_string&)
	(basic_string(const CharT*, size_type, const Alloc&))
	(basic_string(const CharT*, const Alloc&))
	(basic_string(size_type, CharT, const Alloc&))
	(basic_string(initializer_list<CharT>, const Alloc&))
	(basic_string(InputIterator, InputIterator, const Alloc&)):
	Move definitions into class body.
2020-10-14 12:52:47 +01:00
Jonathan Wakely a1b6b01361 libstdc++: Improve comments for check_effective_target_cxx11-abi
libstdc++-v3/ChangeLog:

	* testsuite/lib/libstdc++.exp (check_effective_target_cxx11-abi):
	Add comments about which test flags get used by the check.
2020-10-14 12:52:47 +01:00
Jonathan Wakely 5e961dba46 libstdc++: Improve comments in std::string tests
The COW std::string does support some features of C++11 allocators, just
not propagation. Change some comments in the tests to be more precise
about that.

libstdc++-v3/ChangeLog:

	* testsuite/21_strings/basic_string/allocator/char/copy.cc: Make
	comment more precise about what isn't supported by COW strings.
	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/char/move.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/char/swap.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
	Likewise.
	* testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
	Likewise.
2020-10-14 12:52:47 +01:00
Jonathan Wakely 5ae9ddd480 libstdc++: Enable tests that incorrectly require cxx11-abi
These tests were not being run when -D_GLIBCXX_USE_CXX11_ABI=0 was added
to the test flags, but they actually work OK with the old string.

libstdc++-v3/ChangeLog:

	* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
	Do not require cxx11-abi effective target.
	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
	Likewise.
	* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
2020-10-14 12:52:46 +01:00
Jonathan Wakely dc38e25524 libstdc++: Implement LWG 3706 for COW strings
The basic_string deduction guides are defined for the old ABI, but the
tests are currently disabled. This is because a single case fails when
using the old ABI, which is just because LWG 3706 isn't implemented for
the old ABI. That can be done easily, and the tests can be enabled.

libstdc++-v3/ChangeLog:

	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string(const _CharT*, const _Alloc&)): Constrain to
	require an allocator-like type to fix CTAD ambiguity (LWG 3706).
	* testsuite/21_strings/basic_string/cons/char/deduction.cc:
	Remove dg-skip-if.
	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
	Likewise.
2020-10-14 12:51:40 +01:00
Mark Eggleston 4d2a56a0f7 Fortran : ICE in build_field PR95614
Local identifiers can not be the same as a module name.  Original
patch by Steve Kargl resulted in name clashes between common block
names and local identifiers.  A local identifier can be the same as
a global identier if that identifier is not a module or a program.
The original patch was modified to reject global identifiers that
represent a module or a program.

2020-10-14  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/ChangeLog:

	PR fortran/95614
	* decl.c (gfc_get_common): Use gfc_match_common_name instead
	of match_common_name.
	* decl.c (gfc_bind_idents): Use gfc_match_common_name instead
	of match_common_name.
	* match.c : Rename match_common_name to gfc_match_common_name.
	* match.c (gfc_match_common): Use gfc_match_common_name instead
	of match_common_name.
	* match.h : Rename match_common_name to gfc_match_common_name.
	* resolve.c (resolve_common_vars): Check each symbol in a
	common block has a global symbol.  If there is a global symbol
	issue an error if the symbol type is a module or a program.

2020-10-14  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/ChangeLog:

	PR fortran/95614
	* gfortran.dg/pr95614_1.f90: New test.
	* gfortran.dg/pr95614_2.f90: New test.
	* gfortran.dg/pr95614_3.f90: New test.
	* gfortran.dg/pr95614_4.f90: New test.
2020-10-14 11:08:09 +01:00
Jan Hubicka c7b6a7587f Support ofsetted parameters in local modref
2020-10-14  Jan Hubicka  <hubicka@ucw.cz>

	* doc/invoke.texi: (ipa-jump-function-lookups): Document param.
	* ipa-modref.c (merge_call_side_effects): Use
	unadjusted_ptr_and_unit_offset.
	* ipa-prop.c (unadjusted_ptr_and_unit_offset): New function.
	* ipa-prop.h (unadjusted_ptr_and_unit_offset): Declare.
	* params.opt: (-param-ipa-jump-function-lookups): New.
2020-10-14 11:44:30 +02:00
Jan Hubicka 87d75a11a5 Fix SCC discovery in ipa-modref
this patch fixes SCC discovery in ipa-modref which is causing misoptimization
of gnat bootstrapped with LTO, PGO and -O3.

I also improved debug info and spotted wrong parameter to ignore_stores_p
(which is probably quite harmless since we only inline matching functions, but
it is better to be consistent).

	PR bootstrap/97350
	* ipa-modref.c (ignore_edge): Do not ignore inlined edes.
	(ipa_merge_modref_summary_after_inlining): Improve debug output and
	fix parameter of ignore_stores_p.
2020-10-14 10:54:00 +02:00
Jakub Jelinek 2fa5f5c42b libgomp: Fix a typo in documentation
2020-10-14  Jakub Jelinek  <jakub@redhat.com>

	* libgomp.texi (omp_get_supported_active_levels): Fix a typo.
2020-10-14 10:17:11 +02:00
Nikhil Benesch 7e5aeda340 runtime: populate signal PC on NetBSD
The NetBSD libc provides an architecture-independent macro that can
extract the PC from a ucontext struct.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261740
2020-10-13 22:21:53 -07:00
Nikhil Benesch 7355c1df55 syscall: port fix for netbsd unix sockets from upstream
NetBSD does not include the null terminator when in its reported socket
length. Port the upstream bugfix for the issue (#6627).

This was likely missed during the usual upstream merge because the gc
and gccgo socket implementations have diverged quite a bit.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261741
2020-10-13 22:19:35 -07:00
Kito Cheng 78fbe731a8 PR target/96759 - Handle global variable assignment from misaligned structure/PARALLEL return values.
In g:70cdb21e579191fe9f0f1d45e328908e59c0179e, DECL/global variable has handled
misaligned stores, but it didn't handle PARALLEL values, and I refer the
other part of this function, I found the PARALLEL need handled by
emit_group_* functions, so I add a check, and using emit_group_store if
storing a PARALLEL value, also checked this change didn't break the
testcase(gcc.target/arm/unaligned-argument-3.c) added by the orginal changes.

For riscv64 target, struct S {int a; double b;} will pack into a parallel
value to return and it has TImode when misaligned access is supported,
however TImode required 16-byte align, but it only 8-byte align, so it go to
the misaligned stores handling, then it will try to generate move
instruction from a PARALLEL value.

Tested on following target without introduced new reguression:
  - riscv32/riscv64 elf
  - x86_64-linux
  - arm-eabi

v2 changes:
  - Use maybe_emit_group_store instead of emit_group_store.
  - Remove push_temp_slots/pop_temp_slots, emit_group_store only require
    stack temp slot when dst is CONCAT or PARALLEL, however
    maybe_emit_group_store will always use REG for dst if needed.

gcc/ChangeLog:

	PR target/96759
	* expr.c (expand_assignment): Handle misaligned stores with PARALLEL
	value.

gcc/testsuite/ChangeLog:

	PR target/96759
	* g++.target/riscv/pr96759.C: New.
	* gcc.target/riscv/pr96759.c: New.
2020-10-14 11:47:33 +08:00
Clément Chigot 72b3833822 reflect: ensure uniqueness of type descriptors on AIX.
On AIX, duplication of type descriptors can occur if one is
declared in the libgo and one in the Go program being compiled.
The AIX linker isn't able to merge them together as Linux one does.
One solution is to always load libgo first but that needs a huge mechanism in
gcc core. Thus, this patch ensures that the duplication isn't visible
for the end user.

In reflect and internal/reflectlite, the comparison of rtypes is made on their
name and not only on their addresses.

In reflect, toType() function is using a canonicalization map to force rtypes
having the same rtype.String() to return the same Type. This can't be made in
internal/reflectlite as it needs sync package. But, for now, it doesn't matter
as internal/reflectlite is not widely used.

Fixes golang/go#39276

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/260158
2020-10-13 17:54:37 -07:00
GCC Administrator bdd74cc20c Daily bump. 2020-10-14 00:16:24 +00:00
Kwok Cheung Yeung 8949b985db openmp: Add support for the omp_get_supported_active_levels runtime library routine
This patch implements the omp_get_supported_active_levels runtime routine
from the OpenMP 5.0 specification, which returns the maximum number of
active nested parallel regions supported by this implementation.  The
current maximum (set using the omp_set_max_active_levels routine or the
OMP_MAX_ACTIVE_LEVELS environment variable) cannot exceed this number.

2020-10-13  Kwok Cheung Yeung  <kcy@codesourcery.com>

	libgomp/
	* env.c (gomp_max_active_levels_var): Initialize to
	gomp_supported_active_levels.
	(initialize_env): Limit gomp_max_active_levels_var to be at most
	equal to gomp_supported_active_levels.
	* fortran.c (omp_get_supported_active_levels): Add ialias_redirect.
	(omp_get_supported_active_levels_): New.
	* icv.c (omp_set_max_active_levels): Limit gomp_max_active_levels_var
	to at most equal to gomp_supported_active_levels.
	(omp_get_supported_active_levels): New.
	* libgomp.h (gomp_supported_active_levels): New.
	* libgomp.map (OMP_5.0.1): Add omp_get_supported_active_levels and
	omp_get_supported_active_levels_.
	* libgomp.texi (omp_get_supported_active_levels): New.
	(omp_set_max_active_levels): Update.  Add reference to
	omp_get_supported_active_levels.
	* omp.h.in (omp_get_supported_active_levels): New.
	* omp_lib.f90.in (omp_get_supported_active_levels): New.
	* omp_lib.h.in (omp_get_supported_active_levels): New.
	* testsuite/libgomp.c/lib-2.c (main): Check omp_get_max_active_levels
	against omp_get_supported_active_levels.
	* testsuite/libgomp.fortran/lib4.f90 (lib4): Likewise.
2020-10-13 13:21:02 -07:00
Nuno Lopes 5204cc561a libstdc++: Fix doxygen comment for std::any_of
libstdc++-v3/ChangeLog:

	* include/bits/stl_algo.h (any_of): Fix incorrect description
	in comment.
2020-10-13 20:21:55 +01:00
Jakub Jelinek f76949cee9 combine: Fix up simplify_shift_const_1 for nested ROTATEs [PR97386]
The following testcases are miscompiled (the first one since my improvements
to rotate discovery on GIMPLE, the other one for many years) because
combiner optimizes nested ROTATEs with narrowing SUBREG in between (i.e.
the outer rotate is performed in shorter precision than the inner one) to
just one ROTATE of the rotated constant.  While that (under certain
conditions) can work for shifts, it can't work for rotates where we can only
do that with rotates of the same precision.

2020-10-13  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/97386
	* combine.c (simplify_shift_const_1): Don't optimize nested ROTATEs if
	they have different modes.

	* gcc.c-torture/execute/pr97386-1.c: New test.
	* gcc.c-torture/execute/pr97386-2.c: New test.
2020-10-13 19:13:26 +02:00
Jonathan Wakely 0e0beddd7f libstdc++: Update C++20 status documentation
libstdc++-v3/ChangeLog:

	* doc/xml/manual/evolution.xml: Document some API changes
	and deprecations.
	* doc/xml/manual/intro.xml: Document LWG 2499.
	* doc/xml/manual/status_cxx2020.xml: Update status.
	* doc/html/*: Regenerate.
2020-10-13 17:40:43 +01:00
Jonathan Wakely 16d0b033ca libstdc++: Remove trailing whitespace from XML docs
libstdc++-v3/ChangeLog:

	* doc/xml/book.txml: Remove trailing whitespace.
	* doc/xml/chapter.txml: Likewise.
	* doc/xml/class.txml: Likewise.
	* doc/xml/gnu/fdl-1.3.xml: Likewise.
	* doc/xml/gnu/gpl-3.0.xml: Likewise.
	* doc/xml/manual/abi.xml: Likewise.
	* doc/xml/manual/algorithms.xml: Likewise.
	* doc/xml/manual/allocator.xml: Likewise.
	* doc/xml/manual/appendix_contributing.xml: Likewise.
	* doc/xml/manual/appendix_free.xml: Likewise.
	* doc/xml/manual/appendix_porting.xml: Likewise.
	* doc/xml/manual/atomics.xml: Likewise.
	* doc/xml/manual/auto_ptr.xml: Likewise.
	* doc/xml/manual/backwards_compatibility.xml: Likewise.
	* doc/xml/manual/bitmap_allocator.xml: Likewise.
	* doc/xml/manual/build_hacking.xml: Likewise.
	* doc/xml/manual/codecvt.xml: Likewise.
	* doc/xml/manual/concurrency.xml: Likewise.
	* doc/xml/manual/concurrency_extensions.xml: Likewise.
	* doc/xml/manual/configure.xml: Likewise.
	* doc/xml/manual/containers.xml: Likewise.
	* doc/xml/manual/ctype.xml: Likewise.
	* doc/xml/manual/debug.xml: Likewise.
	* doc/xml/manual/debug_mode.xml: Likewise.
	* doc/xml/manual/diagnostics.xml: Likewise.
	* doc/xml/manual/documentation_hacking.xml: Likewise.
	* doc/xml/manual/evolution.xml: Likewise.
	* doc/xml/manual/internals.xml: Likewise.
	* doc/xml/manual/intro.xml: Likewise.
	* doc/xml/manual/io.xml: Likewise.
	* doc/xml/manual/iterators.xml: Likewise.
	* doc/xml/manual/locale.xml: Likewise.
	* doc/xml/manual/localization.xml: Likewise.
	* doc/xml/manual/messages.xml: Likewise.
	* doc/xml/manual/mt_allocator.xml: Likewise.
	* doc/xml/manual/numerics.xml: Likewise.
	* doc/xml/manual/parallel_mode.xml: Likewise.
	* doc/xml/manual/policy_data_structures.xml: Likewise.
	* doc/xml/manual/prerequisites.xml: Likewise.
	* doc/xml/manual/shared_ptr.xml: Likewise.
	* doc/xml/manual/spine.xml: Likewise.
	* doc/xml/manual/status_cxxtr1.xml: Likewise.
	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
	* doc/xml/manual/strings.xml: Likewise.
	* doc/xml/manual/support.xml: Likewise.
	* doc/xml/manual/test.xml: Likewise.
	* doc/xml/manual/test_policy_data_structures.xml: Likewise.
	* doc/xml/manual/using.xml: Likewise.
	* doc/xml/manual/using_exceptions.xml: Likewise.
	* doc/xml/manual/utilities.xml: Likewise.
	* doc/html/*: Regenerate.
2020-10-13 16:50:41 +01:00