diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2017-06-14 19:01:59 +0200 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2017-06-14 19:01:59 +0200 |
commit | 6a44c6f4b668d633ea8e097fb5dfc5670bb5d9cb (patch) | |
tree | 427c7bc803972a45930fb025cc2985d65f04f3a1 /libgfortran | |
parent | bdbf0a2323816aefa5ae9753c012d44df53774c6 (diff) |
Merge branches/gcc-7-branch rev 249190.
Change-Id: I29353b553aba293581d8240e44db829cdc51b308
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 54 | ||||
-rw-r--r-- | libgfortran/Makefile.in | 5 | ||||
-rw-r--r-- | libgfortran/generated/matmul_c10.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_c16.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_c4.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_c8.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_i1.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_i16.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_i2.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_i4.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_i8.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_r10.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_r16.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_r4.c | 40 | ||||
-rw-r--r-- | libgfortran/generated/matmul_r8.c | 40 | ||||
-rw-r--r-- | libgfortran/io/file_pos.c | 6 | ||||
-rw-r--r-- | libgfortran/io/list_read.c | 31 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 29 | ||||
-rw-r--r-- | libgfortran/libgfortran.h | 4 | ||||
-rw-r--r-- | libgfortran/m4/matmul_internal.m4 | 8 | ||||
-rw-r--r-- | libgfortran/runtime/environ.c | 11 |
21 files changed, 380 insertions, 288 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 62a631c79ec..ca109865be3 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,57 @@ +2017-06-06 Thomas Koenig <tkoenig@gcc.gnu.org> + + Backport from trunk + PR fortran/80975 + * m4/matmul_internal.m4: Move zeroing before early return. + * generated/matmul_c10.c: Regenerated. + * generated/matmul_c16.c: Regenerated. + * generated/matmul_c4.c: Regenerated. + * generated/matmul_c8.c: Regenerated. + * generated/matmul_i1.c: Regenerated. + * generated/matmul_i16.c: Regenerated. + * generated/matmul_i2.c: Regenerated. + * generated/matmul_i4.c: Regenerated. + * generated/matmul_i8.c: Regenerated. + * generated/matmul_r10.c: Regenerated. + * generated/matmul_r16.c: Regenerated. + * generated/matmul_r4.c: Regenerated. + * generated/matmul_r8.c: Regenerated. + +2017-05-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + Backport from trunk + PR libgfortran/80741 + * transfer.c (finalize_transfer): Reset last_char to 'empty'. + * file_pos.c (formatted_backspace): Likewise. + (st_endfile): Likewise. + (st_rewind): Likewise. + (st_flush): Likewise. + +2017-05-23 Paul Thomas <pault@gcc.gnu.org> + Jerry DeLisle <jvdelisle@gcc.gnu.org> + + Backport from trunk + PR fortran/80333 + * list_read.c (nml_read_obj): Compute pointer into class/type + arrays from the nl->dim information. Update it for each iteration + of the loop for the given object. + +2017-05-19 Janne Blomqvist <jb@gcc.gnu.org> + + Backport from trunk + * libgfortran.h: HAVE_SECURE_GETENV: Don't check + HAVE___SECURE_GETENV. + * environ/runtime.c (secure_getenv): Use __secure_getenv via a + weak reference. + +2017-05-17 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + Backport from trunk + PR libgfortran/80727 + * transfer.c (read_sf_internal): Remove bogus code to detect EOR. + (read_block_form): For internal units, generate EOR if no more + bytes left in unit and we are trying to read with ADVANCE='NO'. + 2017-05-02 Release Manager * GCC 7.1.0 released. diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in index 05b183dcadb..4914a6f323f 100644 --- a/libgfortran/Makefile.in +++ b/libgfortran/Makefile.in @@ -137,8 +137,9 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/no-executables.m4 \ - $(top_srcdir)/../config/math.m4 $(top_srcdir)/../libtool.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/../config/math.m4 \ + $(top_srcdir)/../config/ax_check_define.m4 \ + $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ diff --git a/libgfortran/generated/matmul_c10.c b/libgfortran/generated/matmul_c10.c index c8e7a6c37fb..d8b26c51374 100644 --- a/libgfortran/generated/matmul_c10.c +++ b/libgfortran/generated/matmul_c10.c @@ -307,15 +307,15 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_c10 (gfc_array_c10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_c16.c b/libgfortran/generated/matmul_c16.c index adbf1c81a7a..bc37fcd7139 100644 --- a/libgfortran/generated/matmul_c16.c +++ b/libgfortran/generated/matmul_c16.c @@ -307,15 +307,15 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_c16 (gfc_array_c16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_c4.c b/libgfortran/generated/matmul_c4.c index ff0e76a9275..683df98edca 100644 --- a/libgfortran/generated/matmul_c4.c +++ b/libgfortran/generated/matmul_c4.c @@ -307,15 +307,15 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_c4 (gfc_array_c4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_c8.c b/libgfortran/generated/matmul_c8.c index 483ebf114d7..9cf7623948b 100644 --- a/libgfortran/generated/matmul_c8.c +++ b/libgfortran/generated/matmul_c8.c @@ -307,15 +307,15 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_c8 (gfc_array_c8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_COMPLEX_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_i1.c b/libgfortran/generated/matmul_i1.c index 51cfcc05360..e2fd404d6a9 100644 --- a/libgfortran/generated/matmul_i1.c +++ b/libgfortran/generated/matmul_i1.c @@ -307,15 +307,15 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_1)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_1)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_1)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_1)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_i1 (gfc_array_i1 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_1)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_i16.c b/libgfortran/generated/matmul_i16.c index 90a422f4290..1601e104402 100644 --- a/libgfortran/generated/matmul_i16.c +++ b/libgfortran/generated/matmul_i16.c @@ -307,15 +307,15 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_i16 (gfc_array_i16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_i2.c b/libgfortran/generated/matmul_i2.c index 58be84fc9c8..c9b67af0aeb 100644 --- a/libgfortran/generated/matmul_i2.c +++ b/libgfortran/generated/matmul_i2.c @@ -307,15 +307,15 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_2)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_2)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_2)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_2)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_i2 (gfc_array_i2 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_2)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_i4.c b/libgfortran/generated/matmul_i4.c index 1e724d54ffa..47b061cc1d5 100644 --- a/libgfortran/generated/matmul_i4.c +++ b/libgfortran/generated/matmul_i4.c @@ -307,15 +307,15 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_i4 (gfc_array_i4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_i8.c b/libgfortran/generated/matmul_i8.c index f5ed84fa288..716ef13f5da 100644 --- a/libgfortran/generated/matmul_i8.c +++ b/libgfortran/generated/matmul_i8.c @@ -307,15 +307,15 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_i8 (gfc_array_i8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_INTEGER_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_r10.c b/libgfortran/generated/matmul_r10.c index 8f76faceabf..e0246b0f49b 100644 --- a/libgfortran/generated/matmul_r10.c +++ b/libgfortran/generated/matmul_r10.c @@ -307,15 +307,15 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_r10 (gfc_array_r10 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_10)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_r16.c b/libgfortran/generated/matmul_r16.c index 6a7687fdc33..7d34e2b5814 100644 --- a/libgfortran/generated/matmul_r16.c +++ b/libgfortran/generated/matmul_r16.c @@ -307,15 +307,15 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_r16 (gfc_array_r16 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_16)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_r4.c b/libgfortran/generated/matmul_r4.c index dbb31b05c3b..f6f86a6516f 100644 --- a/libgfortran/generated/matmul_r4.c +++ b/libgfortran/generated/matmul_r4.c @@ -307,15 +307,15 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_r4 (gfc_array_r4 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_4)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/generated/matmul_r8.c b/libgfortran/generated/matmul_r8.c index 23efed22e2a..9210d91718a 100644 --- a/libgfortran/generated/matmul_r8.c +++ b/libgfortran/generated/matmul_r8.c @@ -307,15 +307,15 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -850,15 +850,15 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1393,15 +1393,15 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -1932,15 +1932,15 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) @@ -2529,15 +2529,15 @@ matmul_r8 (gfc_array_r8 * const restrict retarray, b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = (GFC_REAL_8)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/io/file_pos.c b/libgfortran/io/file_pos.c index 5af9619bf46..771d548ea1d 100644 --- a/libgfortran/io/file_pos.c +++ b/libgfortran/io/file_pos.c @@ -82,7 +82,7 @@ formatted_backspace (st_parameter_filepos *fpp, gfc_unit *u) goto io_error; u->last_record--; u->endfile = NO_ENDFILE; - + u->last_char = EOF - 1; return; io_error: @@ -322,6 +322,7 @@ st_endfile (st_parameter_filepos *fpp) unit_truncate (u, stell (u->s), &fpp->common); u->endfile = AFTER_ENDFILE; + u->last_char = EOF - 1; if (0 == stell (u->s)) u->flags.position = POSITION_REWIND; } @@ -371,6 +372,7 @@ st_endfile (st_parameter_filepos *fpp) if (u == NULL) return; u->endfile = AFTER_ENDFILE; + u->last_char = EOF - 1; } } @@ -430,6 +432,7 @@ st_rewind (st_parameter_filepos *fpp) u->current_record = 0; u->strm_pos = 1; u->read_bad = 0; + u->last_char = EOF - 1; } /* Update position for INQUIRE. */ u->flags.position = POSITION_REWIND; @@ -458,6 +461,7 @@ st_flush (st_parameter_filepos *fpp) fbuf_flush (u, u->mode); sflush (u->s); + u->last_char = EOF - 1; unlock_unit (u); } else diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index 9175a6bb677..24584fa9930 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -2871,6 +2871,7 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, index_type m; size_t obj_name_len; void *pdata; + gfc_class list_obj; /* If we have encountered a previous read error or this object has not been touched in name parsing, just return. */ @@ -2909,11 +2910,28 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, { /* Update the pointer to the data, using the current index vector */ - pdata = (void*)(nl->mem_pos + offset); - for (dim = 0; dim < nl->var_rank; dim++) - pdata = (void*)(pdata + (nl->ls[dim].idx - - GFC_DESCRIPTOR_LBOUND(nl,dim)) - * GFC_DESCRIPTOR_STRIDE(nl,dim) * nl->size); + if ((nl->type == BT_DERIVED || nl->type == BT_CLASS) + && nl->dtio_sub != NULL) + { + pdata = NULL; /* Not used under these conidtions. */ + if (nl->type == BT_CLASS) + list_obj.data = ((gfc_class*)nl->mem_pos)->data; + else + list_obj.data = (void *)nl->mem_pos; + + for (dim = 0; dim < nl->var_rank; dim++) + list_obj.data = list_obj.data + (nl->ls[dim].idx + - GFC_DESCRIPTOR_LBOUND(nl,dim)) + * GFC_DESCRIPTOR_STRIDE(nl,dim) * nl->size; + } + else + { + pdata = (void*)(nl->mem_pos + offset); + for (dim = 0; dim < nl->var_rank; dim++) + pdata = (void*)(pdata + (nl->ls[dim].idx + - GFC_DESCRIPTOR_LBOUND(nl,dim)) + * GFC_DESCRIPTOR_STRIDE(nl,dim) * nl->size); + } /* If we are finished with the repeat count, try to read next value. */ @@ -2958,6 +2976,7 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, break; case BT_DERIVED: + case BT_CLASS: /* If this object has a User Defined procedure, call it. */ if (nl->dtio_sub != NULL) { @@ -2970,13 +2989,11 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, int noiostat; int *child_iostat = NULL; gfc_array_i4 vlist; - gfc_class list_obj; formatted_dtio dtio_ptr = (formatted_dtio)nl->dtio_sub; GFC_DESCRIPTOR_DATA(&vlist) = NULL; GFC_DIMENSION_SET(vlist.dim[0],1, 0, 0); - list_obj.data = (void *)nl->mem_pos; list_obj.vptr = nl->vtable; list_obj.len = 0; diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index f16d8c55f6d..298b29e8d3e 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -272,12 +272,6 @@ read_sf_internal (st_parameter_dt *dtp, int *length) return NULL; } - if (base && *base == 0) - { - generate_error (&dtp->common, LIBERROR_EOR, NULL); - return NULL; - } - dtp->u.p.current_unit->bytes_left -= *length; if (((dtp->common.flags & IOPARM_DT_HAS_SIZE) != 0) || @@ -470,11 +464,24 @@ read_block_form (st_parameter_dt *dtp, int *nbytes) } } - if (unlikely (dtp->u.p.current_unit->bytes_left == 0 - && !is_internal_unit(dtp))) + if (is_internal_unit(dtp)) { - hit_eof (dtp); - return NULL; + if (*nbytes > 0 && dtp->u.p.current_unit->bytes_left == 0) + { + if (dtp->u.p.advance_status == ADVANCE_NO) + { + generate_error (&dtp->common, LIBERROR_EOR, NULL); + return NULL; + } + } + } + else + { + if (unlikely (dtp->u.p.current_unit->bytes_left == 0)) + { + hit_eof (dtp); + return NULL; + } } *nbytes = dtp->u.p.current_unit->bytes_left; @@ -3970,7 +3977,7 @@ finalize_transfer (st_parameter_dt *dtp) fbuf_seek (dtp->u.p.current_unit, 0, SEEK_END); dtp->u.p.current_unit->saved_pos = 0; - + dtp->u.p.current_unit->last_char = EOF - 1; next_record (dtp, 1); done: diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index cfa4fcf0edc..9d9d11728bd 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -808,9 +808,7 @@ internal_proto(get_unformatted_convert); /* Secure getenv() which returns NULL if running as SUID/SGID. */ #ifndef HAVE_SECURE_GETENV -#ifdef HAVE___SECURE_GETENV -#define secure_getenv __secure_getenv -#elif defined(HAVE_GETUID) && defined(HAVE_GETEUID) \ +#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) \ && defined(HAVE_GETGID) && defined(HAVE_GETEGID) #define FALLBACK_SECURE_GETENV extern char *secure_getenv (const char *); diff --git a/libgfortran/m4/matmul_internal.m4 b/libgfortran/m4/matmul_internal.m4 index d35968b3be5..f7b82483cd9 100644 --- a/libgfortran/m4/matmul_internal.m4 +++ b/libgfortran/m4/matmul_internal.m4 @@ -223,15 +223,15 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl b_offset = 1 + b_dim1; b -= b_offset; - /* Early exit if possible */ - if (m == 0 || n == 0 || k == 0) - return; - /* Empty c first. */ for (j=1; j<=n; j++) for (i=1; i<=m; i++) c[i + j * c_dim1] = ('rtype_name`)0; + /* Early exit if possible */ + if (m == 0 || n == 0 || k == 0) + return; + /* Start turning the crank. */ i1 = n; for (jj = 1; jj <= i1; jj += 512) diff --git a/libgfortran/runtime/environ.c b/libgfortran/runtime/environ.c index bf02188edec..f0a593e6074 100644 --- a/libgfortran/runtime/environ.c +++ b/libgfortran/runtime/environ.c @@ -37,9 +37,20 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see provided. */ #ifdef FALLBACK_SECURE_GETENV + +#if SUPPORTS_WEAKREF && defined(HAVE___SECURE_GETENV) +static char* weak_secure_getenv (const char*) + __attribute__((__weakref__("__secure_getenv"))); +#endif + char * secure_getenv (const char *name) { +#if SUPPORTS_WEAKREF && defined(HAVE___SECURE_GETENV) + if (weak_secure_getenv) + return weak_secure_getenv (name); +#endif + if ((getuid () == geteuid ()) && (getgid () == getegid ())) return getenv (name); else |