diff options
author | Harald Anlauf <anlauf@gmx.de> | 2022-12-10 22:05:15 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2022-12-10 22:05:15 +0100 |
commit | ae4438537fbc2ed04f3b0fb32d4e02b0ed6977a1 (patch) | |
tree | 3354cf55ca8d797df65f0ad8ca1d0316d3b72e8a /gcc/fortran/simplify.cc | |
parent | 7676235f690e624b7ed41a22b22ce8ccfac1492f (diff) | |
download | gcc-ae4438537fbc2ed04f3b0fb32d4e02b0ed6977a1.zip gcc-ae4438537fbc2ed04f3b0fb32d4e02b0ed6977a1.tar.gz gcc-ae4438537fbc2ed04f3b0fb32d4e02b0ed6977a1.tar.bz2 |
Fortran: reject bad SIZE argument while simplifying ISHFTC [PR106911]
gcc/fortran/ChangeLog:
PR fortran/106911
* simplify.cc (gfc_simplify_ishftc): If the SIZE argument is known
to be outside the allowed range, terminate simplification.
gcc/testsuite/ChangeLog:
PR fortran/106911
* gfortran.dg/pr106911.f90: New test.
Diffstat (limited to 'gcc/fortran/simplify.cc')
-rw-r--r-- | gcc/fortran/simplify.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index aff9a1b..3d3aaba 100644 --- a/gcc/fortran/simplify.cc +++ b/gcc/fortran/simplify.cc @@ -3955,6 +3955,9 @@ gfc_simplify_ishftc (gfc_expr *e, gfc_expr *s, gfc_expr *sz) return NULL; gfc_extract_int (sz, &ssize); + + if (ssize > isize || ssize <= 0) + return &gfc_bad_expr; } else ssize = isize; |