Commit 82e259b8 by Thomas Koenig

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
parent 52b16cb3
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> 2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049 PR fortran/82049
......
...@@ -5593,6 +5593,22 @@ gfc_conv_intrinsic_ibits (gfc_se * se, gfc_expr * expr) ...@@ -5593,6 +5593,22 @@ gfc_conv_intrinsic_ibits (gfc_se * se, gfc_expr * expr)
} }
static void 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, gfc_conv_intrinsic_shift (gfc_se * se, gfc_expr * expr, bool right_shift,
bool arithmetic) bool arithmetic)
{ {
...@@ -8718,6 +8734,10 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr) ...@@ -8718,6 +8734,10 @@ gfc_conv_intrinsic_function (gfc_se * se, gfc_expr * expr)
gfc_conv_intrinsic_minmaxloc (se, expr, GT_EXPR); gfc_conv_intrinsic_minmaxloc (se, expr, GT_EXPR);
break; break;
case GFC_ISYM_SHAPE:
gfc_conv_intrinsic_shape (se, expr);
break;
default: default:
gfc_conv_intrinsic_funcall (se, expr); gfc_conv_intrinsic_funcall (se, expr);
break; break;
......
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> 2018-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/82049 PR fortran/82049
......
! { 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment