Commit graph

182523 commits

Author SHA1 Message Date
Ian Lance Taylor
cfcbb4227f libgo: update to Go1.16beta1 release
This does not yet include support for the //go:embed directive added
in this release.

	* Makefile.am (check-runtime): Don't create check-runtime-dir.
	(mostlyclean-local): Don't remove check-runtime-dir.
	(check-go-tool, check-vet): Copy in go.mod and modules.txt.
	(check-cgo-test, check-carchive-test): Add go.mod file.
	* Makefile.in: Regenerate.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280172
2020-12-30 15:13:24 -08:00
Uros Bizjak
0696141107 i386: Remove unnecessary clobbers from combine splitters.
There is no need for combine splitters to emit insn patterns with clobbers,
the pass is smart enough to add clobbers to patterns  as necessary.

2020-12-30  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	* config/i386/i386.md: Remove unnecessary clobbers
	from combine splitters.
2020-12-30 17:42:15 +01:00
Iain Buclaw
209da90b40 d: Simplify quoting characters in deps_add_target
The implementation in d-lang.cc was based on what was present in libcpp.
This synchronizes the escaping logic to match the current version.

gcc/d/ChangeLog:

	* d-lang.cc (deps_add_target): Handle quoting ':' character.
	Reimplement backslash tracking.
2020-12-30 11:27:53 +01:00
Iain Buclaw
ac78516b27 d: Give the result of evaluated expressions a location
CST trees that were converted back to a D front-end AST node lost all
location information of the original expression.  Now this is propagated
on to the literal expression.

gcc/d/ChangeLog:

	* d-tree.h (d_eval_constant_expression): Add location argument.
	* d-builtins.cc (d_eval_constant_expression): Give generated constants
	a proper file location.
	* d-compiler.cc (Compiler::paintAsType): Pass expression location to
	d_eval_constant_expression.
	* d-frontend.cc (eval_builtin): Likewise.
2020-12-30 11:27:52 +01:00
Jakub Jelinek
8f7941ca37 i386: Optimize pmovmskb on inverted vector to inversion of pmovmskb result [PR98461]
The following patch adds combine splitters to optimize:
-       vpcmpeqd        %ymm1, %ymm1, %ymm1
-       vpandn  %ymm1, %ymm0, %ymm0
        vpmovmskb       %ymm0, %eax
+       notl    %eax
etc. (for vectors with less than 32 elements with xorl instead of notl).

2020-12-30  Jakub Jelinek  <jakub@redhat.com>

	PR target/98461
	* config/i386/sse.md (<sse2_avx2>_pmovmskb): Add splitters
	for pmovmskb of NOT vector.

	* gcc.target/i386/sse2-pr98461.c: New test.
	* gcc.target/i386/avx2-pr98461.c: New test.
2020-12-30 11:21:24 +01:00
GCC Administrator
86b3edf1ff Daily bump. 2020-12-30 00:16:25 +00:00
Paul Thomas
eeb145317b Fortran: Correct missing structure constructor comps. [PR97612].
2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/97612
	* primary.c (build_actual_constructor): Missing allocatable
	components are set unallocated using EXPR_NULL. Then missing
	components are tested for a default initializer.

gcc/testsuite/
	PR fortran/97612
	* gfortran.dg/structure_constructor_17.f90: New test.
2020-12-29 17:44:48 +00:00
Paul Thomas
feae0af827 Fortran: Fix deferred character lengths in array constructors [PR93833].
2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/93833
	* trans-array.c (get_array_ctor_var_strlen): If the character
	length backend_decl cannot be found, convert the expression and
	use the string length. Clear up some minor white space issues
	in the rest of the file.

gcc/testsuite/
	PR fortran/93833
	* gfortran.dg/deferred_character_36.f90 : New test.
2020-12-29 17:37:25 +00:00
Claudiu Zissulescu
02a2d78f7a arc: generate mac(u) insn instead of macd(u) when destination is accl
Generate MAC(U) instruction instead of MACD(U) when the destination
register is already choosen as ACCL register.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (maddsidi4_split): Skip macd gen, use mac insn
	instead.
	(macd): Update register letters.
	(umaddsidi4_split): Skip macdu gen, use macu insn instead.
	(macdu): Update register letters.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:41:20 +02:00
Claudiu Zissulescu
8a90673bed arc: flip if-condition predicates in secondary reload hook
The ARC code contains code which should only work with the old reload
pass. Such code is found in arc_secondary_reload hook, however it was
not properly quarded. Reverse the if-condition predicate such that
req_equiv_mem is called when lra is not in progress.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_secondary_reload): Flip if-condition
	predicates.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:41:20 +02:00
Claudiu Zissulescu
5ccd07e329 arc: Make use reg_renumber safe.
The REGNO_OK_FOR_BASE_P is using reg_renumber array. However, it is
not always defined. Use it only when it is defined.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined
	reg_renumber.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:41:20 +02:00
Claudiu Zissulescu
6c80603413 arc: Update test pattern.
gcc/testsuite
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* gcc.target/arc/loop-3.c: Update test pattern.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:41:19 +02:00
Claudiu Zissulescu
e51727c691 arc: Fix cached to uncached moves.
We need an temporary register when moving data from a cached memory to
an uncached memory. Fix this issue and add a test for it.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (prepare_move_operands): Use a temporary
	registers when we have cached mem-to-uncached mem moves.

gcc/testsuite/
2020-12-29  Vladimir Isaev  <isaev@synopsys.com>

	* gcc.target/arc/uncached-9.c: New test.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:41:03 +02:00
Claudiu Zissulescu
052870c3d1 arc: Don't use predicated vadd2 instructions in mov patterns.
Update movdi, movdf and mov vectors not to use predicated vadd2
instructions. vadd2 is used as a "fast" move in these patterns. This
fixes a number of failures in dejagnu.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (movdi_insn): Update pattern, no predicated
	vadd2 usage.
	(movdf_insn): Likewise.
	* config/arc/simdext.md (movVEC_insn): Likewise.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29 13:30:04 +02:00
Uros Bizjak
d2754fbb65 i386: Rounding functions TLC
Use copy_to_reg where appropriate, use int_mode_for_mode
and fix comment indentation.

2020-12-29  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	* config/i386/i386-expand.c (ix86_gen_TWO52): Use REAL_MODE_FORMAT
	to determine number of mantissa bits.  Use real_2expN instead
	of real_ldexp.
	(ix86_expand_rint): Use copy_to_reg.
	(ix86_expand_floorceildf_32): Ditto.
	(ix86_expand_truncdf_32): Ditto.
	(ix86_expand_rounddf_32): Ditto.
	(ix86_expand_floorceil): Use copy_to_reg and int_mode_for_mode.
	(ix86_expand_trunc): Ditto.
	(ix86_expand_round): Ditto.
2020-12-29 08:44:20 +01:00
GCC Administrator
2d3425a52f Daily bump. 2020-12-29 00:16:34 +00:00
Gerald Pfeifer
c33fd16076 libgomp: Avoid bad "up" link in libgomp docs
The libgomp texinfo docs lead to an invalid "up" link on the Top node,
which we can avoid similarly to the Top link in the main GCC manual.

2020-12-28  Sandra Loosemore <sandra@codesourcery.com>

libgomp/
	* libgomp.texi (Top): Avoid bad "up" link.
2020-12-28 23:53:29 +01:00
Gerald Pfeifer
7e999bd84f doc: Remove HSAIL from Language Standards
Support for HSAIL has been deprecated with GCC 10 and their web server
has been down for weeks.

gcc/
2020-12-28  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/standards.texi (HSAIL): Remove section.
2020-12-28 21:48:20 +01:00
Uros Bizjak
81615bb072 i386: Fix __builtin_rint with FE_DOWNWARD rounding direction [PR96793]
x86_expand_rint expander uses x86_sse_copysign_to_positive, which
is unable to change the sign from - to +.  When FE_DOWNWARD rounding
direction is in effect, the expanded sequence that involves subtraction
can trigger x - x = -0.0 special rule.  x86_sse_copysign_to_positive
fails to change the sign of the intermediate value, assumed to always
be positive, back to positive.

The patch adds one extra fabs that strips the sign from the intermediate
value when flag_rounding_math is in effect.

2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	PR target/96793
	* config/i386/i386-expand.c (ix86_expand_rint):
	Remove the sign of the intermediate value for flag_rounding_math.

gcc/testsuite/
	PR target/96793
	* gcc.target/i386/pr96793-2.c: New test.
2020-12-28 21:30:08 +01:00
Uros Bizjak
97d3ddcfc9 i386: Use existing temporary register in rounding functions
It is possible to avoid the call to force_reg and use existing
temporary register in ix86_expand_trunc, ix86_expand_round and
ix86_expand_rounddf_32 expanders.

2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	* config/i386/i386-expand.c (ix86_expand_trunc): Use
	existing temporary register to avoid a call to force_reg.
2020-12-28 16:53:56 +01:00
Hongyu Wang
12ae2bc708 Fix standard name for zero/sign extend expanders
gcc/ChangeLog:

	* config/i386/i386.md (optab): New code attr.
	* config/i386/sse.md (<code>v32qiv32hi2): Rename to ...
	(<optab>v32qiv32hi2) ... this.
	(<code>v16qiv16hi2): Likewise.
	(<code>v8qiv8hi2): Likewise.
	(<code>v16qiv16si2): Likewise.
	(<code>v8qiv8si2): Likewise.
	(<code>v4qiv4si2): Likewise.
	(<code>v16hiv16si2): Likewise.
	(<code>v8hiv8si2): Likewise.
	(<code>v4hiv4si2): Likewise.
	(<code>v8qiv8di2): Likewise.
	(<code>v4qiv4di2): Likewise.
	(<code>v2qiv2di2): Likewise.
	(<code>v8hiv8di2): Likewise.
	(<code>v4hiv4di2): Likewise.
	(<code>v2hiv2di2): Likewise.
	(<code>v8siv8di2): Likewise.
	(<code>v4siv4di2): Likewise.
	(<code>v2siv2di2): Likewise.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/pr92658-avx2-2.c: New test.
	* gcc.target/i386/pr92658-avx512bw-2.c: Likewise.
	* gcc.target/i386/pr92658-sse4-2.c: Likewise.
2020-12-28 16:28:43 +08:00
GCC Administrator
adfe99ad8f Daily bump. 2020-12-28 00:16:28 +00:00
Gerald Pfeifer
9a48892bea doc: New source for "Memory Model for Static Analysis" paper
gcc:

2020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/analyzer.texi (Analyzer Internals): Find a new source for
	the "A Memory Model for Static Analysis of C Programs" paper.
2020-12-27 21:40:36 +01:00
Gerald Pfeifer
15b99a6b83 libstdc++: Update link to Arm ABI
libstdc++-v3:

2020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/abi.xml: Update link to Arm ABI.
	* doc/html/manual/abi.html: Regenerate.
2020-12-27 21:25:32 +01:00
Jeff Law
bbd5868bb4 Fix regressions for iq2000-elf after recent changes
gcc/testsuite
	* gcc.dg/tree-ssa/asm-2.c: Use different register for iq2000.
	* gcc.dg/tree-ssa/asm-3.c: Likewise.
2020-12-27 11:43:36 -07:00
Paul Thomas
c4a6789815 Fortran: Fix some select rank issues [PR97694 and 97723].
2020-12-27  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/97694
	PR fortran/97723
	* check.c (allocatable_check): Select rank temporaries are
	permitted even though they are treated as associate variables.
	* resolve.c (gfc_resolve_code): Break on select rank as well as
	select type so that the block os resolved.
	* trans-stmt.c (trans_associate_var): Class associate variables
	that are optional dummies must use the backend_decl.

gcc/testsuite/
	PR fortran/97694
	PR fortran/97723
	* gfortran.dg/select_rank_5.f90: New test.
2020-12-27 14:59:38 +00:00
Gerald Pfeifer
0e283e2c9f libstdc++: Move Valgrind references to https
libstdc++-v3:

2020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/debug.xml: Move Valgrind references to https.
	* doc/html/manual/debug.html: Regenerate.
2020-12-27 11:17:21 +01:00
GCC Administrator
521bc8e1b0 Daily bump. 2020-12-27 00:16:18 +00:00
Iain Sandoe
6037ebeff1 Objective-C++ : Fix up testcase EOF diagnostics.
Some Objective-C++ testcases need modification in reponse to the
solution to PR 96045.

gcc/testsuite/ChangeLog:

	PR c++/96045
	* obj-c++.dg/property/property-neg-6.mm: Adjust EOF
	diagnostic location.
	* obj-c++.dg/syntax-error-10.mm: Likewise.
	* obj-c++.dg/syntax-error-8.mm: Likewise.
	* obj-c++.dg/syntax-error-9.mm: Likewise.
2020-12-26 19:51:15 +00:00
Paul Thomas
c7256c8260 Fortran: Correction to recent patch in light of comments [PR98022].
2020-12-26  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/98022
	* data.c (gfc_assign_data_value): Throw an error for inquiry
	references. Follow with corrected code that would provide the
	expected result and provides clean error recovery.

gcc/testsuite/
	PR fortran/98022
	* gfortran.dg/data_inquiry_ref.f90: Change to dg-compile and
	add errors for inquiry references.
2020-12-26 16:44:24 +00:00
Paul Thomas
0175d45d14 Fix failures with -m32 and some memory leaks.
2020-12-23  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/83118
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Make
	sure that class expressions are captured for dummy arguments by
	use of gfc_get_class_from_gfc_expr otherwise the wrong vptr is
	used.
	* trans-expr.c (gfc_get_class_from_gfc_expr): New function.
	(gfc_get_class_from_expr): If a constant expression is
	encountered, return NULL_TREE;
	(gfc_trans_assignment_1): Deallocate rhs allocatable components
	after passing derived type function results to class lhs.
	* trans.h : Add prototype for gfc_get_class_from_gfc_expr.
2020-12-26 15:08:11 +00:00
Gerald Pfeifer
9d426e4dbc libstdc++: Update link to Intel/GNU compatibility paper
libstdc++-v3:

2020-12-26  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/abi.xml: Update link to Intel's compatibility
	with GNU compilers document.
	* doc/html/manual/abi.html: Regenerate.
2020-12-26 13:37:48 +01:00
GCC Administrator
5b4da2d9e1 Daily bump. 2020-12-26 00:16:19 +00:00
Gerald Pfeifer
a746898dff libstdc++: Update link to Java docs
libstdc++-v3:

2020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/messages.xml: Update link to Java docs.
	* doc/html/manual/facets.html: Ditto.
2020-12-25 19:14:35 +01:00
Gerald Pfeifer
6a25dda42d doc: Fix reference to libcody
github.com requests (via 301 Moved Permanently) to use gibhub.com,
not www.github.com.

gcc/ChangeLog:

2020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/invoke.texi (C++ Module Mapper): Fix reference to libcody.
2020-12-25 15:41:56 +01:00
Harald Anlauf
6e36772ba6 PR93685 - ICE in gfc_constructor_append_expr, at fortran/constructor.c:135
Fix handling of F2018 enhancements to DATA statements that allows
initialization of pointer components to derived types, and adjust error
handling for the CHARACTER case.

gcc/fortran/ChangeLog:

	* data.c (gfc_assign_data_value): Restrict use of
	create_character_initializer to constant initializers.
	* trans-expr.c (gfc_conv_initializer): Ensure that character
	initializer is constant, otherwise fall through to get the same
	error handling as for non-character cases.

gcc/testsuite/ChangeLog:

	* gfortran.dg/pr93685_1.f90: New test.
	* gfortran.dg/pr93685_2.f90: New test.
2020-12-25 15:40:39 +01:00
Gerald Pfeifer
4ee8e5949a libstdc++: Convert three doxygen.nl links to https
libstdc++-v3:
2020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/documentation_hacking.xml: Convert three links
	to doxygen.nl to https.
	* doc/html/manual/documentation_hacking.html: Regenerate.
2020-12-25 15:20:43 +01:00
GCC Administrator
8daa719bdc Daily bump. 2020-12-25 00:16:20 +00:00
Iain Sandoe
662b9c55cf C++ : Add the -stdlib= option.
This option allows the user to specifiy alternate C++ runtime libraries,
for example when a platform uses libc++ as the installed C++ runtime.

We introduce the command line option: -stdlib= which is the user-facing
mechanism to select the C++ runtime to be used when compiling and linking
code.  This is the same option spelling as that used by clang to allow the
use of libstdc++.

The availability (and thus function) of the option are a configure-time
choice using the configuration control:
--with-gxx-libcxx-include-dir=

Specification of the path for the libc++ headers, enables the -stdlib=
option (using the path as given), default values are set when the path
is unconfigured.

If --with-gxx-libcxx-include-dir is given together with --with-sysroot=,
then we test to see if the include path starts with the sysroot and, if so,
record the sysroot-relative component as the local path.  At runtime, we
prepend the sysroot that is actually active.

At link time, we use the C++ runtime in force and (if that is libc++) also
append the libc++abi ABI library. As for other cases, if a target sets the
name pointer for the ABI library to NULL the G++ driver will omit it from
the link line.

gcc/ChangeLog:

	* configure.ac: Add gxx-libcxx-include-dir handled
	in the same way as the regular cxx header directory.
	* Makefile.in: Regenerated.
	* config.in: Likewise.
	* configure: Likewise.
	* cppdefault.c: Pick up libc++ headers if the option
	is enabled.
	* cppdefault.h (struct default_include): Amend comments
	to reflect the extended use of the cplusplus field.
	* incpath.c (add_standard_paths): Allow for multiple
	c++ header include path variants.
	* doc/invoke.texi: Document the -stdlib= option.

gcc/c-family/ChangeLog:

	* c.opt: Add -stdlib= option and enumerations for
	libstdc++ and libc++.

gcc/cp/ChangeLog:

	* g++spec.c (LIBCXX, LIBCXX_PROFILE, LIBCXX_STATIC): New.
	(LIBCXXABI, LIBCXXABI_PROFILE, LIBCXXABI_STATIC): New.
	(enum stdcxxlib_kind): New.
	(lang_specific_driver): Allow selection amongst multiple
	c++ runtime libraries.
2020-12-24 10:08:42 +00:00
Kito Cheng
168be2b3af RISC-V: Fix python3 compatibility for multilib-generator
The subprocess return string is raw bytes in python3, it must decode
before used as string, verifed with python2 and python3.

gcc/ChangeLog:

	* config/riscv/multilib-generator (arch_canonicalize): Call
	decode for the subprocess return value.
2020-12-24 10:59:14 +08:00
Ian Lance Taylor
085fd2a46e compiler: parenthesize channel type strings if necessary
Avoid the ambiguity between "chan <- (chan int)" and "chan (<- chan int)".
This parenthesizes the same way as the gc compiler.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279961
2020-12-23 17:50:31 -08:00
GCC Administrator
85d8ebcfc2 Daily bump. 2020-12-24 00:16:26 +00:00
Martin Sebor
0df311657d PR middle-end/98160 - ICE in warn_dealloc_offset on member placement new and delete
gcc/ChangeLog:

	PR middle-end/98160
	* builtins.c (warn_dealloc_offset): Avoid assuming calls are made
	through declared functions and not pointers.

gcc/testsuite/ChangeLog:

	PR middle-end/98160
	* g++.dg/warn/pr98160.C: New test.
2020-12-23 16:38:18 -07:00
Martin Sebor
fdd8560cce PR c++/98413 - ICE on placement new and member pointer
gcc/ChangeLog:

	PR c++/98413
	* builtins.c (get_offset_range): Avoid non-integers/-pointers.

gcc/testsuite/ChangeLog:

	PR c++/98413
	* g++.dg/warn/pr98413.C: New test.
2020-12-23 16:36:47 -07:00
Olivier Hainque
eb81c997d8 Account for VxWorks headers in libstdc++ test on names
Undefine various macros unexpectedly defined by VxWorks headers.


for  libstdc++-v3/ChangeLog

	* testsuite/17_intro/names.cc: Account for VxWorks headers.
2020-12-23 20:27:36 -03:00
Joel Brobecker
36c08a8f21 mark some tests in gcc.target/arm as requiring "fpic" support
Require effective target fpic support in tests using pic flags.


for  gcc/testsuite/ChangeLog

	* gcc.target/arm/data-rel-1.c: Require "fpic" support.
	* gcc.target/arm/data-rel-2.c: Likewise.
	* gcc.target/arm/data-rel-3.c: Ditto.
	* gcc.target/arm/pr44788.c: Ditto.
	* gcc.target/arm/pr52006.c: Ditto.
	* gcc.target/arm/pr59858.c: Ditto.
	* gcc.target/arm/tlscall.c: Ditto.
	* gcc.target/arm/require-pic-register-loc.c: Ditto.
	Adjust line numbers.
2020-12-23 20:24:29 -03:00
Nathan Sidwell
745f22096c c++: EOF location [PR 96045]
Setting the EOF token location to be the start of a line just after
the ending newline is not most helpful.  While that location is
probably the right place to report preprocessing and lexing issues,
when parsing, the location just after the last token is better.  That
way we get to point at some actual text.  Setting the location from
the previous token has the advantage over just setting the location to
be the end of the final line, in that any ending comments do not get
considered, which I think is better.

	PR c++/96045
	gcc/cp/
	* parser.c (cp_lexer_new_main): Adjust EOF token location.
	gcc/testsuite/
	* g++.dg/diagnostic/pr96045-1.C: New.
	* g++.dg/diagnostic/pr96045-2.C: New.
	* g++.dg/diagnostic/pr96045-3.C: New.
	* c-c++-common/goacc/pr79428-1.c: Adjust EOF diagnostic location.
	* c-c++-common/gomp/pr79428-2.c: Likewise
	* c-c++-common/raw-string-6.c: Likewise
	* g++.dg/cpp0x/decltype63.C: Likewise
	* g++.dg/cpp0x/gen-attrs-64.C: Likewise
	* g++.dg/cpp0x/pr68726.C: Likewise
	* g++.dg/cpp0x/pr78341.C: Likewise
	* g++.dg/cpp1y/pr65202.C: Likewise
	* g++.dg/cpp1y/pr65340.C: Likewise
	* g++.dg/cpp1y/pr68578.C: Likewise
	* g++.dg/cpp1z/class-deduction44.C: Likewise
	* g++.dg/diagnostic/unclosed-extern-c.C: Likewise
	* g++.dg/diagnostic/unclosed-function.C: Likewise
	* g++.dg/diagnostic/unclosed-namespace.C: Likewise
	* g++.dg/diagnostic/unclosed-struct.C: Likewise
	* g++.dg/ext/pr84598.C: Likewise
	* g++.dg/other/switch4.C: Likewise
	* g++.dg/parse/attr4.C: Likewise
	* g++.dg/parse/cond4.C: Likewise
	* g++.dg/parse/crash10.C: Likewise
	* g++.dg/parse/crash18.C: Likewise
	* g++.dg/parse/crash27.C: Likewise
	* g++.dg/parse/crash34.C: Likewise
	* g++.dg/parse/crash35.C: Likewise
	* g++.dg/parse/crash52.C: Likewise
	* g++.dg/parse/crash59.C: Likewise
	* g++.dg/parse/crash61.C: Likewise
	* g++.dg/parse/crash67.C: Likewise
	* g++.dg/parse/error14.C: Likewise
	* g++.dg/parse/error56.C: Likewise
	* g++.dg/parse/invalid1.C: Likewise
	* g++.dg/parse/parameter-declaration-1.C: Likewise
	* g++.dg/parse/parser-pr28152-2.C: Likewise
	* g++.dg/parse/parser-pr28152.C: Likewise
	* g++.dg/parse/pr68722.C: Likewise
	* g++.dg/parse/pr96258.C: Likewise
	* g++.dg/pr46852.C: Likewise
	* g++.dg/pr46868.C: Likewise
	* g++.dg/template/crash115.C: Likewise
	* g++.dg/template/crash43.C: Likewise
	* g++.dg/template/crash90.C: Likewise
	* g++.dg/template/error-recovery1.C: Likewise
	* g++.dg/template/error57.C: Likewise
	* g++.old-deja/g++.other/crash31.C: Likewise
2020-12-23 14:26:50 -08:00
Jason Merrill
612cf351c7 c++: Fix initializing empty base from prvalue [PR97597]
unsafe_return_slot_p wasn't recognizing an empty base as
potentially-overlapping, which it definitely is.

The change to build_base_path is to make the virtual conversion also
recognized by is_empty_base_ref; unsafe_return_slot_p doesn't to handle
virtual conversions, but hypothetical future callers might.

gcc/cp/ChangeLog:

	PR c++/97597
	* class.c (is_empty_base_ref): New.
	(build_base_path): Add NOP_EXPR after offset.
	* cp-tree.h (is_empty_base_ref): Declare it.
	* call.c (unsafe_return_slot_p): Call it.

gcc/testsuite/ChangeLog:

	PR c++/97597
	* g++.dg/init/empty3.C: New test.
2020-12-23 17:11:05 -05:00
Ian Lance Taylor
3932785450 compiler: nil-checked pointers and index expressions can trap
The compiler was treating indirections through pointers that had been
explicitly checked against nil and slice and string index expressions
as non-trapping memory references.  That is true for ordinary Go
programs, but it isn't true if the programs construct their own memory
addresses.  In particular it isn't true for the kinds of programs that
want to use runtime.SetPanicOnFault.

The effect of this will be slightly larger binaries, due to additional
exception information, and perhaps slightly less optimization.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279960
2020-12-23 14:08:52 -08:00
Jason Merrill
0a541e746c c++: Improve testcase [PR98332]
gcc/testsuite/ChangeLog:

	* g++.dg/cpp0x/constexpr-overflow3.C: Use INT_MAX.
2020-12-23 17:08:05 -05:00