aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-04-24 09:26:39 +0200
committerThomas Schwinge <tschwinge@baylibre.com>2024-06-05 09:01:59 +0200
commita7d75773adadfcd536a5ded48ba215f18e8c5b3d (patch)
treed8f4b01458a2431db47a8ddecaeaea9709299052
parent38dd7419324490b386bbac06ddc5fafbfe8629d3 (diff)
downloadgcc-a7d75773adadfcd536a5ded48ba215f18e8c5b3d.zip
gcc-a7d75773adadfcd536a5ded48ba215f18e8c5b3d.tar.gz
gcc-a7d75773adadfcd536a5ded48ba215f18e8c5b3d.tar.bz2
Consolidate similar C/C++ test cases for 'constructor', 'destructor' function attributes with priority
gcc/testsuite/ * gcc.dg/initpri1.c: Integrate this... * g++.dg/special/initpri1.C: ..., and this... * c-c++-common/initpri1.c: ... here. * gcc.dg/initpri1-lto.c: Adjust. * gcc.dg/initpri2.c: Integrate this... * g++.dg/special/initpri2.C: ..., and this... * c-c++-common/initpri2.c: ... here.
-rw-r--r--gcc/testsuite/c-c++-common/initpri1.c (renamed from gcc/testsuite/gcc.dg/initpri1.c)21
-rw-r--r--gcc/testsuite/c-c++-common/initpri2.c (renamed from gcc/testsuite/gcc.dg/initpri2.c)1
-rw-r--r--gcc/testsuite/g++.dg/special/initpri1.C62
-rw-r--r--gcc/testsuite/g++.dg/special/initpri2.C39
-rw-r--r--gcc/testsuite/gcc.dg/initpri1-lto.c2
5 files changed, 12 insertions, 113 deletions
diff --git a/gcc/testsuite/gcc.dg/initpri1.c b/gcc/testsuite/c-c++-common/initpri1.c
index b6afd76..387f2a3 100644
--- a/gcc/testsuite/gcc.dg/initpri1.c
+++ b/gcc/testsuite/c-c++-common/initpri1.c
@@ -1,6 +1,5 @@
/* { dg-do run { target init_priority } } */
-
-extern void abort (void);
+/* Via the magic string "-std=*++" indicate that testing one (the default) C++ standard is sufficient. */
int i;
int j;
@@ -11,17 +10,17 @@ void c3() __attribute__((constructor (600)));
void c1() {
if (i++ != 0)
- abort ();
+ __builtin_abort ();
}
void c2() {
if (i++ != 2)
- abort ();
+ __builtin_abort ();
}
void c3() {
if (i++ != 1)
- abort ();
+ __builtin_abort ();
}
void d1() __attribute__((destructor (500)));
@@ -30,26 +29,26 @@ void d3() __attribute__((destructor (600)));
void d1() {
if (--i != 0)
- abort ();
+ __builtin_abort ();
}
void d2() {
if (--i != 2)
- abort ();
+ __builtin_abort ();
}
void d3() {
if (j != 2)
- abort ();
+ __builtin_abort ();
if (--i != 1)
- abort ();
+ __builtin_abort ();
}
void cd4() __attribute__((constructor (800), destructor (800)));
void cd4() {
if (i != 3)
- abort ();
+ __builtin_abort ();
++j;
}
@@ -57,6 +56,6 @@ int main () {
if (i != 3)
return 1;
if (j != 1)
- abort ();
+ __builtin_abort ();
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/initpri2.c b/gcc/testsuite/c-c++-common/initpri2.c
index fa9fda0..bda2a62 100644
--- a/gcc/testsuite/gcc.dg/initpri2.c
+++ b/gcc/testsuite/c-c++-common/initpri2.c
@@ -1,4 +1,5 @@
/* { dg-do compile { target init_priority } } */
+/* Via the magic string "-std=*++" indicate that testing one (the default) C++ standard is sufficient. */
/* Priorities must be in the range [0, 65535]. */
void c1()
diff --git a/gcc/testsuite/g++.dg/special/initpri1.C b/gcc/testsuite/g++.dg/special/initpri1.C
deleted file mode 100644
index bd24961..0000000
--- a/gcc/testsuite/g++.dg/special/initpri1.C
+++ /dev/null
@@ -1,62 +0,0 @@
-/* { dg-do run { target init_priority } } */
-
-extern "C" void abort ();
-
-int i;
-int j;
-
-void c1() __attribute__((constructor (500)));
-void c2() __attribute__((constructor (700)));
-void c3() __attribute__((constructor (600)));
-
-void c1() {
- if (i++ != 0)
- abort ();
-}
-
-void c2() {
- if (i++ != 2)
- abort ();
-}
-
-void c3() {
- if (i++ != 1)
- abort ();
-}
-
-void d1() __attribute__((destructor (500)));
-void d2() __attribute__((destructor (700)));
-void d3() __attribute__((destructor (600)));
-
-void d1() {
- if (--i != 0)
- abort ();
-}
-
-void d2() {
- if (--i != 2)
- abort ();
-}
-
-void d3() {
- if (j != 2)
- abort ();
- if (--i != 1)
- abort ();
-}
-
-void cd4() __attribute__((constructor (800), destructor (800)));
-
-void cd4() {
- if (i != 3)
- abort ();
- ++j;
-}
-
-int main () {
- if (i != 3)
- return 1;
- if (j != 1)
- abort ();
- return 0;
-}
diff --git a/gcc/testsuite/g++.dg/special/initpri2.C b/gcc/testsuite/g++.dg/special/initpri2.C
deleted file mode 100644
index fa9fda0..0000000
--- a/gcc/testsuite/g++.dg/special/initpri2.C
+++ /dev/null
@@ -1,39 +0,0 @@
-/* { dg-do compile { target init_priority } } */
-
-/* Priorities must be in the range [0, 65535]. */
-void c1()
- __attribute__((constructor (-1))); /* { dg-error "priorities" } */
-void c2()
- __attribute__((constructor (65536))); /* { dg-error "priorities" } */
-void d1()
- __attribute__((destructor (-1))); /* { dg-error "priorities" } */
-void d2()
- __attribute__((destructor (65536))); /* { dg-error "priorities" } */
-
-/* Priorities 0-100 are reserved for system libraries. */
-void c3()
- __attribute__((constructor (50))); /* { dg-warning "reserved" } */
-void d3()
- __attribute__((constructor (50))); /* { dg-warning "reserved" } */
-
-/* Priorities must be integral constants. */
-
-/* Pointers, even with constant values, are not allowed. */
-void c4()
- __attribute__((constructor ((void*) 500))); /* { dg-error "priorities" } */
-void d4()
- __attribute__((destructor ((void*) 500))); /* { dg-error "priorities" } */
-
-/* Integer variables are not allowed. */
-int i;
-void c5()
- __attribute__((constructor ((i)))); /* { dg-error "priorities" } */
-void d5()
- __attribute__((destructor ((i)))); /* { dg-error "priorities" } */
-
-/* Enumeration constants are allowed. */
-enum E { e = 500 };
-void c6()
- __attribute__((constructor ((e))));
-void d6()
- __attribute__((destructor ((e))));
diff --git a/gcc/testsuite/gcc.dg/initpri1-lto.c b/gcc/testsuite/gcc.dg/initpri1-lto.c
index 98a43c3..0c97cf4 100644
--- a/gcc/testsuite/gcc.dg/initpri1-lto.c
+++ b/gcc/testsuite/gcc.dg/initpri1-lto.c
@@ -2,4 +2,4 @@
/* { dg-require-effective-target lto } */
/* { dg-options "-flto -O3" } */
-#include "initpri1.c"
+#include "../c-c++-common/initpri1.c"