diff options
-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" } } */ |