ld: Avoid folding new and delete pairs

GCC 15 may fold new and delete pairs, like

  A *bb = new A[10];
  delete [] bb;
  bb = new (std::nothrow) A [10];
  delete [] bb;

as shown in

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115712

Avoid folding new and delete pairs by adding a function call between new
and delete.

	* testsuite/ld-elf/dl5.cc: Include "dl5.h".
	(A): Removed.
	Call foo between new and delete.
	* testsuite/ld-elf/dl5.h: New file.
	* testsuite/ld-elf/new.cc: Include "dl5.h".
	(foo): New function.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
diff --git a/ld/testsuite/ld-elf/dl5.cc b/ld/testsuite/ld-elf/dl5.cc
index cc40455..77dbb62 100644
--- a/ld/testsuite/ld-elf/dl5.cc
+++ b/ld/testsuite/ld-elf/dl5.cc
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <new>
+#include "dl5.h"
 
 int pass = 0;
 
@@ -30,22 +31,14 @@
     free (ptr);
 }
 
-class A 
-{
-public:
-  A() {}
-  ~A() { }
-  int a;
-  int b;
-};
-
-
 int
 main (void)
 {
   A *bb = new A[10];
   delete [] bb;
+  foo (bb);
   bb = new (std::nothrow) A [10];
+  foo (bb);
   delete [] bb;
 
   if (pass == 4)
diff --git a/ld/testsuite/ld-elf/dl5.h b/ld/testsuite/ld-elf/dl5.h
new file mode 100644
index 0000000..0d4a7c1
--- /dev/null
+++ b/ld/testsuite/ld-elf/dl5.h
@@ -0,0 +1,10 @@
+class A 
+{
+public:
+  A() {}
+  ~A() { }
+  int a;
+  int b;
+};
+
+extern void foo (A *);
diff --git a/ld/testsuite/ld-elf/new.cc b/ld/testsuite/ld-elf/new.cc
index 513cf2f..b038d77 100644
--- a/ld/testsuite/ld-elf/new.cc
+++ b/ld/testsuite/ld-elf/new.cc
@@ -1,4 +1,5 @@
 #include <new>
+#include "dl5.h"
 
 using std::bad_alloc;
 
@@ -45,3 +46,8 @@
 {
   return ::operator new(sz, nothrow);
 }
+
+void
+foo (A *)
+{
+}