gcc/fortran/ChangeLog:
PR fortran/107706
* openmp.cc (gfc_resolve_omp_assumptions): Reject nonscalars.
gcc/testsuite/ChangeLog:
PR fortran/107706
* gfortran.dg/gomp/assume-2.f90: Update dg-error.
* gfortran.dg/gomp/assumes-2.f90: Likewise.
* gfortran.dg/gomp/assume-5.f90: New test.
(cherry picked from commit
2ce55247a8bf32985a96ed63a7a92d36746723dc)
+2023-01-16 Tobias Burnus <tobias@codesourcery.com>
+
+ Backported from master:
+ 2023-01-12 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/107706
+ * openmp.cc (gfc_resolve_omp_assumptions): Reject nonscalars.
+
2022-12-21 Tobias Burnus <tobias@codesourcery.com>
Backported from master:
gfc_resolve_omp_assumptions (gfc_omp_assumptions *assume)
{
for (gfc_expr_list *el = assume->holds; el; el = el->next)
- if (!gfc_resolve_expr (el->expr) || el->expr->ts.type != BT_LOGICAL)
- gfc_error ("HOLDS expression at %L must be a logical expression",
- &el->expr->where);
+ if (!gfc_resolve_expr (el->expr)
+ || el->expr->ts.type != BT_LOGICAL
+ || el->expr->rank != 0)
+ gfc_error ("HOLDS expression at %L must be a scalar logical expression",
+ &el->expr->where);
}
+2023-01-16 Tobias Burnus <tobias@codesourcery.com>
+
+ Backported from master:
+ 2023-01-12 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/107706
+ * gfortran.dg/gomp/assume-2.f90: Update dg-error.
+ * gfortran.dg/gomp/assumes-2.f90: Likewise.
+ * gfortran.dg/gomp/assume-5.f90: New test.
+
2023-01-09 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
end if
! !$omp end assume - silence: 'Unexpected !$OMP END ASSUME statement'
- !$omp assume holds (1.0) ! { dg-error "HOLDS expression at .1. must be a logical expression" }
+ !$omp assume holds (1.0) ! { dg-error "HOLDS expression at .1. must be a scalar logical expression" }
!$omp end assume
end
--- /dev/null
+! PR fortran/107706
+!
+! Contributed by G. Steinmetz
+!
+
+integer function f(i)
+ implicit none
+ !$omp assumes holds(i < g()) ! { dg-error "HOLDS expression at .1. must be a scalar logical expression" }
+ integer, value :: i
+
+ !$omp assume holds(i < g()) ! { dg-error "HOLDS expression at .1. must be a scalar logical expression" }
+ block
+ end block
+ f = 3
+contains
+ function g()
+ integer :: g(2)
+ g = 4
+ end
+end
!$omp assumes contains(target) holds(x > 0.0)
!$omp assumes absent(target)
!$omp assumes holds(0.0)
-! { dg-error "HOLDS expression at .1. must be a logical expression" "" { target *-*-* } .-1 }
+! { dg-error "HOLDS expression at .1. must be a scalar logical expression" "" { target *-*-* } .-1 }
end module
module m2