https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106911

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |anlauf at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #3 from anlauf at gcc dot gnu.org ---
This is better:

diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc
index aff9a1b8ced..2c75605ca08 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;

Regtested OK.  Taking.

Reply via email to