From 21c6ad7a12fecc4c85ac26289d9096379b550585 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Wed, 10 Feb 2021 14:42:22 -0700 Subject: [PATCH] Add test for PR tree-optimization/92879. gcc/testsuite/ChangeLog: PR tree-optimization/92879 * g++.dg/warn/Warray-bounds-16.C: New test. --- gcc/testsuite/g++.dg/warn/Warray-bounds-16.C | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/Warray-bounds-16.C 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 00000000000..17b4d0d194e --- /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" } } */ -- 2.30.2