diff options
author | no-author <no-author@gcc.gnu.org> | 2003-10-19 00:02:23 +0000 |
---|---|---|
committer | no-author <no-author@gcc.gnu.org> | 2003-10-19 00:02:23 +0000 |
commit | 9a463ba2983fa033adf7ad58c969e7100fb69c24 (patch) | |
tree | 9bb4f073ce0c679af318a373cce2150710bdd6ff /gcc/testsuite | |
parent | 39c2a77efda76c5e2855bcccf20f7679ec74a211 (diff) |
This commit was manufactured by cvs2svn to create branch
'tree-ssa-20020619-branch'.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/tree-ssa-20020619-branch@72662 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/g++.dg/ext/complit1.C | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/copy6.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash12.C | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/friend25.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/typename5.C | 19 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20031012-1.c | 32 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pack-test-4.c | 32 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/cris-volatile-1.c | 72 |
8 files changed, 214 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ext/complit1.C b/gcc/testsuite/g++.dg/ext/complit1.C new file mode 100644 index 00000000000..bcca8ac1e22 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/complit1.C @@ -0,0 +1,16 @@ +// PR c++/11063 +// { dg-options "" } + +class Foo +{ +private: + const int val_[2]; + +public: + Foo(int, int); +}; + +Foo::Foo(int v0, int v1) + : val_((int[]) {v0, v1}) +{ // { dg-error "" "" } +} diff --git a/gcc/testsuite/g++.dg/init/copy6.C b/gcc/testsuite/g++.dg/init/copy6.C new file mode 100644 index 00000000000..136dc783026 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/copy6.C @@ -0,0 +1,13 @@ +// PR c++/11878 + +struct A +{ + virtual ~A(); +}; + +template<typename T> struct B +{ + T t; +}; + +void foo() { throw B<A>().t; } diff --git a/gcc/testsuite/g++.dg/template/crash12.C b/gcc/testsuite/g++.dg/template/crash12.C new file mode 100644 index 00000000000..e2231e06b91 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash12.C @@ -0,0 +1,16 @@ +// { dg-do compile } + +// Origin: rmerkert@alphatech.com +// Volker Reichelt <reichelt@gcc.gnu.org> + +// PR c++/12495: ICE looking up class template in local class. + +template <typename> struct A {}; + +template <typename T> void foo() +{ + struct B + { + B (const A<T>&); + }; +} diff --git a/gcc/testsuite/g++.dg/template/friend25.C b/gcc/testsuite/g++.dg/template/friend25.C new file mode 100644 index 00000000000..fa11defc21a --- /dev/null +++ b/gcc/testsuite/g++.dg/template/friend25.C @@ -0,0 +1,14 @@ +// { dg-do compile } + +// Origin: Jiangbin Zhao <zhaojiangbin@yahoo.com> + +// PR c++/12369: ICE for specialization of member function template +// as friend in ordinary class. + +struct A { + template<class T> T* make() { return new T(); } +}; + +struct B { + friend B* A::make< B >(); // (1) +}; diff --git a/gcc/testsuite/g++.dg/template/typename5.C b/gcc/testsuite/g++.dg/template/typename5.C new file mode 100644 index 00000000000..2f72b5f8601 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/typename5.C @@ -0,0 +1,19 @@ +// { dg-do compile } + +// Origin: ariels@compugen.co.il + +// PR c++/2513: typename handling when scope is dependent as +// described in DR108. + +template <bool flag> struct Select { + typedef int Result; +}; + +template <template<class> class Pred> struct FindType { + typedef typename Select<true>::Result Result; +}; + +template <int bits> struct Int { + template<typename T> struct RightSize {}; + typedef typename FindType<RightSize>::Result type; +}; diff --git a/gcc/testsuite/gcc.c-torture/execute/20031012-1.c b/gcc/testsuite/gcc.c-torture/execute/20031012-1.c new file mode 100644 index 00000000000..a1f3de8baef --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20031012-1.c @@ -0,0 +1,32 @@ +/* PR optimization/8750 + Used to fail under Cygwin with + -O2 -fomit-frame-pointer + Testcase by David B. Trout */ + +#if defined(STACK_SIZE) && STACK_SIZE < 16000 +#define ARRAY_SIZE (STACK_SIZE / 2) +#define STRLEN (ARRAY_SIZE - 9) +#else +#define ARRAY_SIZE 15000 +#define STRLEN 13371 +#endif + +extern void *memset (void *, int, __SIZE_TYPE__); +extern void abort (void); + +static void foo () +{ + char a[ARRAY_SIZE]; + + a[0]=0; + memset( &a[0], 0xCD, STRLEN ); + a[STRLEN]=0; + if (strlen(a) != STRLEN) + abort (); +} + +int main ( int argc, char* argv[] ) +{ + foo(); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pack-test-4.c b/gcc/testsuite/gcc.dg/pack-test-4.c new file mode 100644 index 00000000000..27ae0cdcc77 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pack-test-4.c @@ -0,0 +1,32 @@ +/* PR c/11885 + Bug: flag4 was allocated into the same byte as the other flags. + { dg-options "" } + { dg-do run } */ + +typedef unsigned char uint8_t; + +typedef struct { + uint8_t flag1:2; + uint8_t flag2:1; + uint8_t flag3:1; + + uint8_t flag4; + +} __attribute__ ((packed)) MyType; + +int main (void) +{ + MyType a; + MyType *b = &a; + + b->flag1 = 0; + b->flag2 = 0; + b->flag3 = 0; + + b->flag4 = 0; + + b->flag4++; + + if (b->flag1 != 0) + abort (); +} diff --git a/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c b/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c new file mode 100644 index 00000000000..7f613c4dc77 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/cris-volatile-1.c @@ -0,0 +1,72 @@ +/* Copyright (C) 2003 Free Software Foundation. + Check that size-optimizations for move insns (specifically peephole + optimizations) aren't applied to volatile objects in the CRIS port. + Origin: Hans-Peter Nilsson. */ +/* { dg-do compile { target cris-*-* } } */ +/* { dg-final { scan-assembler-not {movu\...\[} } } */ +/* { dg-final { scan-assembler-not {move\.[^d].\[} } } */ +/* { dg-final { scan-assembler-not {and\.[^d].\[} } } */ +/* { dg-final { scan-assembler-not {or\.[^d].\[} } } */ + +static const unsigned long c = 0x0000FF00; +unsigned long +a1 (void) +{ + unsigned long m; + m = *(volatile unsigned long*) 0xb00000c8; + m &= c; + return m; +} +extern volatile unsigned long xx; +unsigned long +a2 (void) +{ + unsigned long m; + m = xx; + m &= c; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +a3 (void) +{ + unsigned long m; + m = yy[3]; + m &= 0xfe00; + return m; +} +unsigned long +ac1 (void) +{ + unsigned long m; + m = *(volatile unsigned long*) 0xb00000c8; + m &= 0xfe00; + return m; +} +extern volatile unsigned long xx; +unsigned long +ac2 (void) +{ + unsigned long m; + m = xx; + m &= 0xfe00; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +ac3 (void) +{ + unsigned long m; + m = yy[3]; + m &= 0xfe00; + return m; +} +extern volatile unsigned long yy[]; +unsigned long +oc3 (void) +{ + unsigned long m; + m = yy[3]; + m |= ~0xf; + return m; +} |