aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorno-author <no-author@gcc.gnu.org>2003-10-19 00:02:23 +0000
committerno-author <no-author@gcc.gnu.org>2003-10-19 00:02:23 +0000
commit9a463ba2983fa033adf7ad58c969e7100fb69c24 (patch)
tree9bb4f073ce0c679af318a373cce2150710bdd6ff /gcc/testsuite
parent39c2a77efda76c5e2855bcccf20f7679ec74a211 (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.C16
-rw-r--r--gcc/testsuite/g++.dg/init/copy6.C13
-rw-r--r--gcc/testsuite/g++.dg/template/crash12.C16
-rw-r--r--gcc/testsuite/g++.dg/template/friend25.C14
-rw-r--r--gcc/testsuite/g++.dg/template/typename5.C19
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20031012-1.c32
-rw-r--r--gcc/testsuite/gcc.dg/pack-test-4.c32
-rw-r--r--gcc/testsuite/gcc.dg/torture/cris-volatile-1.c72
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;
+}