diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2018-02-07 21:08:51 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2018-02-07 21:08:51 +0000 |
commit | 82e259b893021c9b82db80456d409ea6d6bc41d7 (patch) | |
tree | bc6befe5f4dc22e140515185c56992b184d261cf | |
parent | 52b16cb3d48a328c9cdaa0ca55c151066ec65e4d (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 20 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/shape_9.f90 | 16 |
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 |