On 10/11/19 8:47 AM, Richard Sandiford wrote:
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.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

I wasn't able to come up with a C test case that triggers the bug
but the fix seems obviously safe and correct to me.  Thanks for
handling it!

Martin


Richard


2019-10-11  Richard Sandiford  <richard.sandif...@arm.com>

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

Index: gcc/tree-ssa-strlen.c
===================================================================
--- gcc/tree-ssa-strlen.c       2019-10-11 15:43:51.127514545 +0100
+++ gcc/tree-ssa-strlen.c       2019-10-11 15:46:11.718524445 +0100
@@ -4026,10 +4026,10 @@ count_nonzero_bytes (tree exp, unsigned
/* 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,


Reply via email to