Hi, On Tue, 15 Jun 2021 at 00:58, Martin Sebor via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > On 6/2/21 3:46 PM, Marek Polacek wrote: > > On Wed, Jun 02, 2021 at 03:40:49PM -0600, Martin Sebor via Gcc-patches > > wrote: > >> + if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) > >> + { > >> + /* See if this is a call to placement new. */ > >> + if (!fn > >> + || !DECL_IS_OPERATOR_NEW_P (fn) > >> + || DECL_IS_REPLACEABLE_OPERATOR_NEW_P (fn)) > >> + return NULL_TREE; > >> + > >> + tree fname = DECL_ASSEMBLER_NAME (fn); > >> + const char *name = IDENTIFIER_POINTER (fname); > >> + if (strcmp (name, "_ZnwmPv") // ordinary form > >> + && strcmp (name, "_ZnamPv")) // array form > >> + return NULL_TREE; > > > > Not a review, but you can use id_equal here and simplify things. > > Okay, done. >
On arm the new test Wmismatched-new-delete-4.C fails: /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C: In function 'void nowarn_placement_new()': /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:16:8: warning: 'void free(void*)' called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete] /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:16:42: note: returned from 'void* operator new(unsigned int, void*)' /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C: In function 'void nowarn_placement_array_new()': /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:21:8: warning: 'void free(void*)' called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete] /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:21:8: note: returned from 'void* operator new [](unsigned int, void*)' FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for bogus messages, line 16) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for bogus messages, line 21) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for warnings, line 29) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for warnings, line 36) and Wstringop-overflow-7.C: FAIL: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for warnings, line 23) FAIL: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for warnings, line 40) PASS: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for excess errors) (no warning emitted) Can you check? Thanks, Christophe > Thanks > Martin