diff options
-rw-r--r-- | gcc/builtins.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr78750.C | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 20515e7..b056e12 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -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 index 0000000..54232e6 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr78750.C @@ -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); +} |