aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2018-02-07 21:08:51 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2018-02-07 21:08:51 +0000
commit82e259b893021c9b82db80456d409ea6d6bc41d7 (patch)
treebc6befe5f4dc22e140515185c56992b184d261cf
parent52b16cb3d48a328c9cdaa0ca55c151066ec65e4d (diff)
downloadgcc-82e259b893021c9b82db80456d409ea6d6bc41d7.zip
gcc-82e259b893021c9b82db80456d409ea6d6bc41d7.tar.gz
gcc-82e259b893021c9b82db80456d409ea6d6bc41d7.tar.bz2
re PR fortran/68560 (The test gfortran.dg/shape_8.f90 now fails when compiled with -flto)
2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/68560 * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. (gfc_conv_intrinsic_function): Call it. 2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/68560 * gfortran.dg/shape_9.f90: New test. From-SVN: r257462
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-intrinsic.c20
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/shape_9.f9016
4 files changed, 47 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4b2343c..7dbb9c1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/68560
+ * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function.
+ (gfc_conv_intrinsic_function): Call it.
+
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 9cc4f33..337227d 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -5593,6 +5593,22 @@ gfc_conv_intrinsic_ibits (gfc_se * se, gfc_expr * expr)
}
static void
+gfc_conv_intrinsic_shape (gfc_se *se, gfc_expr *expr)
+{
+ gfc_actual_arglist *s, *k;
+ gfc_expr *e;
+
+ /* Remove the KIND argument, if present. */
+ s = expr->value.function.actual;
+ k = s->next;
+ e = k->expr;
+ gfc_free_expr (e);
+ k->expr = NULL;
+
+ gfc_conv_intrinsic_funcall (se, expr);
+}
+
+static void
gfc_conv_intrinsic_shift (gfc_se * se, gfc_expr * expr, bool right_shift,
bool arithmetic)
{
@@ -8718,6 +8734,10 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr)
gfc_conv_intrinsic_minmaxloc (se, expr, GT_EXPR);
break;
+ case GFC_ISYM_SHAPE:
+ gfc_conv_intrinsic_shape (se, expr);
+ break;
+
default:
gfc_conv_intrinsic_funcall (se, expr);
break;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5191a6b..24a99a5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-07 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/68560
+ * gfortran.dg/shape_9.f90: New test.
+
2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049
diff --git a/gcc/testsuite/gfortran.dg/shape_9.f90 b/gcc/testsuite/gfortran.dg/shape_9.f90
new file mode 100644
index 0000000..6d33f97
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/shape_9.f90
@@ -0,0 +1,16 @@
+! { dg-do run }
+! { dg-require-effective-target lto }
+! { dg-options "-flto" }
+! Check that there are no warnings with LTO for a KIND argument.
+!
+program test
+ implicit none
+ real, allocatable :: x(:,:)
+
+ allocate(x(2,5))
+ if (any(shape(x) /= [ 2, 5 ])) call abort
+ if (any(shape(x,kind=1) /= [ 2, 5 ])) call abort
+ if (any(shape(x,kind=2) /= [ 2, 5 ])) call abort
+ if (any(shape(x,kind=4) /= [ 2, 5 ])) call abort
+ if (any(shape(x,kind=8) /= [ 2, 5 ])) call abort
+ end program test