diff options
Diffstat (limited to 'gcc/testsuite/g++.dg')
45 files changed, 899 insertions, 328 deletions
diff --git a/gcc/testsuite/g++.dg/abi/layout2.C b/gcc/testsuite/g++.dg/abi/layout2.C index fb4e1e5d9ff..d9ccda8a074 100644 --- a/gcc/testsuite/g++.dg/abi/layout2.C +++ b/gcc/testsuite/g++.dg/abi/layout2.C @@ -1,5 +1,7 @@ // Red Hat bugzilla 65210 // { dg-do run } +// APPLE LOCAL Apple has specific long double warning message then FSF +// { dg-options "-Wno-long-double" { target *-apple-darwin* } } struct A { int a; diff --git a/gcc/testsuite/g++.dg/align-test-1.C b/gcc/testsuite/g++.dg/align-test-1.C new file mode 100644 index 00000000000..e3df21d6d3b --- /dev/null +++ b/gcc/testsuite/g++.dg/align-test-1.C @@ -0,0 +1,347 @@ +/* APPLE LOCAL file Macintosh alignment */ + +/* { dg-do run } */ +/* { dg-options "-Wno-long-long" } */ + +/* + * Macintosh compiler alignment test for C++. + * Fred Forsman + * Apple Computer, Inc. + * (C) 2000-2001. + * Last modified 2002-5-24. + */ + + /* Check whether we are testing GCC 3 or later. If so, it has a + different scheme for laying out classes: members of a derived + class can be laid out starting in the padding at the end of the + base class. */ +#ifdef __GNUC__ +#if __GNUC__ >= 3 + #define GCC3 1 +#endif +#endif + +#include <stdio.h> +#include <stddef.h> +#include <string.h> + +extern "C" void abort (void); + +#define Q(x) #x, x + +typedef unsigned char UINT8; +typedef unsigned short UINT16; +typedef unsigned long UINT32; + +static int bad_option = 0; +static int flag_verbose = 0; +static int nbr_failures = 0; + +/* === classes === */ + +class C1 { + static const int f1 = 1; + UINT8 f2; +}; + +class C2 { + static int f1; + UINT8 f2; +}; + +class C3 { + public: + enum E1 { + f1 = 1 + }; + protected: + UINT8 f2; +}; + +class C4 { + UINT8 f1; + static const int f2 = 1; +}; + +class C5 { + UINT8 f2; + static int f1; +}; + +class C6 { + UINT8 f1; + enum E1 { + f2 = 1 + }; +}; + +class C7 { + /* empty base class */ +}; + +#pragma options align=mac68k + +class C8 { + /* empty base class */ +}; + +class C9: public C8 { + public: + UINT8 f1; +}; + +#pragma options align=reset + +/* What is offset of first field after an empty base class? */ +class C10: public C7 { + public: + UINT8 f1; +}; + +/* GCC3 starts layout of derived class in padding at end of base class. */ +class C11 { + public: + UINT32 f1; + UINT8 f2; +}; + +class C12: public C11 { + public: + UINT8 f3; +}; + +/* Check whether compiler will reorder members to take advantage of + padding. If the compiler did this (which it does not appear to + do), f3 and f4 in C14 would be reordered to take advantage of the + padding at the end of the base class. */ +class C13 { + public: + UINT32 f1; + UINT16 f2; +}; + +class C14: public C13 { + public: + UINT32 f3; + UINT16 f4; +}; + +/* Tests for double aligned base class */ + +class C15 { + public: + double f1; + long f2; +}; + +class C16: public C15 { +}; + +class C17: public C15 { + public: + long f3; +}; + +class C18: public C16 { + public: + char f3; +}; + +class C19: public C17 { + public: + char f4; +}; + +/* Tests for alignment in class with v-table pointer */ + +class C20 { + public: + double f1; + virtual void func1(void); +}; + +/* === vectors === */ + +#ifdef __VEC__ +class VC1 { + public: + vector signed short f1; + UINT8 f2; +}; + +typedef struct VS1 { + VC1 f1; + UINT8 f2; +} VS1; + +class VC2: public VC1 { + public: + UINT8 f1; +}; + +typedef struct VS2 { + UINT8 f1; + VC2 f2; + UINT8 f3; +} VS2; + +class VC3 { + public: + vector signed short f1; + virtual void func1(void); +}; + +#endif + +/* === bools === */ + +typedef struct B1 { + bool f1; + UINT8 f2; +} B1; + +typedef struct B2 { + UINT8 f1; + bool f2; +} B2; + + +static void check(char * rec_name, int actual, int expected, char * comment) +{ + if (flag_verbose || (actual != expected)) { + printf("%-20s = %2d (%2d) ", rec_name, actual, expected); + if (actual != expected) { + printf("*** FAIL"); + nbr_failures++; + } else + printf(" PASS"); + printf(": %s\n", comment); + } +} + +static void check_option(char *option) +{ + if (*option == '-') { + if (strcmp(option, "-v") == 0) + flag_verbose = 1; + else { + fprintf(stderr, "*** unrecognized option '%s'.\n", option); + bad_option = 1; + } + } else { + fprintf(stderr, "*** unrecognized option '%s'.\n", option); + bad_option = 1; + } +} + +int main(int argc, char *argv[]) +{ + int i; + + for (i = 1; i < argc; i++) + check_option(argv[i]); + + if (bad_option) + return 1; + + check(Q(sizeof(C1)), 1, "const as 1st field"); + check(Q(sizeof(C2)), 1, "static as 1st field"); + check(Q(sizeof(C3)), 1, "enum as 1st field"); + check(Q(sizeof(C4)), 1, "const as 2nd field"); + check(Q(sizeof(C5)), 1, "static as 2nd field"); + check(Q(sizeof(C6)), 1, "enum as 2nd field"); + check(Q(sizeof(C7)), 1, "empty class, power mode"); + check(Q(sizeof(C8)), 2, "empty class, mac68k mode"); + check(Q(sizeof(C9)), 2, "class with empty base class and one char, mac68k"); + check(Q(offsetof(C9, f1)), 0, "offset of 1st field after empty base class"); /* { dg-warning "invalid access" "" } */ + /* { dg-warning "macro was used incorrectly" "" { target *-*-* } 256 } */ + check(Q(sizeof(C10)), 1, "class based on an empty class, power mode"); + check(Q(sizeof(C11)), 8, "class with long, char"); +#ifdef GCC3 + check(Q(sizeof(C12)), 8, "class with base class with long, char and its own char"); +#else + check(Q(sizeof(C12)), 12, "class with base class with long, char and its own char"); +#endif +#ifdef GCC3 + check(Q(offsetof(C12, f3)), 5, "offset of 1st field in class with a base class with a long, char"); /* { dg-warning "invalid access" "" } */ + /* { dg-warning "macro was used incorrectly" "" { target *-*-* } 266 } */ +#else + check(Q(offsetof(C12, f3)), 8, "offset of 1st field in class with a base class with a long, char"); +#endif + check(Q(sizeof(C13)), 8, "class with long, short"); + check(Q(sizeof(C14)), 16, "derived class with short, long"); + check(Q(offsetof(C14, f3)), 8, "offset of 1st field after base class with padding"); /* { dg-warning "invalid access" "" } */ + /* { dg-warning "macro was used incorrectly" "" { target *-*-* } 273 } */ + check(Q(offsetof(C14, f4)), 12, "offset of 2nd field after base class with padding"); /* { dg-warning "invalid access" "" } */ + /* { dg-warning "macro was used incorrectly" "" { target *-*-* } 275 } */ + + check(Q(sizeof(C15)), 16, "base class with double, long"); + check(Q(sizeof(C16)), 16, "empty derived class with base with double, long"); +#ifdef GCC3 + check(Q(sizeof(C17)), 16, "derived class with base with double, long and its own long"); +#else + check(Q(sizeof(C17)), 24, "derived class with base with double, long and its own long"); +#endif +#ifdef GCC3 + check(Q(sizeof(C18)), 16, "derived class based on empty derived class with base with double, long"); +#else + check(Q(sizeof(C18)), 24, "derived class based on empty derived class with base with double, long"); +#endif +#ifdef GCC3 + check(Q(sizeof(C19)), 24, "derived class based on derived class with base with double, long and its own long"); +#else + check(Q(sizeof(C19)), 32, "derived class based on derived class with base with double, long and its own long"); +#endif +#ifdef GCC3 + check(Q(sizeof(C20)), 16, "class with double and v-table ptr"); + check(Q(offsetof(C20, f1)), 8, "offset of double 1st field in class with v-table ptr"); /* { dg-warning "invalid access" "" } */ + /* { dg-warning "macro was used incorrectly" "" { target *-*-* } 297 } */ +#else + check(Q(sizeof(C20)), 16, "class with double and v-table ptr"); + check(Q(offsetof(C20, f1)), 0, "offset of 1st field in class with v-table ptr"); +#endif + + /* Vector tests */ +#ifdef __VEC__ + check(Q(sizeof(VC1)), 32, "class with vector as 1st field"); + check(Q(sizeof(VS1)), 48, "struct with a class with a vector as 1st field"); +#ifdef GCC3 + check(Q(sizeof(VC2)), 32, "class with base class containing a vector"); +#else + check(Q(sizeof(VC2)), 48, "class with base class containing a vector"); +#endif +#ifdef GCC3 + check(Q(offsetof(VC2, f1)), 17, "offset of 1st field after base class with vector, char, and padding"); +#else + check(Q(offsetof(VC2, f1)), 32, "offset of 1st field after base class with vector, char, and padding"); +#endif +#ifdef GCC3 + check(Q(sizeof(VS2)), 64, "struct with a char, class with a vector, char"); +#else + check(Q(sizeof(VS2)), 80, "struct with a char, class with a vector, char"); +#endif + check(Q(offsetof(VS2, f2)), 16, "offset of class with a vector in a struct with char, class..."); +#ifdef GCC3 + check(Q(offsetof(VS2, f3)), 48, "offset of 2nd char in a struct with char, class, char"); +#else + check(Q(offsetof(VS2, f3)), 64, "offset of 2nd char in a struct with char, class, char"); +#endif +#ifdef GCC3 + check(Q(sizeof(VC3)), 32, "class with a vector and v-table ptr"); + check(Q(offsetof(VC3, f1)), 16, "offset vector in class with a vector and v-table ptr"); +#else + check(Q(sizeof(VC3)), 32, "class with a vector and v-table ptr"); + check(Q(offsetof(VC3, f1)), 0, "offset vector in class with a vector and v-table ptr"); +#endif +#endif + + /* bool tests */ + check(Q(sizeof(bool)), 4, "bool data type"); + check(Q(sizeof(B1)), 8, "struct with bool, char"); + check(Q(sizeof(B2)), 8, "struct with char, bool"); + + if (nbr_failures > 0) + return 1; + else + return 0; +} diff --git a/gcc/testsuite/g++.dg/altivec-1.C b/gcc/testsuite/g++.dg/altivec-1.C new file mode 100644 index 00000000000..6bda7094db0 --- /dev/null +++ b/gcc/testsuite/g++.dg/altivec-1.C @@ -0,0 +1,12 @@ +/* APPLE LOCAL file AltiVec */ +/* Test for static_cast<...> among AltiVec types. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-faltivec" } */ + +struct Foo2 { + vector unsigned int vui; + vector signed int As_vsi() { + return static_cast<vector signed int>(vui); /* { dg-bogus "invalid static_cast" } */ + } +}; + diff --git a/gcc/testsuite/g++.dg/altivec-2.C b/gcc/testsuite/g++.dg/altivec-2.C new file mode 100644 index 00000000000..0b2f3751a24 --- /dev/null +++ b/gcc/testsuite/g++.dg/altivec-2.C @@ -0,0 +1,15 @@ +/* APPLE LOCAL file AltiVec */ +/* Test for distinguishing 'vector bool ...' from 'vector unsigned ...' + types by the front-end. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-faltivec" } */ + +struct Foo1 { + void foo(vector unsigned char) { } + void foo(vector bool char) { } /* { dg-bogus "has already been declared" } */ + void bar(vector unsigned short) { } + void bar(vector bool short) { } /* { dg-bogus "has already been declared" } */ + void baz(vector unsigned int) { } + void baz(vector bool int) { } /* { dg-bogus "has already been declared" } */ +}; + diff --git a/gcc/testsuite/g++.dg/altivec-3.C b/gcc/testsuite/g++.dg/altivec-3.C new file mode 100644 index 00000000000..77084a1d824 --- /dev/null +++ b/gcc/testsuite/g++.dg/altivec-3.C @@ -0,0 +1,21 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-do run { target powerpc*-*-* } } */ +/* { dg-options "-faltivec -Wall" } */ + +/* This test checks if AltiVec builtins accept const-qualified + arguments. */ + +int main (int argc, const char * argv[]) +{ + int i; + const float cf = 1.0; + vector float v; + const vector float cv = (vector float)(1.0, 2.0, 3.0, 4.0); + + vec_dst(&cv, i, 0); + v = vec_ld(0, &cv); + v = vec_lde(0, &cf); + vec_lvsl(0, &cf); + + return 0; +} diff --git a/gcc/testsuite/g++.dg/altivec-4.C b/gcc/testsuite/g++.dg/altivec-4.C new file mode 100644 index 00000000000..1b33365408b --- /dev/null +++ b/gcc/testsuite/g++.dg/altivec-4.C @@ -0,0 +1,129 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-do run { target powerpc*-*-* } } */ +/* { dg-options "-faltivec -Wno-long-double" } */ + +/* Test for correct handling of AltiVec constants passed + through '...' (va_arg). */ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> + +#define CHECK_INVARIANT(expr) \ + if (!(expr)) { \ + printf ("ASSERT FAILED: %d: %s\n", __LINE__, #expr); \ + abort (); \ + } + +struct foo { int x; int y; }; +struct vfoo { int x; __vector signed int v; int y; }; +union u { __vector signed int v; signed int i[4]; }; + +struct foo x_g = { 3, 4}; +struct vfoo vx_g = { 10, (vector signed int)(11, 12, 13, 14), 15 }; +__vector signed int v_g = (vector signed int) (22, 23, 24, 25); +struct vfoo vx2_g = { 30, (vector signed int)(31, 32, 33, 34), 35 }; +__vector signed int v2_g = (vector signed int)(40, 41, 42, 43); +int i_1 = 99, i_2 = 33; +double d_2 = 1.5, d_3 = 1.75; +long double ld_1 = 1.25; + +void bar (int i, ... ) +{ + struct foo xi; + double d; + long double ld; + float f; + char c; + short s; + va_list ap; + va_start(ap, i); + xi = va_arg(ap, struct foo); + s = (short)va_arg(ap, int); + f = (float)va_arg(ap, double); + ld = va_arg(ap, long double); + c = (char)va_arg(ap, int); + d = va_arg(ap, double); + va_end(ap); + + CHECK_INVARIANT (xi.x == x_g.x && xi.y == x_g.y); + CHECK_INVARIANT (s == (short)i_2); + CHECK_INVARIANT (f == (float)d_2); + CHECK_INVARIANT (ld == ld_1); + CHECK_INVARIANT (c == (char)i_1); + CHECK_INVARIANT (d == d_3); +} + +void baz (int i, ... ) +{ + struct vfoo vx, vx2; + __vector signed int v_i, v2_i; + int j, k, l; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); /* { dg-bogus "non-POD type" } */ + j = va_arg(ap, int); + vx = va_arg(ap, struct vfoo); /* { dg-bogus "non-POD type" } */ + k = va_arg(ap, int); + v2_i = va_arg(ap, __vector signed int); /* { dg-bogus "non-POD type" } */ + l = va_arg(ap, int); + vx2 = va_arg(ap, struct vfoo); /* { dg-bogus "non-POD type" } */ + va_end(ap); + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (j == i_1); + CHECK_INVARIANT (vx.x == vx_g.x && vec_all_eq(vx.v, vx_g.v) && vx.y == vx_g.y); + CHECK_INVARIANT (k == i_1); + CHECK_INVARIANT (vec_all_eq (v2_i, v2_g)); + CHECK_INVARIANT (l == i_1); + CHECK_INVARIANT (vx2.x == vx2_g.x && vec_all_eq(vx2.v, vx2_g.v) && vx2.y == vx2_g.y); +} + +void quux (int i, ... ) +{ + __vector signed int v_i, v2_i; + union u vi, v2i; + va_list ap; + va_start(ap, i); + v_i = va_arg(ap, __vector signed int); + v2_i = va_arg(ap, __vector signed int); + va_end(ap); + vi.v = v_i; + v2i.v = v2_i; + + CHECK_INVARIANT (vec_all_eq (v_i, v_g)); + CHECK_INVARIANT (vec_all_eq (v2_i, v_g)); + CHECK_INVARIANT (vec_all_eq (vi.v, v_g)); + CHECK_INVARIANT (vec_all_eq (v2i.v, v_g)); +} + +void baz2 (int i, ... ) +{ + struct vfoo vx; + union u vxi; + va_list ap; + va_start(ap, i); + vx = va_arg(ap, struct vfoo); + va_end(ap); + vxi.v = vx.v; + + CHECK_INVARIANT (vx.x == vx_g.x && vec_all_eq(vx.v, vx_g.v) && vx.y == vx_g.y); + CHECK_INVARIANT (vec_all_eq (vxi.v, vx_g.v)); +} + +int main(void) +{ + CHECK_INVARIANT (sizeof(struct foo) == 8 && sizeof(struct vfoo) == 48); + + bar(i_1, x_g, (short)i_2, (float)d_2, ld_1, (char)i_1, d_3); + baz(i_1, v_g, /* { dg-bogus "non-POD type" "" { target *-*-* } 122 } */ + i_1, vx_g, /* { dg-bogus "non-POD type" "" { target *-*-* } 122 } */ + i_1, v2_g, /* { dg-bogus "non-POD type" "" { target *-*-* } 122 } */ + i_1, vx2_g); /* { dg-bogus "non-POD type" } */ + quux(i_1, v_g, /* { dg-bogus "non-POD type" "" { target *-*-* } 124 } */ + v_g); /* { dg-bogus "non-POD type" } */ + baz2(i_1, vx_g); /* { dg-bogus "non-POD type" } */ + + return 0; +} + diff --git a/gcc/testsuite/g++.dg/altivec-5.C b/gcc/testsuite/g++.dg/altivec-5.C new file mode 100644 index 00000000000..4c5a21ad46f --- /dev/null +++ b/gcc/testsuite/g++.dg/altivec-5.C @@ -0,0 +1,19 @@ +/* APPLE LOCAL file AltiVec */ +/* Test for AltiVec type overloading. */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-faltivec" } */ + void foo(vector unsigned char) { } + void foo(vector signed char) { } + void foo(vector bool char) { } + void foo(vector unsigned short) { } + void foo(vector signed short) { } + void foo(vector bool short) { } + void foo(vector unsigned long) { } + void foo(vector signed long) { } + void foo(vector bool long) { } + void foo(vector float) { } + void foo(vector pixel) { } + void foo(int) { } + void foo(unsigned int) { } + void foo(float) { } + void foo(bool) { } diff --git a/gcc/testsuite/g++.dg/apple-altivec-1.C b/gcc/testsuite/g++.dg/apple-altivec-1.C new file mode 100644 index 00000000000..c070de43f6c --- /dev/null +++ b/gcc/testsuite/g++.dg/apple-altivec-1.C @@ -0,0 +1,9 @@ +/* APPLE LOCAL file AltiVec */ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-faltivec" } */ + +void foo() { + vector bool int boolVector = (vector bool int) vec_splat_u32(3); + boolVector = vec_sld( boolVector, boolVector, + 1 ); /* { dg-bogus "no instance of overloaded" } */ +} diff --git a/gcc/testsuite/g++.dg/charset/asm1.c b/gcc/testsuite/g++.dg/charset/asm1.c deleted file mode 100644 index 9c0ff2866b0..00000000000 --- a/gcc/testsuite/g++.dg/charset/asm1.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile { target *-*-* } } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler ".ascii bar" } } - { dg-final { scan-assembler ".ascii foo" } } - */ -extern int x, y; - -asm (".ascii bar"); - -int foo (void) -{ - __asm__ (".ascii foo"); - return 0; -} diff --git a/gcc/testsuite/g++.dg/charset/asm2.c b/gcc/testsuite/g++.dg/charset/asm2.c deleted file mode 100644 index 8d8dbbb524d..00000000000 --- a/gcc/testsuite/g++.dg/charset/asm2.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Test for complex asm statements. Make sure it compiles - then test for some of the asm statements not being translated. */ -/* { dg-do compile { target i?86-*-* } } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler "std" } } - { dg-final { scan-assembler "cld" } } - { dg-final { scan-assembler "rep" } } - { dg-final { scan-assembler "movsb" } } */ -#define size_t int -void * -memmove (void *__dest, __const void *__src, size_t __n) -{ - register unsigned long int __d0, __d1, __d2; - if (__dest < __src) - __asm__ __volatile__ - ("cld\n\t" - "rep\n\t" - "movsb" - : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2) - : "0" (__n), "1" (__src), "2" (__dest) - : "memory"); - else - __asm__ __volatile__ - ("std\n\t" - "rep\n\t" - "movsb\n\t" - "cld" - : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2) - : "0" (__n), "1" (__n - 1 + (const char *) __src), - "2" (__n - 1 + (char *) __dest) - : "memory"); - return __dest; -} diff --git a/gcc/testsuite/g++.dg/charset/asm3.c b/gcc/testsuite/g++.dg/charset/asm3.c deleted file mode 100644 index cd850c3e81f..00000000000 --- a/gcc/testsuite/g++.dg/charset/asm3.c +++ /dev/null @@ -1,10 +0,0 @@ -/* Simple asm test. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler "foo" } } */ -extern int bar; - -int main (void) -{ - asm ("foo %0" : "=r" (bar)); -} diff --git a/gcc/testsuite/g++.dg/charset/asm4.c b/gcc/testsuite/g++.dg/charset/asm4.c deleted file mode 100644 index fa93f40fdaf..00000000000 --- a/gcc/testsuite/g++.dg/charset/asm4.c +++ /dev/null @@ -1,8 +0,0 @@ -/* Test for string translation. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler-not "translate" } } */ -void foo (void) -{ - asm ("xx" : : "r"("translate") : "cc"); -} diff --git a/gcc/testsuite/g++.dg/charset/attribute1.c b/gcc/testsuite/g++.dg/charset/attribute1.c deleted file mode 100644 index 993c7934c80..00000000000 --- a/gcc/testsuite/g++.dg/charset/attribute1.c +++ /dev/null @@ -1,10 +0,0 @@ -/* Test for attribute non-translation. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler "foo" } } */ -int walrus __attribute__ ((section (".foo"))); - -int main (void) -{ - return 0; -} diff --git a/gcc/testsuite/g++.dg/charset/attribute2.c b/gcc/testsuite/g++.dg/charset/attribute2.c deleted file mode 100644 index 3cb766aa63a..00000000000 --- a/gcc/testsuite/g++.dg/charset/attribute2.c +++ /dev/null @@ -1,8 +0,0 @@ -/* Test to make sure that invalid attributes aren't translated. - If error recovery is ever testable then "foobar" should be - translated. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } -*/ -int foo __attribute__ ((walrus)); /* { dg-error "walrus" "ignored" } */ -char x[] = "foobar"; diff --git a/gcc/testsuite/g++.dg/charset/extern1.cc b/gcc/testsuite/g++.dg/charset/extern1.cc deleted file mode 100644 index 2a68ab7cf78..00000000000 --- a/gcc/testsuite/g++.dg/charset/extern1.cc +++ /dev/null @@ -1,15 +0,0 @@ -/* Test extern statments not being translated. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } -*/ - -extern "C" { - - -int testbug (void) { - - return 0; - -} - -} //extern block diff --git a/gcc/testsuite/g++.dg/charset/extern2.cc b/gcc/testsuite/g++.dg/charset/extern2.cc deleted file mode 100644 index 82157a6fea4..00000000000 --- a/gcc/testsuite/g++.dg/charset/extern2.cc +++ /dev/null @@ -1,5 +0,0 @@ -/* Check that we push the declaration and then continue translation. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler-not "foobar" } } */ -extern "C" { char *foo = "foobar"; } diff --git a/gcc/testsuite/g++.dg/charset/string.c b/gcc/testsuite/g++.dg/charset/string.c deleted file mode 100644 index 375e28a2ed6..00000000000 --- a/gcc/testsuite/g++.dg/charset/string.c +++ /dev/null @@ -1,5 +0,0 @@ -/* Simple character translation test. */ -/* { dg-do compile } - { dg-require-iconv "IBM-1047" } - { dg-final { scan-assembler-not "string foobar" } } */ -char *foo = "string foobar"; diff --git a/gcc/testsuite/g++.dg/const-cfstring-1.C b/gcc/testsuite/g++.dg/const-cfstring-1.C new file mode 100644 index 00000000000..ff1e2665540 --- /dev/null +++ b/gcc/testsuite/g++.dg/const-cfstring-1.C @@ -0,0 +1,26 @@ +/* APPLE LOCAL file constant cfstrings */ +/* Test whether the __builtin__CFStringMakeConstantString + "function" fails gracefully when handed a non-constant + argument. This will only work on MacOS X 10.1.2 and later. */ +/* Developed by Ziemowit Laski <zlaski@apple.com>. */ + +/* { dg-do compile { target powerpc-apple-darwin* } } */ +/* { dg-options "-fconstant-cfstrings" } */ + +#import <CoreFoundation/CFString.h> + +#ifdef __CONSTANT_CFSTRINGS__ +#undef CFSTR +#define CFSTR(STR) ((CFStringRef) __builtin___CFStringMakeConstantString (STR)) +#endif + +extern int cond; +extern const char *func(void); + +int main(void) { + CFStringRef s1 = CFSTR("Str1"); + CFStringRef s2 = CFSTR(cond? "Str2": "Str3"); /* { dg-error "CFString literal expression not constant" } */ + CFStringRef s3 = CFSTR(func()); /* { dg-error "CFString literal expression not constant" } */ + + return 0; +} diff --git a/gcc/testsuite/g++.dg/debug/debug8.C b/gcc/testsuite/g++.dg/debug/debug8.C index 1f8a18ac8ac..4a4b55a190d 100644 --- a/gcc/testsuite/g++.dg/debug/debug8.C +++ b/gcc/testsuite/g++.dg/debug/debug8.C @@ -1,2 +1,27 @@ -struct t{}; -struct g : public t{}; +// Check -gstabs +// Contributed by Devang Patel dpatel@apple.com +// { dg-do compile } +class LcBase +{ +public: + virtual ~LcBase(); +protected: + LcBase(); +}; + +class LcDerive : public LcBase +{ +public: + LcDerive(); + ~LcDerive(); +}; + +LcDerive::LcDerive() +: LcBase() +{ +} + +LcDerive::~LcDerive() +{ +} + diff --git a/gcc/testsuite/g++.dg/eh/spec7.C b/gcc/testsuite/g++.dg/eh/spec7.C deleted file mode 100644 index 08586a2af75..00000000000 --- a/gcc/testsuite/g++.dg/eh/spec7.C +++ /dev/null @@ -1,35 +0,0 @@ -// PR 14535 -// { dg-do run } -// { dg-options "-O -finline" } -// -// Original test case failure required that Raiser constructor be inlined. - -extern "C" void abort(); -bool destructor_called = false; - -struct B { - virtual void Run(){}; -}; - -struct D : public B { - virtual void Run() - { - struct O { - ~O() { destructor_called = true; }; - } o; - - struct Raiser { - Raiser() throw( int ) {throw 1;}; - } raiser; - }; -}; - -int main() { - try { - D d; - static_cast<B&>(d).Run(); - } catch (...) {} - - if (!destructor_called) - abort (); -} diff --git a/gcc/testsuite/g++.dg/expr/align68k-1.C b/gcc/testsuite/g++.dg/expr/align68k-1.C new file mode 100644 index 00000000000..80ce93039f2 --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/align68k-1.C @@ -0,0 +1,46 @@ +// APPLE LOCAL file test of -mdynamic-no-pic combined with 68k alignment +// Radar 3242139: Positive C++ test case +// Origin: Matt Austern <austern@apple.com> +// { dg-do run } +// { dg-options "-mdynamic-no-pic" } + +const long val1 = 0xa0b0; +const long val2 = 0x1234; + +#pragma options align=mac68k +struct X { + long x1; + long x2; +}; + +#pragma options align=reset + +void setX(X* x) { + x->x1 = val1; + x->x2 = val2; +} + +struct Y +{ + X field; + void set_vals(); +}; + +void Y::set_vals() +{ + ::setX(&field); +} + +int main() +{ + Y y; + bool ok = true; + + y.field.x1 = y.field.x2 = 0; + ok = ok && y.field.x1 == 0 && y.field.x2 == 0; + + y.set_vals(); + ok = ok && y.field.x1 == val1 && y.field.x2 == val2; + + return !ok; +} diff --git a/gcc/testsuite/g++.dg/expr/align68k-2.C b/gcc/testsuite/g++.dg/expr/align68k-2.C new file mode 100644 index 00000000000..4070bcdc0ff --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/align68k-2.C @@ -0,0 +1,38 @@ +// APPLE LOCAL file test 68k alignment +// Radar 3313261: Positive C++ test case +// Origin: Matt Austern <austern@apple.com> +// { dg-do run } + +#pragma options align=mac68k + +typedef struct PMR { + double x; + double y; +}PMR; + +#pragma options align=reset + +static void GetDouble(double *doubleP) +{ + *doubleP = 1.; +} + +static void GetPMR(PMR *p) +{ + GetDouble(&p->x); + GetDouble(&p->y); +} + +int main(void) +{ + PMR tmp; + bool ok = true; + + tmp.x = tmp.y = 0; + ok = ok && tmp.x == 0.0 && tmp.y == 0.0; + + GetPMR(&tmp); + ok = ok && tmp.x == 1.0 && tmp.y == 1.0; + + return !ok; +} diff --git a/gcc/testsuite/g++.dg/expr/cast-ptr-1.C b/gcc/testsuite/g++.dg/expr/cast-ptr-1.C new file mode 100644 index 00000000000..cb42d13ac48 --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/cast-ptr-1.C @@ -0,0 +1,15 @@ +/* APPLE LOCAL file pointer casts */ +/* Test that casts of pointer to unsigned long long aren't sign extended */ +/* Author: Matt Austern <austern@apple.com> */ +/* { dg-do run } */ +/* { dg-options "-Wno-error -w" } */ + +int main () { + /* Note: test assumes sizeof(long long) >= sizeof(void*) */ + + unsigned long x1 = 0x80000000ul; + void* p = (void*) x1; + unsigned long long x2 = (unsigned long long) p; + + return !(x1 == x2); +} diff --git a/gcc/testsuite/g++.dg/expr/fieldref1.C b/gcc/testsuite/g++.dg/expr/fieldref1.C new file mode 100644 index 00000000000..b04ed137548 --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/fieldref1.C @@ -0,0 +1,23 @@ +// APPLE LOCAL file - test of access to 8-byte struct field +// Radar 3309305: positive C++ test case +// Origin: Matt Austern <austern@apple.com> +// { dg-do run } + +struct X { + char array[8]; +}; + +char* get_array(X* p) { + char* p2 = p->array; + return p2; +} + +int main() +{ + X t; + X* p = &t; + char* p2 = get_array(p); + + bool ok = (void*)p == (void*)p2; + return !ok; +} diff --git a/gcc/testsuite/g++.dg/ext/anon-struct4.C b/gcc/testsuite/g++.dg/ext/anon-struct4.C deleted file mode 100644 index f0b3b57f70d..00000000000 --- a/gcc/testsuite/g++.dg/ext/anon-struct4.C +++ /dev/null @@ -1,3 +0,0 @@ -// PR c++/14401 - -struct { struct { int& i ; } bar ; } foo ; // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/ext/attrib14.C b/gcc/testsuite/g++.dg/ext/attrib14.C deleted file mode 100644 index 3a819e01d82..00000000000 --- a/gcc/testsuite/g++.dg/ext/attrib14.C +++ /dev/null @@ -1,13 +0,0 @@ -// PR c++/13170 -// The bogus attribute is ignored, but was in TYPE_ATTRIBUTES during -// parsing of the class, causing some variants to have it and some not. - -struct __attribute__((bogus)) A -{ - virtual ~A(); - void foo(const A&); - void bar(const A&); -}; // { dg-warning "ignored" "" } - -void A::foo(const A&) {} -void A::bar(const A& a) { foo(a); } diff --git a/gcc/testsuite/g++.dg/init/ctor3.C b/gcc/testsuite/g++.dg/init/ctor3.C deleted file mode 100644 index 1678aaf2c4d..00000000000 --- a/gcc/testsuite/g++.dg/init/ctor3.C +++ /dev/null @@ -1,6 +0,0 @@ -// PR c++/14401 - -struct S { - S() {} // { dg-error "" } - const int i; -}; diff --git a/gcc/testsuite/g++.dg/init/ref11.C b/gcc/testsuite/g++.dg/init/ref11.C deleted file mode 100644 index b283e3a69be..00000000000 --- a/gcc/testsuite/g++.dg/init/ref11.C +++ /dev/null @@ -1,13 +0,0 @@ -// PR c++/14230 - -struct A { - A (); - A (const A&); - A& operator= (const A&); -}; - -struct D { - A a; -}; - -const A& z = D().a; diff --git a/gcc/testsuite/g++.dg/init/union1.C b/gcc/testsuite/g++.dg/init/union1.C deleted file mode 100644 index 0049f442916..00000000000 --- a/gcc/testsuite/g++.dg/init/union1.C +++ /dev/null @@ -1,5 +0,0 @@ -// PR c++/14401 - -union U { - int& i; // { dg-error "" } -}; diff --git a/gcc/testsuite/g++.dg/kext1.C b/gcc/testsuite/g++.dg/kext1.C new file mode 100644 index 00000000000..174ec027259 --- /dev/null +++ b/gcc/testsuite/g++.dg/kext1.C @@ -0,0 +1,11 @@ +/* APPLE LOCAL file -findirect-virtual-calls 15 Oct 2002 */ +/* Radar 3008388: Positive C++ test case. */ +/* Origin: Matt Austern <austern@apple.com> */ +/* { dg-do compile } */ +/* { dg-options "-fapple-kext" } */ + +struct B1 { }; /* ok */ +struct B2 { }; /* ok */ +struct D1 : B1 { }; /* ok */ +struct D2 : B1, B2 { }; /* ok */ +struct D3 : virtual B1 { }; /* ok */ diff --git a/gcc/testsuite/g++.dg/kext2.C b/gcc/testsuite/g++.dg/kext2.C new file mode 100644 index 00000000000..f2f2a9514bd --- /dev/null +++ b/gcc/testsuite/g++.dg/kext2.C @@ -0,0 +1,13 @@ +/* APPLE LOCAL file -findirect-virtual-calls 15 Oct 2002 */ +/* Radar 3008388: Positive C++ test case. */ +/* Origin: Matt Austern <austern@apple.com> */ +/* { dg-do compile } */ +/* { dg-options "-fapple-kext" } */ + +struct B1 { virtual ~B1(); virtual void f(); }; /* ok */ +struct D1 : B1 { }; /* ok */ +struct X1 : D1 { virtual void f(); }; /* ok */ + +void X1::f() { D1::f(); } /* ok */ + + diff --git a/gcc/testsuite/g++.dg/kext3.C b/gcc/testsuite/g++.dg/kext3.C new file mode 100644 index 00000000000..7d9efbd8cf1 --- /dev/null +++ b/gcc/testsuite/g++.dg/kext3.C @@ -0,0 +1,18 @@ +/* APPLE LOCAL file -findirect-virtual-calls 15 Oct 2002 */ +/* Radar 3008388: Negative C++ test case. */ +/* Origin: Matt Austern <austern@apple.com> */ +/* { dg-do compile } */ +/* { dg-options "-fapple-kext" } */ + +struct B1 { virtual ~B1(); virtual void f(); }; /* ok */ +struct D1 : B1 { }; /* ok */ +struct D2 { }; /* ok */ + +struct X1 : D1, D2 { }; /* ok */ +struct X2 : virtual D1 { }; /* ok */ + +struct Y1 : X1 { virtual void f(); }; /* ok */ +struct Y2 : X2 { virtual void f(); }; /* ok */ + +void Y1::f() { X1::f(); } /* { dg-error "indirect virtual" } */ +void Y2::f() { X2::f(); } /* { dg-error "indirect virtual" } */ diff --git a/gcc/testsuite/g++.dg/lookup/enum1.C b/gcc/testsuite/g++.dg/lookup/enum1.C deleted file mode 100644 index 9422814e271..00000000000 --- a/gcc/testsuite/g++.dg/lookup/enum1.C +++ /dev/null @@ -1,5 +0,0 @@ -// PR c++/14476 - -struct tree_common { - enum tree_code code : 8; // { dg-error "" } -}; diff --git a/gcc/testsuite/g++.dg/lookup/struct2.C b/gcc/testsuite/g++.dg/lookup/struct2.C deleted file mode 100644 index a66f403c291..00000000000 --- a/gcc/testsuite/g++.dg/lookup/struct2.C +++ /dev/null @@ -1,7 +0,0 @@ -// PR c++/14510 - -struct c {}; -namespace A { - int c(struct c*req); -} -int A::c(struct c*req) {} diff --git a/gcc/testsuite/g++.dg/opt/eh1.C b/gcc/testsuite/g++.dg/opt/eh1.C deleted file mode 100644 index 63a4d2ef35f..00000000000 --- a/gcc/testsuite/g++.dg/opt/eh1.C +++ /dev/null @@ -1,21 +0,0 @@ -// PR middle-end/14477 -// { dg-do compile } -// { dg-options "-O2 -fno-default-inline" } - -struct A -{ - A(); -}; - -struct B -{ - B(const A*); -}; - -struct C -{ - B b; - C(int) : b(new A) {} -}; - -C c(0); diff --git a/gcc/testsuite/g++.dg/overload/ref1.C b/gcc/testsuite/g++.dg/overload/ref1.C deleted file mode 100644 index e239d88a438..00000000000 --- a/gcc/testsuite/g++.dg/overload/ref1.C +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2004 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 5 Mar 2004 <nathan@codesourcery.com> - -// Origin: schmid@snake.iap.physik.tu-darmstadt.de -// Bug 14397: Bogus access error. - -struct S { - S (int); - S(S const&); - private: - S(S&); -}; - -S foo() -{ - int result = 0; - - S s ((0,S (result))); - - return S (result); -} diff --git a/gcc/testsuite/g++.dg/parse/builtin2.C b/gcc/testsuite/g++.dg/parse/builtin2.C deleted file mode 100644 index c524ea68416..00000000000 --- a/gcc/testsuite/g++.dg/parse/builtin2.C +++ /dev/null @@ -1,5 +0,0 @@ -// PR c++/14432 -// { dg-options "" } - -struct Y {}; -Y y1; diff --git a/gcc/testsuite/g++.dg/parse/crash14.C b/gcc/testsuite/g++.dg/parse/crash14.C deleted file mode 100644 index b4cf49a9921..00000000000 --- a/gcc/testsuite/g++.dg/parse/crash14.C +++ /dev/null @@ -1,20 +0,0 @@ -// { dg-do compile } -// Contributed by: Giovanni Bajo <giovannibajo at libero dot it> -// PR c++/14448: Fold constant initializers in templates - -template <int> struct A -{ - A(); -}; - - -template<typename T> void foo(T) -{ - static const int n=1+1; - A<n+1> a; -} - -void bar() -{ - foo(0); -} diff --git a/gcc/testsuite/g++.dg/parse/non-dependent3.C b/gcc/testsuite/g++.dg/parse/non-dependent3.C deleted file mode 100644 index 9dfb99636a8..00000000000 --- a/gcc/testsuite/g++.dg/parse/non-dependent3.C +++ /dev/null @@ -1,17 +0,0 @@ -// PR c++/14586 - -enum E { e }; - -E & operator |= (E &f1, const E &f2); - -E operator | (const E &f1, const E &f2) { - E result = f1; - result |= f2; - return result; -} - -template <typename> void foo () { - const E flags = e | e; -} - -template void foo<double> (); diff --git a/gcc/testsuite/g++.dg/parse/template14.C b/gcc/testsuite/g++.dg/parse/template14.C deleted file mode 100644 index ada87524352..00000000000 --- a/gcc/testsuite/g++.dg/parse/template14.C +++ /dev/null @@ -1,17 +0,0 @@ -// PR c++/14550 - -struct A { - A(); -}; - -template <int> void foo() -{ - A *p = new A; -} - -void bar() -{ - foo<0>(); -} - - diff --git a/gcc/testsuite/g++.dg/pascal-strings-1.C b/gcc/testsuite/g++.dg/pascal-strings-1.C new file mode 100644 index 00000000000..ca95ee9c10b --- /dev/null +++ b/gcc/testsuite/g++.dg/pascal-strings-1.C @@ -0,0 +1,44 @@ +/* APPLE LOCAL file Pascal strings 2001-07-05 zll */ +/* Positive C++ test cases. */ +/* Origin: Ziemowit Laski <zlaski@apple.com> */ +/* { dg-do run } */ +/* { dg-options "-fpascal-strings" } */ + +typedef __SIZE_TYPE__ size_t; +extern "C" void abort (void); +extern "C" size_t strlen (const char *s); + +const unsigned char *pascalStr1 = "\pHello, World!"; +const unsigned char *concat1 = "\pConcatenated" "string" "\pliteral"; + +const unsigned char msg1[] = "\pHello"; /* ok */ +const unsigned char *msg2 = "\pHello"; /* ok */ +const signed char msg3[] = "\pHello"; /* ok */ +const char msg4[] = "\pHello"; /* ok */ +unsigned char msg5[] = "\pHello"; /* ok */ +signed char msg7[] = "\pHello"; /* ok */ +char msg8[] = "\pHello"; /* ok */ + +int +main (void) +{ + const unsigned char *pascalStr2 = "\pGood-bye!"; + + if (strlen ((const char *)pascalStr1) != 14) + abort (); + if (*pascalStr1 != 13) + abort (); /* the length byte does not include trailing null */ + + if (strlen ((const char *)pascalStr2) != 10) + abort (); + if (*pascalStr2 != 9) + abort (); + + if (strlen ((const char *)concat1) != 26) + abort (); + if (*concat1 != 25) + abort (); + + return 0; +} + diff --git a/gcc/testsuite/g++.dg/pascal-strings-2.C b/gcc/testsuite/g++.dg/pascal-strings-2.C new file mode 100644 index 00000000000..619e112c184 --- /dev/null +++ b/gcc/testsuite/g++.dg/pascal-strings-2.C @@ -0,0 +1,43 @@ +/* APPLE LOCAL file Pascal strings 2001-07-05 zll */ +/* Negative C++ test cases. */ +/* Origin: Ziemowit Laski <zlaski@apple.com> */ +/* { dg-do compile } */ +/* { dg-options "-fpascal-strings" } */ + +const wchar_t *pascalStr1 = L"\pHi!"; /* { dg-error "not allowed in wide" } */ +const wchar_t *pascalStr2 = L"Bye\p!"; /* { dg-error "not allowed in wide" } */ + +const wchar_t *initErr0 = "\pHi"; /* { dg-error "cannot convert" } */ +const wchar_t initErr0a[] = "\pHi"; /* { dg-error "initialized from non-wide string" } */ +const wchar_t *initErr1 = "Bye"; /* { dg-error "cannot convert" } */ +const wchar_t initErr1a[] = "Bye"; /* { dg-error "initialized from non-wide string" } */ + +const char *initErr2 = L"Hi"; /* { dg-error "cannot convert" } */ +const char initErr2a[] = L"Hi"; /* { dg-error "initialized from wide string" } */ +const signed char *initErr3 = L"Hi"; /* { dg-error "cannot convert" } */ +const signed char initErr3a[] = L"Hi"; /* { dg-error "initialized from wide string" } */ +const unsigned char *initErr4 = L"Hi"; /* { dg-error "cannot convert" } */ +const unsigned char initErr4a[] = L"Hi"; /* { dg-error "initialized from wide string" } */ + +const char *pascalStr3 = "Hello\p, World!"; /* { dg-error "must be at beginning" } */ + +const char *concat2 = "Hi" "\pthere"; /* { dg-error "not allowed in concatenation" } */ +const char *concat3 = "Hi" "there\p"; /* { dg-error "must be at beginning" } */ + +const char *s2 = "\pGoodbye!"; /* { dg-error "cannot convert" } */ +unsigned char *s3 = "\pHi!"; /* { dg-error "cannot convert" } */ +char *s4 = "\pHi"; /* { dg-error "cannot convert" } */ +signed char *s5 = "\pHi"; /* { dg-error "cannot convert" } */ +const signed char *s6 = "\pHi"; /* { dg-error "cannot convert" } */ + +/* the maximum length of a Pascal literal is 255. */ +const unsigned char *almostTooLong = + "\p12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "123456789012345"; /* ok */ +const unsigned char *definitelyTooLong = + "\p12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890123456789012345678901234567890" + "1234567890123456"; /* { dg-error "too long" } */ diff --git a/gcc/testsuite/g++.dg/preserve-PPC-CR.C b/gcc/testsuite/g++.dg/preserve-PPC-CR.C new file mode 100644 index 00000000000..55409ba0111 --- /dev/null +++ b/gcc/testsuite/g++.dg/preserve-PPC-CR.C @@ -0,0 +1,41 @@ +// APPLE LOCAL preserve CR2 for save_world prologues +// This testcase failed at -O2 due to a missing EH note describing the PowerPC Condition Register. +// Thanks to Dale Johannesen. + +// { dg-do run } +// { dg-options "-fpascal-strings" } +#include <stdlib.h> +#include <stdio.h> +int tick = 1; +int caught_x = 1; +int h() { return 2; } +void f() +{ throw(3); } +extern int h(); +void ff() { + bool xx = h() == 0; + if ( !xx ) { + try { + f(); + } catch (float f) { + if (!xx) printf("%f\n", f); + } + } +} +int g(int y) +{ + bool x = h() != 0; + if ( x) { + try { + ff(); + } catch (int ex) { + // if (x) printf("%d\n", ex); + if (x) { tick++; caught_x = ex; } + }} +} +main() +{ + g(3); + if (tick != 2 || caught_x != 3) + abort(); +} diff --git a/gcc/testsuite/g++.dg/template/spec12.C b/gcc/testsuite/g++.dg/template/spec12.C deleted file mode 100644 index 7cf2e2f0aa2..00000000000 --- a/gcc/testsuite/g++.dg/template/spec12.C +++ /dev/null @@ -1,18 +0,0 @@ -// { dg-do compile } -// Contributed by: Wolfgang Bangerth <bangerth at dealii dot org> -// PR c++/14409: Accepts invalid function signature for explicit instantiation - -struct X -{ - template <typename U> - void foo (U) {} - - template <typename U> - void foo_const (U) const {} -}; - -template void X::foo (int); -template void X::foo_const (int) const; - -template void X::foo (int) const; // { dg-error "" } -template void X::foo_const (int); // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/warn/Wunused-7.C b/gcc/testsuite/g++.dg/warn/Wunused-7.C deleted file mode 100644 index 4281bc81569..00000000000 --- a/gcc/testsuite/g++.dg/warn/Wunused-7.C +++ /dev/null @@ -1,12 +0,0 @@ -// PR c++/14481 -// { dg-options "-Wunused" } - -void func() -{ - struct mybitfields { - unsigned int s_field:8; - }; - struct mybitfields s; - s.s_field = 255; -}; - |