Fix unchecked use of tree_to_uhwi in tree-ssa-strlen.c
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 15 Oct 2019 10:29:53 +0000 (10:29 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 15 Oct 2019 10:29:53 +0000 (10:29 +0000)
r273783 introduced an unchecked use of tree_to_uhwi.  This is
tested by the SVE ACLE patches, but could potentially trigger
in non-SVE cases too.

2019-10-15  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
before using tree_to_uhwi.

From-SVN: r276990

gcc/ChangeLog
gcc/tree-ssa-strlen.c

index 23213c75c690d31d79e1321a12edda40a11b51e8..bf3dbe5b08fd3b28e7b8d38b2e4bfcdf8d70912c 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-15  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
+       before using tree_to_uhwi.
+
 2019-10-15  Ilya Leoshkevich  <iii@linux.ibm.com>
 
        * config/s390/s390.md: Run %a0:DI splitters only after reload.
index ef2717d6a29e230c3907e68960fb465be93100e0..5b90ad3eba3a93573324cbc4c4eb37c73429641a 100644 (file)
@@ -4026,10 +4026,10 @@ count_nonzero_bytes (tree exp, unsigned HOST_WIDE_INT offset,
 
       /* The size of the MEM_REF access determines the number of bytes.  */
       tree type = TREE_TYPE (exp);
-      if (tree typesize = TYPE_SIZE_UNIT (type))
-       nbytes = tree_to_uhwi (typesize);
-      else
+      tree typesize = TYPE_SIZE_UNIT (type);
+      if (!typesize || !tree_fits_uhwi_p (typesize))
        return false;
+      nbytes = tree_to_uhwi (typesize);
 
       /* Handle MEM_REF = SSA_NAME types of assignments.  */
       return count_nonzero_bytes (arg, offset, nbytes, lenrange, nulterm,