Commit Graph

153888 Commits

Author SHA1 Message Date
Steven G. Kargl
7a760f1977 backport: re PR fortran/83093 (ICE in fold_convert_loc, at fold-const.c:2266)
2018-01-10 Steven G. Kargl  <kargl@gcc.gnu.org>

	Backport from trunk
	PR fortran/83093
	* resolve.c (resolve_charlen): Check the type of cl->length
	after resolution.

2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	Backport from trunk
	PR fortran/83093
	* gfortran.dg/allocate_with_typespec_7.f90: New test.

From-SVN: r256459
2018-01-10 22:35:00 +00:00
Steven G. Kargl
ee30b822e5 backport: re PR fortran/82841 (Segfault in gfc_simplify_transfer)
2018-01-10  Steven G. Kargl  <kargl@kgcc.gnu.org>

	Backport r254555 from trunk
	PR Fortran/82841
	* gfortran.dg/transfer_simplify_11.f90: New test.


2018-01-10  Steven G. Kargl  <kargl@kgcc.gnu.org>

	Backport r254555 from trunk
	PR Fortran/82841
	* simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer.
	Unwrap a short line.

From-SVN: r256445
2018-01-10 18:47:44 +00:00
GCC Administrator
df18d5afa6 Daily bump.
From-SVN: r256414
2018-01-10 00:16:13 +00:00
Joseph Myers
8c90c237aa * es.po: Update.
From-SVN: r256409
2018-01-09 23:36:24 +00:00
Richard Biener
d8d1029d8e backport: re PR c++/83713 (ICE in do_narrow at gcc/convert.c:474)
2018-01-09  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	2018-01-08  Richard Biener  <rguenther@suse.de>

	PR middle-end/83713
	* convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.

	* g++.dg/torture/pr83713.C: New testcase.

From-SVN: r256371
2018-01-09 08:53:14 +00:00
Jim Wilson
603ceb882d RISC-V: Fix -msave-restore bug with sibcalls.
2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
		    Kito Cheng  <kito.cheng@gmail.com>
	gcc/
	* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
	(riscv_leaf_function_p): Delete.
	(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.

	2018-01-08  Chih-Mao Chen <pkmx.tw@gmail.com>
		    Monk Chiang  <sh.chiang04@gmail.com>
	gcc/testsuite/
	* gcc.target/riscv/save-restore-1.c: New.

	2017-11-29  Jim Wilson  <jimw@sifive.com>
	gcc/testsuite/
	* gcc.target/riscv/riscv.exp: New.

From-SVN: r256363
2018-01-08 17:01:45 -08:00
GCC Administrator
c9af7ef850 Daily bump.
From-SVN: r256360
2018-01-09 00:16:15 +00:00
Kyrylo Tkachov
9192145f0b [arm] PR target/82975: Guard against reg_renumber being NULL in arm.h
Backport from mainline
	2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	PR target/82975
	* config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.

	* gcc.dg/pr82975.c: New test.

From-SVN: r256350
2018-01-08 18:42:50 +00:00
Sebastian Huber
2fc75a03b0 RTEMS/EPIPHANY: Add RTEMS support
gcc/
	* config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
	* config/epiphany/rtems.h: New file.

libgcc/
	* config.host (epiphany-*-elf*): Add (epiphany-*-rtems*)
	configuration.

From-SVN: r256342
2018-01-08 13:39:11 +00:00
GCC Administrator
871fb7e343 Daily bump.
From-SVN: r256326
2018-01-08 00:16:12 +00:00
Uros Bizjak
71cacd0b5c alpha.md (*sadd<modesuffix>): Use ASHIFT instead of MULT rtx.
* config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
	instead of MULT rtx.  Update all corresponding splitters.
	(*saddl_se): Ditto.
	(*ssub<modesuffix>): Ditto.
	(*ssubl_se): Ditto.
	(*cmp_sadd_di): Update split patterns.
	(*cmp_sadd_si): Ditto.
	(*cmp_sadd_sidi): Ditto.
	(*cmp_ssub_di): Ditto.
	(*cmp_ssub_si): Ditto.
	(*cmp_ssub_sidi): Ditto.
	* config/alpha/predicates.md (const23_operand): New predicate.
	* config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
	Look for ASHIFT, not MULT inner operand.
	(alpha_split_conditional_move): Update for *sadd<modesuffix> change.

testsuite/ChangeLog:

	* gcc.target/alpha/pr83628-1.c: New test.
	* gcc.target/alpha/pr83628-2.c: Ditto.

From-SVN: r256324
2018-01-07 20:14:55 +01:00
GCC Administrator
7f40e113d0 Daily bump.
From-SVN: r256316
2018-01-07 00:16:12 +00:00
GCC Administrator
7203d58a46 Daily bump.
From-SVN: r256303
2018-01-06 00:16:14 +00:00
Jonathan Wakely
f8e2a3f31e Improve tests for error reporting in Filesystem TS
Backport from mainline
2017-10-19  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/experimental/filesystem/iterators/
	recursive_directory_iterator.cc: Ensure that error_code arguments are
	cleared when required.
	* testsuite/experimental/filesystem/operations/create_directory.cc:
	Remove redundant check.
	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
	Ensure that error_code argument is cleared when required.

From-SVN: r256293
2018-01-05 22:22:33 +00:00
Jonathan Wakely
7a2b2be984 PR libstdc++/83600 fix end iterator for unready std::match_results
Backport from mainline
2017-12-27  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/83600
	* include/bits/regex.h (match_results::end()): Return valid iterator
	when not ready.
	* testsuite/28_regex/match_results/ctors/char/default.cc: Check that
	unready objects are empty and have equal begin and end iterators.
	* testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.

From-SVN: r256292
2018-01-05 22:22:28 +00:00
Jonathan Wakely
a6d46487f3 PR libstdc++/83598 don't modify flags passed to std::basic_regex constructors
Backport from mainline
2017-12-27  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/83598
	* include/bits/regex.h (basic_regex): Don't modify flags passed to
	constructors.
	* testsuite/28_regex/basic_regex/ctors/83598.cc: New test.

From-SVN: r256291
2018-01-05 22:22:17 +00:00
Jonathan Wakely
0070e3297e PR libstdc++/83279 handle sendfile not copying entire file
Backport from mainline
2017-12-14  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/83279
	* src/filesystem/std-ops.cc (do_copy_file): Handle sendfile not
	copying entire file.

From-SVN: r256290
2018-01-05 22:22:12 +00:00
Jonathan Wakely
826137607d Avoid redundant calls to filesystem::status_known
Backport from mainline
2018-01-04  Jonathan Wakely  <jwakely@redhat.com>

	* include/experimental/fs_ops.h (exists(const path&, error_code&))):
        Only check status_known once.

From-SVN: r256288
2018-01-05 21:27:29 +00:00
Jonathan Wakely
72eaf75b30 PR libstdc++/83626 Don't report errors when removing non-existent files
Backport from mainline
2018-01-05  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/83626
	* src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
	report an error for ENOENT.
	(remove_all(const path&)): Fix type of result variable.
	(remove_all(const path&, error_code&)): Use non-throwing increment
	for directory iterator. Call POSIX remove directly to avoid redundant
	calls to symlink_status. Do not report errors for ENOENT.
	* testsuite/experimental/filesystem/operations/remove_all.cc: Test
        throwing overload.

Backport from mainline
2018-01-04  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/83626
	* src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
	redundant call to ec.clear().
	(remove_all(const path&, error_code&))): Do not return an error for
	non-existent paths.
	* testsuite/experimental/filesystem/operations/remove.cc: New test.
	* testsuite/experimental/filesystem/operations/remove_all.cc: Fix
	expected results for non-existent paths.

From-SVN: r256287
2018-01-05 21:27:25 +00:00
Jonathan Wakely
df7dd7127c PR libstdc++/79283 fix filesystem::read_symlink for /proc
Backport from mainline
2017-10-25  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79283
	* src/filesystem/ops.cc (read_symlink): Handle st_size being zero.

From-SVN: r256286
2018-01-05 21:27:20 +00:00
Michael Weiser
d7e9a32ab0 [PATCH, PR83492] Fix selection of aarch64 big-endian shift parameters based on __AARCH64EB__
2018-01-05  Michael Weiser  <michael.weiser@gmx.de>

	Backport from trunk
	2017-12-20  Michael Weiser  <michael.weiser@gmx.de>

	PR preprocessor/83492
	* lex.c (search_line_fast) [__ARM_NEON && __ARM_64BIT_STATE]:
	Fix selection of big-endian shift parameters by using
	__ARM_BIG_ENDIAN.

From-SVN: r256278
2018-01-05 13:58:54 +00:00
GCC Administrator
30833826aa Daily bump.
From-SVN: r256271
2018-01-05 00:16:14 +00:00
Steven G. Kargl
58929d71e1 re PR fortran/83679 (r256113 causes regression on pr77942.f90)
2018-01-04  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR Fortran/83679
	* simplify.c (gfc_simplify_cshift): Restore early return for zero-sized
	array.  Update Copyright year while here.

From-SVN: r256263
2018-01-04 20:16:23 +00:00
Ville Voutilainen
166d8f080c Protect optional's deduction guide with the feature macro
Backport from mainline
2018-01-03  Ville Voutilainen  <ville.voutilainen@gmail.com>

Protect optional's deduction guide with the feature macro
* include/std/optional: Use the feature macro.

From-SVN: r256261
2018-01-04 20:58:29 +02:00
GCC Administrator
a03a98143d Daily bump.
From-SVN: r256221
2018-01-04 00:16:15 +00:00
Janne Blomqvist
8a159915b9 PR libgfortran/83649 Chunk large reads and writes
Backport from trunk.

It turns out that Linux never reads or writes more than 2147479552
bytes in a single syscall. For writes this is not a problem as
libgfortran already contains a loop around write() to handle short
writes. But for reads we cannot do this, since then read will hang if
we have a short read when reading from the terminal.  Also, there are
reports that macOS fails I/O's larger than 2 GB.  Thus, to work around
these issues do large reads/writes in chunks.

The testcase from the PR

program largewr
  integer(kind=1) :: a(2_8**31+1)
  a = 0
  a(size(a, kind=8)) = 1
  open(10, file="largewr.dat", access="stream", form="unformatted")
  write (10) a
  close(10)
  a(size(a, kind=8)) = 2
  open(10, file="largewr.dat", access="stream", form="unformatted")
  read (10) a
  if (a(size(a, kind=8)) == 1) then
    print *, "All is well"
  else
    print *, "Oh no"
  end if
end program largewr

fails on trunk but works with the patch.

Regtested on x86_64-pc-linux-gnu, committed to trunk.

libgfortran/ChangeLog:

2018-01-03  Janne Blomqvist  <jb@gcc.gnu.org>

	PR libgfortran/83649
	* io/unix.c (MAX_CHUNK): New define.
	(raw_read): For reads larger than MAX_CHUNK, loop.
	(raw_write): Write no more than MAX_CHUNK bytes per iteration.
---
 libgfortran/io/unix.c | 50 ++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 42 insertions(+), 8 deletions(-)

diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index a07a3c9..7a982b3 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -292,18 +292,49 @@ raw_flush (unix_stream *s  __attribute__ ((unused)))
   return 0;
 }
 
+/* Write/read at most 2 GB - 4k chunks at a time. Linux never reads or
+   writes more than this, and there are reports that macOS fails for
+   larger than 2 GB as well.  */
+#define MAX_CHUNK 2147479552
+
 static ssize_t
 raw_read (unix_stream *s, void *buf, ssize_t nbyte)
 {
   /* For read we can't do I/O in a loop like raw_write does, because
      that will break applications that wait for interactive I/O.  We
-     still can loop around EINTR, though.  */
-  while (true)
+     still can loop around EINTR, though.  This however causes a
+     problem for large reads which must be chunked, see comment above.
+     So assume that if the size is larger than the chunk size, we're
+     reading from a file and not the terminal.  */
+  if (nbyte <= MAX_CHUNK)
     {
-      ssize_t trans = read (s->fd, buf, nbyte);
-      if (trans == -1 && errno == EINTR)
-	continue;
-      return trans;
+      while (true)
+	{
+	  ssize_t trans = read (s->fd, buf, nbyte);
+	  if (trans == -1 && errno == EINTR)
+	    continue;
+	  return trans;
+	}
+    }
+  else
+    {
+      ssize_t bytes_left = nbyte;
+      char *buf_st = buf;
+      while (bytes_left > 0)
+	{
+	  ssize_t to_read = bytes_left < MAX_CHUNK ? bytes_left: MAX_CHUNK;
+	  ssize_t trans = read (s->fd, buf_st, to_read);
+	  if (trans == -1)
+	    {
+	      if (errno == EINTR)
+		continue;
+	      else
+		return trans;
+	    }
+	  buf_st += trans;
+	  bytes_left -= trans;
+	}
+      return nbyte - bytes_left;
     }
 }
 
@@ -317,10 +348,13 @@ raw_write (unix_stream *s, const void *buf, ssize_t nbyte)
   buf_st = (char *) buf;
 
   /* We must write in a loop since some systems don't restart system
-     calls in case of a signal.  */
+     calls in case of a signal.  Also some systems might fail outright
+     if we try to write more than 2 GB in a single syscall, so chunk
+     up large writes.  */
   while (bytes_left > 0)
     {
-      trans = write (s->fd, buf_st, bytes_left);
+      ssize_t to_write = bytes_left < MAX_CHUNK ? bytes_left: MAX_CHUNK;
+      trans = write (s->fd, buf_st, to_write);
       if (trans == -1)
 	{
 	  if (errno == EINTR)
-- 
2.7.4

From-SVN: r256172
2018-01-03 13:46:38 +02:00
GCC Administrator
cb1df2ac95 Daily bump.
From-SVN: r256115
2018-01-03 00:16:15 +00:00
Andrew Waterman
1b4f0bcf4b RISC-V: Fix for icache flush issue on multicore processors.
gcc/
	* config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
	* config/riscv/riscv.md (clear_cache): Use it.

From-SVN: r256110
2018-01-02 12:57:54 -08:00
Jakub Jelinek
27f04c8cc7 re PR c++/83556 (ICE in gimplify_expr, at gimplify.c:12004)
PR c++/83556
	* tree.c (replace_placeholders_r): Pass NULL as last argument to
	cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
	non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
	to false and return.
	(replace_placeholders): Pass NULL instead of &pset as last argument
	to cp_walk_tree.

	* g++.dg/cpp0x/pr83556.C: New test.

From-SVN: r256087
2018-01-02 19:07:41 +01:00
Thomas Koenig
52535f91db re PR fortran/83650 (Wrong simplification in cshift with negative shifts)
2018-01-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83650
	* simplify.c (gfc_simplify_cshift): Correct contition for
	negative shifts.

2018-01-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83650
	* gfortran.dg/simplify_cshift_1.f90: Correct condition.

From-SVN: r256085
2018-01-02 18:01:31 +00:00
GCC Administrator
22be5165e0 Daily bump.
From-SVN: r256067
2018-01-02 00:16:09 +00:00
Jakub Jelinek
528dc0195d re PR rtl-optimization/83608 (ICE in convert_move, at expr.c:229 in GIMPLE store merging pass)
PR middle-end/83608
	* expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
	convert_modes if target mode has the right side, but different mode
	class.

	* g++.dg/opt/pr83608.C: New test.

From-SVN: r256063
2018-01-01 12:30:28 +01:00
Jakub Jelinek
63563fe69e re PR tree-optimization/83609 (ICE in read_complex_part at gcc/expr.c:3202)
PR middle-end/83609
	* expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
	last argument when extracting from CONCAT.  If either from_real or
	from_imag is NULL, use expansion through memory.  If result is not
	a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
	the parts directly to inner mode, if even that fails, use expansion
	through memory.

	* gcc.dg/pr83609.c: New test.
	* g++.dg/opt/pr83609.C: New test.

From-SVN: r256062
2018-01-01 12:28:57 +01:00
Jakub Jelinek
f0b9bc3434 re PR middle-end/83623 (ICE: in convert_move, at expr.c:248 with -march=knl and 16bit vector bswap/rotate)
PR middle-end/83623
	* expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
	check for bswap in mode rather than HImode and use that in expand_unop
	too.

	* gcc.dg/pr83623.c: New test.

From-SVN: r256061
2018-01-01 12:27:17 +01:00
Joseph Myers
dc9fa14196 * es.po: Update.
From-SVN: r256060
2018-01-01 00:17:45 +00:00
GCC Administrator
c6f9988610 Daily bump.
From-SVN: r256057
2018-01-01 00:16:08 +00:00
GCC Administrator
e11c6835a7 Daily bump.
From-SVN: r256047
2017-12-31 00:16:09 +00:00
Jerry DeLisle
83ab9a1ad8 backport: re PR libfortran/83613 (Executing gfortran.dg/inquire_internal.f90 hangs on darwin after r255621)
2017-12-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	Backport from trunk
	PR libgfortran/83613
	* io/unit.c (init_units): Don't forget to unlock the unit locks
	after being inserted.

From-SVN: r256041
2017-12-30 02:14:34 +00:00
GCC Administrator
f4c4157567 Daily bump.
From-SVN: r256038
2017-12-30 00:16:08 +00:00
GCC Administrator
48498fcfee Daily bump.
From-SVN: r256029
2017-12-29 00:16:09 +00:00
Steven G. Kargl
8c5b3f8f74 re PR fortran/83548 (Compilation Error using logical function in parameter)
2017-12-28  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR Fortran/83548
	* match.c (gfc_match_type_spec): Check for LOGICAL conflict in
	type-spec versus LOGICAL intrinsic subprogram.

2017-12-28  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR Fortran/83548
	* gfortran.dg/array_constructor_type_22.f03: New test.

From-SVN: r256025
2017-12-28 20:43:38 +00:00
François Dumont
cf4a3f0859 backport: re PR libstdc++/82522 (std::map::insert(value_type &&) not selected)
2017-12-28  François Dumont  <fdumont@gcc.gnu.org>

	Backport from mainline
	2017-12-20  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/82522
	* include/debug/map.h (map::insert(value_type&&))
	(map::insert(const_iterator, value_type&&)): Add overload for rvalues.
	* include/debug/multimap.h (multimap::insert(value_type&&))
	(multimap::insert(const_iterator, value_type&&)): Likewise.
	* include/debug/unordered_map (unordered_map::insert(value_type&&))
	(unordered_map::insert(const_iterator, value_type&&))
	(unordered_multimap::insert(value_type&&))
	(unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
	* testsuite/23_containers/map/modifiers/insert/dr2354.cc (test02): New.
	* testsuite/23_containers/multimap/modifiers/insert/dr2354.cc (test02):
	New.
	* testsuite/23_containers/unordered_map/insert/dr2354.cc (test02): New.
	* testsuite/23_containers/unordered_multimap/insert/dr2354.cc (test02):
	New.

From-SVN: r256018
2017-12-28 05:37:54 +00:00
GCC Administrator
cb6d05cd81 Daily bump.
From-SVN: r256016
2017-12-28 00:16:08 +00:00
GCC Administrator
b37ba4de67 Daily bump.
From-SVN: r256005
2017-12-27 00:16:08 +00:00
GCC Administrator
8abf694609 Daily bump.
From-SVN: r255999
2017-12-26 00:16:11 +00:00
GCC Administrator
09c83dafc2 Daily bump.
From-SVN: r255995
2017-12-25 00:16:13 +00:00
GCC Administrator
8c8599a14d Daily bump.
From-SVN: r255990
2017-12-24 00:16:12 +00:00
Jakub Jelinek
11942b1776 re PR c++/83553 (compiler removes body of the for-loop, although there is a case label inside)
PR c++/83553
	* fold-const.c (struct contains_label_data): New type.
	(contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
	inside of a SWITCH_BODY seen during the walk.
	(contains_label_p): Use walk_tree instead of
	walk_tree_without_duplicates, prepare data for contains_label_1 and
	provide own pset.

	* c-c++-common/torture/pr83553.c: New test.

From-SVN: r255988
2017-12-23 09:43:10 +01:00
GCC Administrator
2c0a302f1a Daily bump.
From-SVN: r255985
2017-12-23 00:16:09 +00:00
Martin Jambor
7ad64964da [PR 82027] Also stream opt_info of former_clones
2017-12-22  Martin Jambor  <mjambor@suse.cz>

	PR lto/82027
	* lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
	clones.

testsuite/
	* g++.dg/lto/pr82027_0.C: New test.

From-SVN: r255983
2017-12-22 19:28:59 +01:00