diff options
author | Martin Sebor <msebor@redhat.com> | 2021-05-04 13:46:37 -0600 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2021-05-04 13:50:58 -0600 |
commit | 158cdc7bd97d7ccca5bc8adaaf80fe51eacdc038 (patch) | |
tree | a47616b5de90c7a93c87bd887bad1e1f301e8679 /gcc/builtins.c | |
parent | 78624756f7cfa3870c4b8c4c383bca1c9cbb6918 (diff) | |
download | gcc-158cdc7bd97d7ccca5bc8adaaf80fe51eacdc038.zip gcc-158cdc7bd97d7ccca5bc8adaaf80fe51eacdc038.tar.gz gcc-158cdc7bd97d7ccca5bc8adaaf80fe51eacdc038.tar.bz2 |
PR middle-end/100307 - spurious -Wplacement-new with negative pointer offset
gcc/ChangeLog:
PR middle-end/100307
* builtins.c (compute_objsize_r): Clear base0 for pointers.
gcc/testsuite/ChangeLog:
PR middle-end/100307
* g++.dg/warn/Wplacement-new-size-9.C: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-26.c: New test.
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 0db4090..6f67eb7 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -5447,8 +5447,10 @@ compute_objsize_r (tree ptr, int ostype, access_ref *pref, if (!addr && POINTER_TYPE_P (TREE_TYPE (ptr))) { /* Set the maximum size if the reference is to the pointer - itself (as opposed to what it points to). */ + itself (as opposed to what it points to), and clear + BASE0 since the offset isn't necessarily zero-based. */ pref->set_max_size_range (); + pref->base0 = false; return true; } |