aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2017-06-14 19:01:59 +0200
committerYvan Roux <yvan.roux@linaro.org>2017-06-14 19:01:59 +0200
commit6a44c6f4b668d633ea8e097fb5dfc5670bb5d9cb (patch)
tree427c7bc803972a45930fb025cc2985d65f04f3a1 /libgfortran
parentbdbf0a2323816aefa5ae9753c012d44df53774c6 (diff)
Merge branches/gcc-7-branch rev 249190.
Change-Id: I29353b553aba293581d8240e44db829cdc51b308
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog54
-rw-r--r--libgfortran/Makefile.in5
-rw-r--r--libgfortran/generated/matmul_c10.c40
-rw-r--r--libgfortran/generated/matmul_c16.c40
-rw-r--r--libgfortran/generated/matmul_c4.c40
-rw-r--r--libgfortran/generated/matmul_c8.c40
-rw-r--r--libgfortran/generated/matmul_i1.c40
-rw-r--r--libgfortran/generated/matmul_i16.c40
-rw-r--r--libgfortran/generated/matmul_i2.c40
-rw-r--r--libgfortran/generated/matmul_i4.c40
-rw-r--r--libgfortran/generated/matmul_i8.c40
-rw-r--r--libgfortran/generated/matmul_r10.c40
-rw-r--r--libgfortran/generated/matmul_r16.c40
-rw-r--r--libgfortran/generated/matmul_r4.c40
-rw-r--r--libgfortran/generated/matmul_r8.c40
-rw-r--r--libgfortran/io/file_pos.c6
-rw-r--r--libgfortran/io/list_read.c31
-rw-r--r--libgfortran/io/transfer.c29
-rw-r--r--libgfortran/libgfortran.h4
-rw-r--r--libgfortran/m4/matmul_internal.m48
-rw-r--r--libgfortran/runtime/environ.c11
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