aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog41
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection1.C40
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection2.C40
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection3.C25
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection4.C30
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection5.C28
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection6.C27
-rw-r--r--gcc/testsuite/g++.target/aarch64/fmv-selection7.C65
-rw-r--r--gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s1244.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s2244.c2
-rw-r--r--gcc/testsuite/gfortran.dg/pdt_51.f0357
-rw-r--r--gcc/testsuite/lib/sarif.py1
12 files changed, 355 insertions, 3 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a4c4a17..a7d81ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,44 @@
+2025-09-30 David Malcolm <dmalcolm@redhat.com>
+
+ * lib/sarif.py: Remove import of ET.
+
+2025-09-30 Alfie Richards <alfie.richards@arm.com>
+
+ * g++.target/aarch64/fmv-selection1.C: New test.
+ * g++.target/aarch64/fmv-selection2.C: New test.
+ * g++.target/aarch64/fmv-selection3.C: New test.
+ * g++.target/aarch64/fmv-selection4.C: New test.
+ * g++.target/aarch64/fmv-selection5.C: New test.
+ * g++.target/aarch64/fmv-selection6.C: New test.
+ * g++.target/aarch64/fmv-selection7.C: New test.
+
+2025-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/vect/tsvc/vect-tsvc-s1244.c (s1244): Fix comment typo,
+ ture -> true.
+ * gcc.dg/vect/tsvc/vect-tsvc-s2244.c (s2244): Likewise.
+
+2025-09-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/reduce1.adb: New test.
+
+2025-09-30 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/105380
+ PR fortran/102241
+ * gfortran.dg/pdt_49.f03: New test.
+ * gfortran.dg/pdt_11.f03: Deallocate 'o_fdef'.
+ * gfortran.dg/pdt_15.f03: Reinstate final 'pop_8' and update
+ the tree dump counts.
+ * gfortran.dg/pdt_20.f03: Deallocate 'x'.
+ * gfortran.dg/pdt_23.f03: Deallocate 'x'.
+ * gfortran.dg/pdt_3.f03: Eliminate the temporary 'matrix' and
+ use w%d directly in the allocation. Change the TODO comment and
+ comment on memory leak in allocation.
+ * gfortran.dg/pdt_39.f03: Comments on memory leaks.
+ * gfortran.dg/pdt_40.f03: Deallocate 'foo' and bar%x.
+ * gfortran.dg/pdt_50.f03: New test.
+
2025-09-29 YunQiang Su <yunqiang@isrc.iscas.ac.cn>
* gcc.target/mips/pr99217-2.c: New test.
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection1.C b/gcc/testsuite/g++.target/aarch64/fmv-selection1.C
new file mode 100644
index 0000000..4ee5446
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection1.C
@@ -0,0 +1,40 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 1;
+}
+
+__attribute__((target_version("rng")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 2;
+}
+
+__attribute__((target_version("flagm")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 3;
+}
+
+__attribute__((target_version("rng+flagm")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 4;
+}
+
+int bar()
+{
+ return foo ();
+}
+
+/* Cannot optimize */
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection2.C b/gcc/testsuite/g++.target/aarch64/fmv-selection2.C
new file mode 100644
index 0000000..f580dac
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection2.C
@@ -0,0 +1,40 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a+rng+flagm" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 1;
+}
+
+__attribute__((target_version("rng")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 2;
+}
+
+__attribute__((target_version("flagm")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 3;
+}
+
+__attribute__((target_version("rng+flagm")))
+__attribute__((optimize("O0")))
+int foo ()
+{
+ return 4;
+}
+
+int bar()
+{
+ return foo ();
+}
+
+/* Can optimize to highest priority function */
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\._MrngMflagm\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection3.C b/gcc/testsuite/g++.target/aarch64/fmv-selection3.C
new file mode 100644
index 0000000..6b52fd4
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection3.C
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{ return 1; }
+
+__attribute__((target_version("rng")))
+int foo ();
+__attribute__((target_version("flagm")))
+int foo ();
+__attribute__((target_version("rng+flagm")))
+int foo ();
+
+__attribute__((target_version("rng+flagm")))
+int bar()
+{
+ return foo ();
+}
+
+/* Cannot optimize */
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\._MrngMflagm\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection4.C b/gcc/testsuite/g++.target/aarch64/fmv-selection4.C
new file mode 100644
index 0000000..155145d
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection4.C
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{ return 1; }
+
+__attribute__((target_version("rng")))
+int foo ();
+__attribute__((target_version("flagm")))
+int foo ();
+__attribute__((target_version("rng+flagm")))
+int foo ();
+
+__attribute__((target_version("default")))
+int bar()
+{
+ return foo ();
+}
+
+__attribute__((target_version("rng")))
+int bar();
+
+__attribute__((target_version("flagm")))
+int bar();
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\.default\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection5.C b/gcc/testsuite/g++.target/aarch64/fmv-selection5.C
new file mode 100644
index 0000000..4d6d38e
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection5.C
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{ return 1; }
+
+__attribute__((target_version("rng")))
+int foo ();
+__attribute__((target_version("flagm")))
+int foo ();
+__attribute__((target_version("rng+flagm")))
+int foo ();
+
+__attribute__((target_version("default")))
+int bar()
+{
+ return foo ();
+}
+
+__attribute__((target_version("flagm")))
+int bar();
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\.default\n" 0 } } */
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection6.C b/gcc/testsuite/g++.target/aarch64/fmv-selection6.C
new file mode 100644
index 0000000..db384e1
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection6.C
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a+rng" } */
+
+__attribute__((target_version("default")))
+__attribute__((optimize("O0")))
+int foo ()
+{ return 1; }
+
+__attribute__((target_version("rng")))
+int foo ();
+__attribute__((target_version("flagm")))
+int foo ();
+__attribute__((target_version("rng+flagm")))
+int foo ();
+
+__attribute__((target_version("default")))
+int bar()
+{
+ return foo ();
+}
+
+__attribute__((target_version("flagm")))
+int bar();
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3foov\._Mrng\n" 1 } } */
+
diff --git a/gcc/testsuite/g++.target/aarch64/fmv-selection7.C b/gcc/testsuite/g++.target/aarch64/fmv-selection7.C
new file mode 100644
index 0000000..41e7462
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/fmv-selection7.C
@@ -0,0 +1,65 @@
+/* { dg-do compile } */
+/* { dg-require-ifunc "" } */
+/* { dg-options "-O2 -march=armv8-a" } */
+
+[[gnu::optimize("O0")]]
+[[gnu::target_version ("default")]]
+int bar () {
+ return 1;
+}
+
+[[gnu::optimize("O0")]]
+[[gnu::target ("+sve2")]]
+[[gnu::target_version ("sve")]]
+int bar ();
+
+[[gnu::target ("+sve")]]
+int foo () {
+ return bar();
+}
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z3barv\._Msve\n" 1 } } */
+
+[[gnu::target_version ("default")]]
+int bar2 () {
+ return 1;
+}
+
+[[gnu::target_version ("sve2")]]
+int bar2 ();
+
+[[gnu::target_version ("default")]]
+int foo2 ();
+
+[[gnu::target_version ("sve")]]
+[[gnu::target ("+sve2")]]
+int foo2 () {
+ return bar2();
+}
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z4bar2v\._Msve2\n" 1 } } */
+
+[[gnu::target_version ("default")]]
+int bar3 () {
+ return 1;
+}
+
+[[gnu::target_version ("sve")]]
+int bar3 ();
+
+[[gnu::target ("+rng")]]
+[[gnu::target_version ("sve2")]]
+int bar3 ();
+
+[[gnu::target_version ("default")]]
+int foo3 ();
+
+[[gnu::target_version ("sve")]]
+int foo3 () {
+ return bar3 ();
+}
+
+[[gnu::target_version ("sve2+rng")]]
+int foo3 ();
+
+/* { dg-final { scan-assembler-times "\n\tb\t_Z4bar3v\n" 1 } } */
diff --git a/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s1244.c b/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s1244.c
index 94a3041..3b76bb3 100644
--- a/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s1244.c
+++ b/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s1244.c
@@ -9,7 +9,7 @@
real_t s1244(struct args_t * func_args)
{
// node splitting
-// cycle with ture and anti dependency
+// cycle with true and anti dependency
initialise_arrays(__func__);
diff --git a/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s2244.c b/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s2244.c
index 9b0ca74..277ebb8 100644
--- a/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s2244.c
+++ b/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s2244.c
@@ -9,7 +9,7 @@
real_t s2244(struct args_t * func_args)
{
// node splitting
-// cycle with ture and anti dependency
+// cycle with true and anti dependency
initialise_arrays(__func__);
diff --git a/gcc/testsuite/gfortran.dg/pdt_51.f03 b/gcc/testsuite/gfortran.dg/pdt_51.f03
new file mode 100644
index 0000000..46697bf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pdt_51.f03
@@ -0,0 +1,57 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! Test the fix for PR122089 in which the generic interface checking failed.
+!
+! Contributed by Damian Rouson <damian@archaeologic.codes>
+!
+module tensor_m
+ implicit none
+
+ type tensor_t(k)
+ integer, kind :: k = kind(1.)
+ real(k) values_
+ contains
+ generic :: values => double_precision_values
+ procedure double_precision_values
+ end type
+
+contains
+ function double_precision_values(self)
+ class(tensor_t(kind(1D0))) self
+ double precision double_precision_values
+ double_precision_values = self%values_
+ end function
+end module
+
+module input_output_pair_m
+ use tensor_m, only : tensor_t
+ implicit none
+
+ type input_output_pair_t(k)
+ integer, kind :: k = kind(1.)
+ type(tensor_t(k)) inputs_
+ end type
+
+ interface
+ module subroutine double_precision_write_to_stdout(input_output_pairs)
+ implicit none
+ type(input_output_pair_t(kind(1D0))) input_output_pairs
+ end subroutine
+ end interface
+end module
+
+submodule(input_output_pair_m) input_output_pair_s
+ implicit none
+contains
+ module procedure double_precision_write_to_stdout
+ print *, input_output_pairs%inputs_%values()
+ end procedure
+end submodule
+
+ use input_output_pair_m
+ type(input_output_pair_t(kind(1d0))) :: tgt
+ tgt%inputs_%values_ = 42d0
+ call double_precision_write_to_stdout(tgt)
+end
+! { dg-final { scan-tree-dump-times "double_precision_write_to_stdout \\(&tgt\\);" 1 "original" } }
diff --git a/gcc/testsuite/lib/sarif.py b/gcc/testsuite/lib/sarif.py
index d75a87e..f0b3ddd 100644
--- a/gcc/testsuite/lib/sarif.py
+++ b/gcc/testsuite/lib/sarif.py
@@ -1,6 +1,5 @@
import json
import os
-import xml.etree.ElementTree as ET
def sarif_from_env():
# return parsed JSON content a SARIF_PATH file