diff options
author | Thomas Schwinge <tschwinge@baylibre.com> | 2024-04-24 09:26:39 +0200 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2024-06-05 09:01:59 +0200 |
commit | a7d75773adadfcd536a5ded48ba215f18e8c5b3d (patch) | |
tree | d8f4b01458a2431db47a8ddecaeaea9709299052 /gcc | |
parent | 38dd7419324490b386bbac06ddc5fafbfe8629d3 (diff) | |
download | gcc-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.
Diffstat (limited to 'gcc')
-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.C | 62 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/special/initpri2.C | 39 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/initpri1-lto.c | 2 |
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" |