This XFAILs the bogus diagnostic test and rectifies the expectation on the optimization.
Tested on x86_64-unknown-linux-gnu, pushed. 2021-11-10 Richard Biener <rguent...@suse.de> PR testsuite/102690 * g++.dg/warn/Warray-bounds-16.C: XFAIL diagnostic part and optimization. --- gcc/testsuite/g++.dg/warn/Warray-bounds-16.C | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C index 17b4d0d194e..89cbadb91c7 100644 --- a/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C +++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-16.C @@ -19,11 +19,11 @@ struct S p = (int*) new unsigned char [sizeof (int) * m]; for (int i = 0; i < m; i++) - new (p + i) int (); + new (p + i) int (); /* { dg-bogus "bounds" "pr102690" { xfail *-*-* } } */ } }; S a (0); -/* Verify the loop has been eliminated. - { dg-final { scan-tree-dump-not "goto" "optimized" } } */ +/* The loop cannot be eliminated since the global 'new' can change 'm'. */ +/* { dg-final { scan-tree-dump-not "goto" "optimized" { xfail *-*-* } } } */ -- 2.31.1