diff options
author | Martin Sebor <msebor@redhat.com> | 2021-02-10 14:42:22 -0700 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2021-02-10 14:43:24 -0700 |
commit | 21c6ad7a12fecc4c85ac26289d9096379b550585 (patch) | |
tree | 4e41bef7e19a2987f0c2a33f6d133caa22eab142 /gcc | |
parent | 1f5c80883efce5242d892eb771ebb60830d20e0f (diff) | |
download | gcc-21c6ad7a12fecc4c85ac26289d9096379b550585.zip gcc-21c6ad7a12fecc4c85ac26289d9096379b550585.tar.gz gcc-21c6ad7a12fecc4c85ac26289d9096379b550585.tar.bz2 |
Add test for PR tree-optimization/92879.
gcc/testsuite/ChangeLog:
PR tree-optimization/92879
* g++.dg/warn/Warray-bounds-16.C: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Warray-bounds-16.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C new file mode 100644 index 0000000..17b4d0d --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C @@ -0,0 +1,29 @@ +/* PR tree-optimization/92879 - incorrect warning of __builtin_memset + offset is out of the bounds on zero-size allocation and initialization + { dg-do compile } + { dg-options "-O2 -Wall -fdump-tree-optimized" } */ + +inline void* operator new (__SIZE_TYPE__, void * v) +{ + return v; +} + +struct S +{ + int* p; + int m; + + S (int i) + { + m = i; + p = (int*) new unsigned char [sizeof (int) * m]; + + for (int i = 0; i < m; i++) + new (p + i) int (); + } +}; + +S a (0); + +/* Verify the loop has been eliminated. + { dg-final { scan-tree-dump-not "goto" "optimized" } } */ |