+2018-01-13 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/52162
+ * trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if
+ the rhs expression is neither an elemental nor a conversion
+ function.
+
+ PR fortran/83622
+ * trans-array.c (is_pointer_array): Remove unconditional return
+ of false for -fopenmp.
+
2018-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
<emsr@gcc.gnu.org>
/* Walk the lhs. */
lss = gfc_walk_expr (expr1);
if (gfc_is_reallocatable_lhs (expr1)
- && !(expr2->expr_type == EXPR_FUNCTION
- && expr2->value.function.isym != NULL))
+ && !(expr2->expr_type == EXPR_FUNCTION
+ && expr2->value.function.isym != NULL
+ && !(expr2->value.function.isym->elemental
+ || expr2->value.function.isym->conversion)))
lss->is_alloc_lhs = 1;
+
rss = NULL;
if ((expr1->ts.type == BT_DERIVED)
+2018-01-13 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/52162
+ * gfortran.dg/bounds_check_19.f90 : New test.
+
2018-01-12 Jakub Jelinek <jakub@redhat.com>
* gcc.target/powerpc/float128-hw7.c: Use scan-assembler-times
--- /dev/null
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+!
+! Test the fix for PR52162 in which the elemental and conversion
+! intrinsics in lines 14 and 19 would cause the bounds check to fail.
+!
+! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
+!
+ integer(4), allocatable :: a(:)
+ integer(8), allocatable :: b(:)
+ real, allocatable :: c(:)
+ allocate (b(7:11), source = [7_8,8_8,9_8,10_8,11_8])
+
+ a = b ! Implicit conversion
+
+ if (lbound (a, 1) .ne. lbound(b, 1)) call abort
+ if (ubound (a, 1) .ne. ubound(b, 1)) call abort
+
+ c = sin(real(b(9:11))/100_8) ! Elemental intrinsic
+
+ if ((ubound(c, 1) - lbound(c, 1)) .ne. 2) call abort
+ if (any (nint(asin(c)*100.0) .ne. b(9:11))) call abort
+ deallocate (a, b, c)
+ end