re PR middle-end/78750 (ICE in get_range_info, at tree-ssanames.c:375)
authorMarek Polacek <mpolacek@gcc.gnu.org>
Fri, 9 Dec 2016 19:05:28 +0000 (19:05 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Fri, 9 Dec 2016 19:05:28 +0000 (19:05 +0000)
PR middle-end/78750
* builtins.c (check_sizes): Use POINTER_TYPE_P.

* g++.dg/torture/pr78750.C: New.

From-SVN: r243498

gcc/builtins.c
gcc/testsuite/g++.dg/torture/pr78750.C [new file with mode: 0644]

index 20515e74235f3fc9f78ec78fbf20265ce649589f..b056e1227ea505f26ac7728d704264a305514868 100644 (file)
@@ -3091,7 +3091,7 @@ check_sizes (int opt, tree exp, tree size, tree maxlen, tree str, tree objsize)
     {
       /* STR is normally a pointer to string but as a special case
         it can be an integer denoting the length of a string.  */
-      if (TREE_CODE (TREE_TYPE (str)) == POINTER_TYPE)
+      if (POINTER_TYPE_P (TREE_TYPE (str)))
        {
          /* Try to determine the range of lengths the source string
             refers to.  If it can be determined add one to it for
diff --git a/gcc/testsuite/g++.dg/torture/pr78750.C b/gcc/testsuite/g++.dg/torture/pr78750.C
new file mode 100644 (file)
index 0000000..54232e6
--- /dev/null
@@ -0,0 +1,10 @@
+// PR middle-end/78750
+// { dg-do compile }
+
+extern "C" char *strcpy (char *, const char *);
+
+void
+fn (char *p, char &as)
+{
+  strcpy (p, &as);
+}