Commit Graph

177887 Commits

Author SHA1 Message Date
Thomas Schwinge
aff43ac0ae Mark up unreachable OpenACC 'attach' code path
... introduced in commit 8e7e71ff24 (r279625)
"OpenACC 2.6 deep copy: libgomp parts".

	libgomp/
	* target.c (gomp_map_vars_existing): Assert 'kind !=
	GOMP_MAP_ATTACH'.
	(gomp_map_vars_internal): Clean up.
2020-06-30 17:48:36 +02:00
Martin Liska
e2c17dcb12
gcc-changelog: support older GitPython releases.
contrib/ChangeLog:

	* gcc-changelog/git_repository.py: Support older releases of
	GitPython when renamed_file was named renamed.
2020-06-30 17:45:36 +02:00
Iain Sandoe
eef63aacb2 coroutines: Fix a diagnostic trailing space warning.
A recently add diagnostic has a trailing space.
Fixed thus.

gcc/cp/ChangeLog:

	* coroutines.cc (morph_fn_to_coro): Remove trailing
	space in a diagnostic.
2020-06-30 16:32:39 +01:00
Christophe Lyon
3c3b422487 arm: Warn if IRQ handler is not compiled with -mgeneral-regs-only [PR target/94743]
The interrupt attribute does not guarantee that the FP registers are
saved, which can result in problems difficult to debug.

Saving the FP registers and status registers can be a large penalty,
so it's probably not desirable to do that all the time.

If the handler calls other functions, we'd likely need to save all of
them, for lack of knowledge of which registers they actually clobber.

This is even more obscure for the end-user when the compiler inserts
calls to helper functions such as memcpy (some multilibs do use FP
registers to speed it up).

In the PR, we discussed adding routines in libgcc to save the FP
context and saving only locally-clobbered FP registers, but this seems
to be too much work for the purpose, given that in general such
handlers try to avoid this kind of penalty.
I suspect we would also want new attributes to instruct the compiler
that saving the FP context is not needed.

In the mean time, emit a warning to suggest re-compiling with
-mgeneral-regs-only. Note that this can lead to errors if the code
uses floating-point and -mfloat-abi=hard, eg:
argument of type 'double' not permitted with -mgeneral-regs-only

This can be troublesome for the user, but at least this would make
him aware of the latent issue.

The patch adds several testcases:

- pr94734-1-hard.c checks that a warning is emitted when using
  -mfloat-abi=hard. Function IRQ_HDLR_Test can make implicit calls to
  runtime floating-point routines (or direct use of FP instructions),
  IRQ_HDLR_Test2 doesn't. We emit a warning in both cases, though.

- pr94734-1-softfp.c: same as above wih -mfloat-abi=softfp.

- pr94734-1-soft.c checks that no warning is emitted when using
  -mfloat-abi=soft when the same code as above.

- pr94734-2.c checks that no warning is emitted when using
  -mgeneral-regs-only.

- pr94734-3.c checks that no warning is emitted when using
  -mgeneral-regs-only even using float-point data.

2020-06-30  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743
	gcc/
	* config/arm/arm.c (arm_handle_isr_attribute): Warn if
	-mgeneral-regs-only is not used.

	gcc/testsuite/
	* gcc.misc-tests/arm-isr.c: Add -mgeneral-regs-only.
	* gcc.target/arm/empty_fiq_handler.c: Add -mgeneral-regs-only.
	* gcc.target/arm/interrupt-1.c: Add -mgeneral-regs-only.
	* gcc.target/arm/interrupt-2.c: Add -mgeneral-regs-only.
	* gcc.target/arm/pr70830.c: Add -mgeneral-regs-only.
	* gcc.target/arm/pr94743-1-hard.c: New test.
	* gcc.target/arm/pr94743-1-soft.c: New test.
	* gcc.target/arm/pr94743-1-softfp.c: New test.
	* gcc.target/arm/pr94743-2.c: New test.
	* gcc.target/arm/pr94743-3.c: New test.
2020-06-30 14:20:28 +00:00
Yang Yang
33d114f570 tree-optimization/95855 - Add checks to avoid spoiling if-conversion if
Add some checks in pass_splits_paths, so that pass_split_paths can
recognize the missed if-conversion opportunity and do not duplicate the
corresponding block.

2020-06-30 Yang Yang <yangyang305@huawei.com>

gcc/ChangeLog:

	PR tree-optimization/95855
	* gimple-ssa-split-paths.c (is_feasible_trace): Add extra
	checks to recognize a missed if-conversion opportunity when
	judging whether to duplicate a block.

gcc/testsuite/ChangeLog

	PR tree-optimization/95855
	* gcc.dg/tree-ssa/split-path-12.c: New testcase.
2020-06-30 15:54:07 +02:00
David Edelsohn
7d503e3299 testsuite: fix constexpr-is_literal.C deprecated c++17 and above.
std::is_literal_type is deprecated in C++17 and above.

This was introduced in c++11, but the testsuite list of standards now only
includes c++98 and c++14.  This patch limits the test to c++14_only to
prevent deprecation warnings.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* g++.dg/cpp0x/constexpr-is_literal.C: Limit test to -std=c++14.
2020-06-30 08:58:27 -04:00
Thomas Koenig
5958b926dc Use CHARACTER(kind) string for calculating the type hash.
This regression came about because of a change in the way
types are displayed in error messages.  The character
representation is also used to calculate the hashes for
our types, so this patch restores the old behavior if
we are indeed calculating a hash.

The test case also checks for the specific hash value because
changing that would be an ABI change, which we should not
be doing unintentionally.

gcc/fortran/ChangeLog:

2020-06-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95355
	* gfortran.h (gfc_typename): Add optional argument for_hash.
	* misc.c (gfc_typename): When for_hash is true, just retur
	  CHARACTER(kind).
	* class.c (gfc_intrinsic_hash_value): Call gfc_typename with
	  for_hash = true.
2020-06-30 13:10:20 +02:00
Jakub Jelinek
8dc933c12f c-family: Avoid ICEs on calls to internal functions [PR95963]
The following testcase ICEs since recent Martin's -Wnonnull changes,
we see a CALL_EXPR and ICE because CALL_EXPR_FN is NULL, which is
valid for internal function calls.  Internal function calls don't have a
function type, and will never have format_arg attribute on them nor will
serve as the i18n routines -Wformat cares about.

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

	PR c++/95963
	* c-common.c (check_function_arguments_recurse): Don't crash on
	calls to internal functions.

	* g++.dg/cpp1z/launder9.C: New test.
2020-06-30 11:42:54 +02:00
GCC Administrator
458f12eda1 Daily bump. 2020-06-30 09:02:21 +00:00
Martin Liska
b05c4c2c5d
gcc-changelog: support 'This revert commit' prefix.
contrib/ChangeLog:

	* gcc-changelog/git_check_commit.py: Print revision
	of original_info.
	* gcc-changelog/git_commit.py: Support Revert commits.
2020-06-30 10:56:06 +02:00
Martin Liska
de4676c923
gcc-changelog: come up with GitInfo wrapper.
contrib/ChangeLog:

	* gcc-changelog/git_check_commit.py: Use GitInfo
	* gcc-changelog/git_commit.py: Add GitInfo class.
	* gcc-changelog/git_email.py: Use GitInfo class.
	* gcc-changelog/git_repository.py: Likewise.
2020-06-30 10:56:05 +02:00
Iain Sandoe
9252a208f4 coroutines: Collect the function body rewrite code.
The standard describes a rewrite of the body of the user-authored
function (which wraps it in a try-catch block and provides the
initial and final suspend expressions).  The exact arrangement of
this was still in flux right up until the DIS and as a consequence
was a bit of a moving target.

The net result was a fragmented implementation of the parts of
the rewrite which is now impeding progress in fixing other issues.

This patch collates the rewrite action into a single function and
carries this out earlier.

gcc/cp/ChangeLog:

	* coroutines.cc (expand_one_await_expression): Remove
	code dealing with initial suspend.
	(build_actor_fn): Remove code special-casing initial
	and final suspend. Handle the final suspend and marking
	of the coroutine as done.
	(coro_rewrite_function_body): New.
	(bind_expr_find_in_subtree): Remove.
	(coro_body_contains_bind_expr_p): Remove.
	(morph_fn_to_coro): Split the rewrite of the original
	function into coro_rewrite_function_body and call it.
2020-06-30 08:22:05 +01:00
Joseph Myers
3b7272a2f7 Update gcc sv.po.
* sv.po: Update.
2020-06-29 23:57:16 +00:00
Ville Voutilainen
2635f9e508 Revert "Add a __nonnnull__ attribute to std::string's _CharT* constructor"
This reverts commit b26fd416fb.
2020-06-30 01:59:34 +03:00
Ian Lance Taylor
9bca676cc7 compiler: remove some erroneous code that was never run
The code accidentally called Type::type_descriptor rather than the
do_type_descriptor method.  Calling Type::type_descriptor with a second
argument of NULL would always crash.  Since that never happened,
it revealed that this code was never actually executed.

Fixes PR go/95970

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/240477
2020-06-29 14:29:39 -07:00
Harald Anlauf
583812c2e2 PR fortran/95978 - ICE in gfc_match_data, at fortran/decl.c:731
Catch NULL pointer dereference on invalid DATA statement.

gcc/fortran/
	PR fortran/95978
	* decl.c (gfc_match_data): Avoid NULL pointer dereference.
2020-06-29 23:20:53 +02:00
Thomas Koenig
95cdcf701d Do not generate recursion check for compiler-generated procedures.
This one-line fix removes a check for recursion for procedures
which are compiler-generated, such as finalizers or deallocation.
These need to be recursive, even if the user code should not be.

gcc/fortran/ChangeLog:

	PR fortran/95743
	* trans-decl.c (gfc_generate_function_code): Do not generate
	recursion check for compiler-generated procedures.
2020-06-29 23:11:30 +02:00
Segher Boessenkool
ace60939fd rs6000: Documentation updates for "future" rename
2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>

	* doc/extend.texi: Change references to "future architecture" to
	"ISA 3.1", "-mcpu=future" to "-mcpu=power10", and remove vaguer
	references to "future" (because the future is now).
2020-06-29 20:19:01 +00:00
David Edelsohn
d161c4b30e testsuite: Make char4-subscript.f90 regex endian neutral.
The testcase tests for little endian results.  This patch updates the
regex to accept either endianness.

gcc/testsuite/ChangeLog

2020-06-29  David Edelsohn  <dje.gcc@gmail.com>

	* gfortran.dg/char4-subscript.f90: Simplify regex.
	Accept big endian or little endian output.
2020-06-29 16:14:35 -04:00
Segher Boessenkool
4e06c4a344 rs6000: Rename isa attribute "fut" to "p10"
I missed this when grepping for "future".

2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>

	* config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
2020-06-29 20:11:12 +00:00
Roger Sayle
346bce6fe0 middle-end: Optimize (A&C)^(B&C) to (A^B)&C in simplify_rtx (take 3).
2020-06-29  Roger Sayle  <roger@nextmovesoftware.com>
gcc/ChangeLog:
	* simplify-rtx.c (simplify_distributive_operation): New function
	to un-distribute a binary operation of two binary operations.
	(X & C) ^ (Y & C) to (X ^ Y) & C, when C is simple (i.e. a constant).
	(simplify_binary_operation_1) <IOR, XOR, AND>: Call it from here
	when appropriate.
	(test_scalar_int_ops): New function for unit self-testing
	scalar integer transformations in simplify-rtx.c.
	(test_scalar_ops): Call test_scalar_int_ops for each integer mode.
	(simplify_rtx_c_tests): Call test_scalar_ops.
2020-06-29 17:37:51 +01:00
Marek Polacek
54980635c5 c++: Check uniqueness of concepts/variable templates [PR94553]
This patch wraps up PR94553.  Variable template names have no C
compatibility implications so they should be unique in their
declarative region.  It occurred to me that this applies to concepts
as well.  This is not specified in [basic.scope.declarative]/4.2
but that seems like a bug in the standard.

I couldn't use variable_template_p because that uses PRIMARY_TEMPLATE_P
which uses DECL_PRIMARY_TEMPLATE and that might not have been set up yet
(push_template_decl hasn't yet been called).  PRIMARY_TEMPLATE_P is
important to distinguish between a variable template and a variable in a
function template.  But I think we don't have to worry about that in
duplicate_decls: a template declaration cannot appear at block scope,
and additional checks in duplicate_decls suggest that it won't ever
see a TEMPLATE_DECL for a variable in a function template.  So
checking that the DECL_TEMPLATE_RESULT is a VAR_DECL seems to be fine.
I could have added a default argument to variable_template_p too to
avoid checking PRIMARY_TEMPLATE_P but it didn't seem worth the effort.

gcc/cp/ChangeLog:

	PR c++/94553
	* decl.c (duplicate_decls): Make sure a concept or a variable
	template is unique in its declarative region.

gcc/testsuite/ChangeLog:

	PR c++/94553
	* g++.dg/cpp1y/pr68578.C: Adjust dg-error.
	* g++.dg/cpp1y/var-templ66.C: New test.
	* g++.dg/cpp2a/concepts-redecl1.C: New test.
2020-06-29 11:01:58 -04:00
Marek Polacek
b1005f553d c++: Fix CTAD for aggregates in template [PR95568]
95568 complains that CTAD for aggregates doesn't work within
requires-clause and it turned out that it doesn't work when we try
the deduction in a template.  The reason is that maybe_aggr_guide
creates a guide that can look like this

  template<class T> X(decltype (X<T>::x))-> X<T>

where the parameter is a decltype, which is a non-deduced context.  So
the subsequent build_new_function_call fails because unify_one_argument
can't deduce anything from it ([temp.deduct.type]: "If a template
parameter is used only in non-deduced contexts and is not explicitly
specified, template argument deduction fails.")

Those decltypes come from finish_decltype_type.  We can just use
TREE_TYPE instead.  I pondered using unlowered_expr_type, but that
didn't make any difference for the FIELD_DECLs I saw in
class-deduction-aggr6.C.

gcc/cp/ChangeLog:

	PR c++/95568
	* pt.c (collect_ctor_idx_types): Use TREE_TYPE.

gcc/testsuite/ChangeLog:

	PR c++/95568
	* g++.dg/cpp2a/class-deduction-aggr5.C: New test.
	* g++.dg/cpp2a/class-deduction-aggr6.C: New test.
2020-06-29 10:59:40 -04:00
Harald Anlauf
e6cc67f661 PR fortran/71706 - ICE on using sync images with -fcheck=bounds
The run-time checking code did not properly convert the kind of the
argument to SYNC IMAGES, leading to an error in verify_gimple.  Fix that.

gcc/fortran/
	PR fortran/71706
	* trans-stmt.c (gfc_trans_sync): Do proper kind conversion in
	bounds-checking code.
2020-06-29 15:15:49 +02:00
Martin Liska
95d7d7f929
testsuite: Fix coding style.
2020-06-29  Martin Liska  <mliska@suse.cz>

	PR c++/86568
	* c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
	Fix coding style.
2020-06-29 14:46:32 +02:00
Richard Biener
9a4a52e359 tree-optimization/95916 - treat scalar ops explicitely
This explicitely treats the case of scalar operands for SLP
when computing insert locations.

2020-06-29  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/95916
	* tree-vect-slp.c (vect_schedule_slp_instance): Explicitely handle
	the case of not vectorized externals.

	* gcc.dg/vect/pr95916.c: New testcase.
2020-06-29 14:40:52 +02:00
Richard Biener
008842d741 do not include <utility> from tree-vectorizer.h
This removes the duplicate <utility> include from tree-vectorizer.h.

2020-06-29  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h: Do not include <utility>.
2020-06-29 14:40:52 +02:00
Jakub Jelinek
baa4578911 testsuite: Adjust testcase for recent -Wnonnull changes
2020-06-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86568
	* c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
	Adjust dg-warning.
2020-06-29 14:38:23 +02:00
Jakub Jelinek
fe7c43a7bc testsuite: Adjust testcase for recent -Wnonnull changes
2020-06-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/86568
gcc/testsuite/
	* c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
	Adjust dg-warning.
2020-06-29 13:50:53 +02:00
Martin Liska
e712ef9eee
Use gsi_bb instead of iterator->bb.
gcc/ChangeLog:

	* tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Use gsi_bb
	instead of gimple_stmt_iterator::bb.
	* tree-ssa-math-opts.c (insert_reciprocals): Likewise.
	* tree-vectorizer.h: Likewise.
2020-06-29 13:28:16 +02:00
Andrew Stubbs
eff23b7961 amdgcn: Support basic DWARF
This is enough DWARF support for "-O0 -g" to work OK, within a single frame,
using the new rocgdb debugger from AMD.  Debugging with optimization enabled
also works when the values are located in SGPRs or memory.

Scalars in VGPRs are problematic, EXEC_HI and VCC_HI are unmappable, and
CFI remains unimplemented.

gcc/ChangeLog:

	* config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): New macro.
	* config/gcn/gcn-protos.h (gcn_dwarf_register_number): New prototype.
	* config/gcn/gcn.c (gcn_expand_prologue): Add RTX_FRAME_RELATED_P
	and REG_FRAME_RELATED_EXPR to stack and frame pointer adjustments.
	(gcn_dwarf_register_number): New function.
	(gcn_dwarf_register_span): New function.
	(TARGET_DWARF_REGISTER_SPAN): New hook macro.
2020-06-29 11:58:54 +01:00
Kaipeng Zhou
35cf3c5516 store-merging: ICE in find_bswap_or_nop_1 PR95854.
The patch add a judgement in find_bswap_or_nop_1 to make sure both
operand1 and operand2 cannot be converted to unsigned HOST_WIDE_INT.
If not, return NULL.

gcc/ChangeLog:

2020-06-24  Kaipeng Zhou  <zhoukaipeng3@huawei.com>

	PR tree-optimization/95854
	* gimple-ssa-store-merging.c (find_bswap_or_nop_1): Return NULL
	if operand 1 or 2 of a BIT_FIELD_REF cannot be converted to
	unsigned HOST_WIDE_INT.

gcc/testsuite/ChangeLog:

2020-06-24  Kaipeng Zhou  <zhoukaipeng3@huawei.com>

	PR tree-optimization/95854
	* gcc.dg/pr95854.c: New test.
2020-06-29 12:58:10 +02:00
Rainer Orth
ceac3edb42 sparc: Remove register storage class in sparc.c
The switch to C++17 broke SPARC bootstrap:

/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8887:34: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 8887 | epilogue_renumber (register rtx *where, int test)
      |                                  ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'int epilogue_renumber(rtx_def**, int)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8889:24: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 8889 |   register const char *fmt;
      |                        ^~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8890:16: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 8890 |   register int i;
      |                ^
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8891:26: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 8891 |   register enum rtx_code code;
      |                          ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:8948:17: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 8948 |    register int j;
      |                 ^
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'void sparc_print_operand_address(std::FILE*, machine_mode, rtx)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9671:16: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9671 |   register rtx base, index = 0;
      |                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9671:22: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9671 |   register rtx base, index = 0;
      |                      ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9673:16: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9673 |   register rtx addr = x;
      |                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: At global scope:
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9807:32: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9807 | sparc_type_code (register tree type)
      |                                ^~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'long unsigned int sparc_type_code(tree)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9809:26: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9809 |   register unsigned long qualifiers = 0;
      |                          ^~~~~~~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:9810:21: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
 9810 |   register unsigned shift;
      |                     ^~~~~
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c: In function 'int set_extends(rtx_insn*)':
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc.c:10306:16: error: ISO C++17 does not allow 'register' storage class specifier [-Werror=register]
10306 |   register rtx pat = PATTERN (insn);
      |                ^~~

Fixed by removing the register keyword.  Bootstrapped on
sparc-sun-solaris2.11.

	* config/sparc/sparc.c (epilogue_renumber): Remove register.
	(sparc_print_operand_address): Likewise.
	(sparc_type_code): Likewise.
	(set_extends): Likewise.
2020-06-29 11:51:07 +02:00
Martin Liska
4494fcbc9b
arc: add exceptions for PR92860.
gcc/ChangeLog:

	PR tree-optimization/92860
	* optc-save-gen.awk: Add exceptions for arc target.
2020-06-29 10:55:33 +02:00
Frederik Harwath
d4501bbedc testsuite: clarify scan-dump file globbing behavior
The test commands for scanning optimization dump files
perform globbing on the argument that specifies the suffix
of the dump files to be scanned.  This behavior is currently
undocumented.  Furthermore, the current implementation of
"scan-dump" and similar procedures yields an error whenever
the file name globbing matches more than one file (due to an
attempt to call "open" on multiple files) while a failure to
match any file results in an unresolved test.

This commit documents the globbing behavior.  The dump
scanning procedures are changed to make the test unresolved
if globbing matches more than one file.

gcc/ChangeLog:

2020-06-29  Frederik Harwath  <frederik@codesourcery.com>

	* doc/sourcebuild.texi: Describe globbing of the
	dump file scanning commands "suffix" argument.

gcc/testsuite/ChangeLog:

2020-06-29  Frederik Harwath  <frederik@codesourcery.com>

	* lib/scandump.exp (glob-dump-file): New proc.
	(scan-dump): Use glob-dump-file for file name expansion.
	(scan-dump-times): Likewise.
	(scan-dump-dem): Likewise.
	(scan-dump-dem-not): Likewise.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
2020-06-29 08:42:57 +02:00
GCC Administrator
69273534c6 Daily bump. 2020-06-29 00:16:29 +00:00
Ville Voutilainen
b26fd416fb Add a __nonnnull__ attribute to std::string's _CharT* constructor
Add a __nonnnull__ attribute to std::string's _CharT* constructor
	* include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
	Add a __nonnull__ attribute.
	* testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
	* testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
2020-06-29 00:47:05 +03:00
Ville Voutilainen
24b54628cf PR libstdc++/95915
PR libstdc++/95915
	* include/std/type_traits (is_literal_type, is_literal_type_v):
	Deprecate in C++17.
	* include/std/variant (_Uninitialized):
	Adjust the condition and the comment.
	* testsuite/20_util/is_literal_type/deprecated-1z.cc: New.
	* testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc:
	Adjust.
	* testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_literal_type/value.cc: Likewise.
	* testsuite/20_util/optional/constexpr/nullopt.cc:
	Use __is_literal_type directly.
	* testsuite/20_util/optional/nullopt.cc: Likewise.
	* testsuite/20_util/variable_templates_for_traits.cc: Adjust.
	* testsuite/20_util/variant/95915.cc: New.
	* testsuite/20_util/variant/compile.cc: Add new test.
	* testsuite/experimental/optional/constexpr/nullopt.cc:
	Use __is_literal_type directly.
	* testsuite/experimental/optional/nullopt.cc: Likewise.
	* testsuite/experimental/type_traits/value.cc: Adjust.
	* testsuite/util/testsuite_common_types.h:
	Use __is_literal_type directly.
2020-06-29 00:36:38 +03:00
Martin Sebor
75ff24e192 Underline argument in -Wnonnull and in C++ extend warning to the this pointer [PR c++/86568].
Resolves:
PR c++/86568 - -Wnonnull warnings should highlight the relevant argument not the closing parenthesis

gcc/c-family/ChangeLog:

	PR c++/86568
	* c-common.c (struct nonnull_arg_ctx): Add members.
	(check_function_nonnull): Use nonnull_arg_ctx as argument.  Handle
	C++ member functions specially.  Consider the this pointer implicitly
	nonnull.
	(check_nonnull_arg): Use location of argument when available.
	(check_function_arguments): Use nonnull_arg_ctx as argument.

gcc/ChangeLog:

	PR c++/86568
	* calls.c (maybe_warn_rdwr_sizes): Use location of argument if
	available.
	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.  Adjust
	indentation.
	* tree.c (get_nonnull_args): Consider the this pointer implicitly
	nonnull.
	* var-tracking.c (deps_vec): New type.
	(var_loc_dep_vec): New function.
	(VAR_LOC_DEP_VEC): Use it.

gcc/testsuite/ChangeLog:

	PR c++/86568
	* g++.dg/warn/Wnonnull5.C: New test.
	* c-c++-common/pr28656.c: Adjust text of expected warning.
	* c-c++-common/pr66208.c: Same.
	* g++.dg/cpp0x/nullptr22.C: Same.
	* g++.dg/ext/attr-nonnull.C: Same.
	* g++.dg/ext/attrib49.C: Same.
	* g++.dg/pr71973-2.C: Same.
	* g++.dg/warn/Wnonnull3.C: Same.
	* g++.dg/warn/Wnonnull4.C: Same.
	* obj-c++.dg/attributes/method-nonnull-1.mm: Same.
	* objc.dg/attributes/method-nonnull-1.m: Same.
2020-06-28 14:24:52 -06:00
Iain Buclaw
ce56fd949f d: Merge upstream dmd 8508c4e68.
Fixes a performance bug where 'static foreach' would take an
exponentially long time to expand during CTFE.

In the following example:

    static foreach (i; 0..30000) {}

Compilation time had been reduced from around 40 to 0.08 seconds.
Memory consumption is also reduced from 3.5GB to 55MB.

Reviewed-on: https://github.com/dlang/dmd/pull/11335

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 8508c4e68.
2020-06-28 18:04:20 +02:00
Harald Anlauf
b62cac6d92 PR fortran/95340 - ICE in gfc_match_select_rank, at fortran/match.c:6690
Do not dereference NULL pointer when querying array shape of possibly
improperly delared variable.

gcc/fortran/
	PR fortran/95340
	* match.c (gfc_match_select_rank): Do not dereference NULL pointer.
2020-06-28 16:24:15 +02:00
Iain Sandoe
06ed4aae1c coroutines: Handle namespaces while scanning local vars [PR95711].
We need to skip past namespace decls when scanning the bind
expression var lists checking for local vars.

gcc/cp/ChangeLog:

	PR c++/95711
	* coroutines.cc (register_local_var_uses): Skip past
	namespace decls.

gcc/testsuite/ChangeLog:

	PR c++/95711
	* g++.dg/coroutines/pr95711.C: New test.
2020-06-28 13:52:25 +01:00
Harald Anlauf
f3a8f66a83 PR fortran/95880 - ICE in gfc_add_type, at fortran/symbol.c:2030
The fix for PR39695 did not properly distinguish between procedure names
and other symbols names in errors emitted for invalid code.  Fix that.

gcc/fortran/
	PR fortran/95880
	* symbol.c (gfc_add_type): If sym->ns->proc_name is set, use it,
	otherwise fall back to sym->name.
2020-06-28 13:52:51 +02:00
Iain Sandoe
31419a80b6 coroutines, testsuite: Update log messages. [NFC, PR95519]
This does not affect the test functionality, but only user-
facing debug messages when the tests are run outside the
test-suite.

gcc/testsuite/ChangeLog:

	PR c++/95519
	* g++.dg/coroutines/torture/pr95519-02-final_suspend.C:
	Amend log messages.
	* g++.dg/coroutines/torture/pr95519-03-return-value.C:
	Likewise.
	* g++.dg/coroutines/torture/pr95519-04-yield-value.C:
	Likewise.
	* g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
2020-06-28 10:23:11 +01:00
Kewen Lin
ef8d1da1b5 IFN: Fix mask_{load,store} optab support macros
When I am working on IFNs for vector with length, I noticed that the
current optab support query for mask_load/mask_store looks unexpected.
The mask_load/mask_store requires two modes for convert_optab query,
but the macros direct_mask_{load,store}_optab_supported_p uses
direct_optab_supported_p which asserts type pair should have the same mode.

I'm not sure whether we have some special reason here or just a typo,
since everything goes well now, mask_{load,store} optab check is mainly
handled by can_vec_mask_load_store_p.

But if we have some codes as below (eg: one checking for all IFNs finally)

  tree_pair types = direct_internal_fn_types (ifn, call);
  if(direct_internal_fn_supported_p (ifn, types, OPTIMIZE_FOR_SPEED) ...

It will cause ICE.

gcc/ChangeLog:

	* internal-fn.c (direct_mask_load_optab_supported_p): Use
	convert_optab_supported_p instead of direct_optab_supported_p.
	(direct_mask_store_optab_supported_p): Likewise.
2020-06-27 21:17:04 -05:00
David Edelsohn
5771314d18 rs6000: Correct prefix testsuite failures on AIX.
gcc/testsuite/ChangeLog

2020-06-27  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/prefix-large-dd.c: Require DFP.
	* gcc.target/powerpc/prefix-large-sd.c: Require DFP.
	* gcc.target/powerpc/prefix-large-kf.c: Require float128.
	* gcc.target/powerpc/prefix-pcrel-dd.c: Require DFP.
	* gcc.target/powerpc/prefix-pcrel-sd.c: Require DFP.
	* gcc.target/powerpc/prefix-pcrel-kf.c: Require float128.
2020-06-27 20:21:47 -04:00
GCC Administrator
9a33c41fe4 Daily bump. 2020-06-28 00:16:21 +00:00
Harald Anlauf
3cbc0fb39c PR fortran/95881 - ICE in resolve_symbol, at fortran/resolve.c:15175
Avoid NULL pointer dereference.

gcc/fortran/
	PR fortran/95881
	* resolve.c (resolve_symbol): Avoid NULL pointer dereference.
2020-06-27 14:57:28 +02:00
Aldy Hernandez
fc36b97af0 Move simplification of statements using ranges into its own class.
This moves all the simplification code from vr_values into a separate
class (simplify_using_ranges).  In doing so, we get rid of a bunch of
dependencies on the internals of vr_values.  The goal is to (a) remove
unnecessary interdependendcies (b) be able to use this engine with any
range infrastructure, as all it needs is a method to get the range for
an SSA name (get_value_range).

I also removed as many dependencies on value_range_equiv as possible,
preferring value_range.  A few value_range_equiv uses remain, but for
cases where equivalences are actually used (folding conditionals, etc).

gcc/ChangeLog:

	* gimple-ssa-evrp-analyze.h (vrp_visit_cond_stmt): Use
	simplify_using_ranges class.
	* gimple-ssa-evrp.c (class evrp_folder): New simplify_using_ranges
	field.  Adjust all methods to use new field.
	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Use
	simplify_using_ranges class.
	* tree-vrp.c (class vrp_folder): New simplify_using_ranges
	field.  Adjust all methods to use new field.
	(simplify_stmt_for_jump_threading): Use simplify_using_ranges class.
	(vrp_prop::vrp_finalize): New vrp_folder argument.
	(execute_vrp): Pass folder to vrp_finalize.  Use
	simplify_using_ranges class.
	Remove cleanup_edges_and_switches call.
	* vr-values.c (vr_values::op_with_boolean_value_range_p): Change
	value_range_equiv uses to value_range.
	(simplify_using_ranges::op_with_boolean_value_range_p): Use
	simplify_using_ranges class.
	(check_for_binary_op_overflow): Make static.
	(vr_values::extract_range_basic): Pass this to
	check_for_binary_op_overflow.
	(compare_range_with_value): Change value_range_equiv uses to
	value_range.
	(vr_values::vr_values): Initialize simplifier field.
	Remove uses of to_remove_edges and to_update_switch_stmts.
	(vr_values::~vr_values): Remove uses of to_remove_edges and
	to_update_switch_stmts.
	(vr_values::get_vr_for_comparison): Move to simplify_using_ranges
	class.
	(vr_values::compare_name_with_value): Same.
	(vr_values::compare_names): Same.
	(vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
	(vr_values::vrp_evaluate_conditional): Same.
	(vr_values::vrp_visit_cond_stmt): Same.
	(find_case_label_ranges): Change value_range_equiv uses to
	value_range.
	(vr_values::extract_range_from_stmt): Use simplify_using_ranges class.
	(vr_values::simplify_truth_ops_using_ranges): Move to
	simplify_using_ranges class.
	(vr_values::simplify_div_or_mod_using_ranges): Same.
	(vr_values::simplify_min_or_max_using_ranges): Same.
	(vr_values::simplify_abs_using_ranges): Same.
	(vr_values::simplify_bit_ops_using_ranges): Same.
	(test_for_singularity): Change value_range_equiv uses to
	value_range.
	(range_fits_type_p): Same.
	(vr_values::simplify_cond_using_ranges_1): Same.
	(vr_values::simplify_cond_using_ranges_2): Make extern.
	(vr_values::fold_cond): Move to simplify_using_ranges class.
	(vr_values::simplify_switch_using_ranges): Same.
	(vr_values::cleanup_edges_and_switches): Same.
	(vr_values::simplify_float_conversion_using_ranges): Same.
	(vr_values::simplify_internal_call_using_ranges): Same.
	(vr_values::two_valued_val_range_p): Same.
	(vr_values::simplify_stmt_using_ranges): Move to...
	(simplify_using_ranges::simplify): ...here.
	* vr-values.h (class vr_values): Move all the simplification of
	statements using ranges methods and code from here...
	(class simplify_using_ranges): ...to here.
	(simplify_cond_using_ranges_2): New extern prototype.
2020-06-27 14:11:41 +02:00
Jakub Jelinek
aed3ab253d openmp: Non-rectangular loop support for non-composite worksharing loops and distribute
This implements the fallback mentioned in
https://gcc.gnu.org/pipermail/gcc/2020-June/232874.html
Special cases for triangular loops etc. to follow later, also composite
constructs not supported yet (need to check the passing of temporaries around)
and lastprivate might not give the same answers as serial loop if the last
innermost body iteration isn't the last one for some of the outer loops
(that will need to be solved separately together with rectangular loops that have no
innermost body iterations, but some of the outer loops actually iterate).
Also, simd needs work.

2020-06-27  Jakub Jelinek  <jakub@redhat.com>

	* omp-general.h (struct omp_for_data_loop): Add non_rect_referenced
	member, move outer member.
	(struct omp_for_data): Add first_nonrect and last_nonrect members.
	* omp-general.c (omp_extract_for_data): Initialize first_nonrect,
	last_nonrect and non_rect_referenced members.
	* omp-expand.c (expand_omp_for_init_counts): Handle non-rectangular
	loops.
	(expand_omp_for_init_vars): Add nonrect_bounds parameter.  Handle
	non-rectangular loops.
	(extract_omp_for_update_vars): Likewise.
	(expand_omp_for_generic, expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk, expand_omp_simd,
	expand_omp_taskloop_for_outer, expand_omp_taskloop_for_inner): Adjust
	expand_omp_for_init_vars and extract_omp_for_update_vars callers.
	(expand_omp_for): Don't sorry on non-composite worksharing-loop or
	distribute.

	* testsuite/libgomp.c/loop-17.c: New test.
	* testsuite/libgomp.c/loop-18.c: New test.
2020-06-27 12:43:36 +02:00