aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
authorno-author <no-author@gcc.gnu.org>2002-12-03 22:57:20 +0000
committerno-author <no-author@gcc.gnu.org>2002-12-03 22:57:20 +0000
commit54cae262c9ca867d53a08dfe01def84cdb3590da (patch)
tree2f853afecc70c62df9042ab024c3f788626b7e19 /gcc/testsuite/g++.dg
parent4cdbdeff0cb5f33caa32c24dec17b0e6260f7f37 (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@59786 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/abi/empty10.C27
-rw-r--r--gcc/testsuite/g++.dg/abi/empty11.C19
-rw-r--r--gcc/testsuite/g++.dg/inherit/typedef1.C8
-rw-r--r--gcc/testsuite/g++.dg/inherit/typeinfo1.C18
-rw-r--r--gcc/testsuite/g++.dg/init/brace2.C8
-rw-r--r--gcc/testsuite/g++.dg/init/brace3.C1
-rw-r--r--gcc/testsuite/g++.dg/init/string1.C8
-rw-r--r--gcc/testsuite/g++.dg/lookup/anon2.C6
-rw-r--r--gcc/testsuite/g++.dg/overload/ambig1.C23
-rw-r--r--gcc/testsuite/g++.dg/parse/defarg1.C5
-rw-r--r--gcc/testsuite/g++.dg/rtti/cv1.C17
-rw-r--r--gcc/testsuite/g++.dg/template/char1.C4
-rw-r--r--gcc/testsuite/g++.dg/template/ctor2.C18
-rw-r--r--gcc/testsuite/g++.dg/template/friend8.C18
-rw-r--r--gcc/testsuite/g++.dg/template/strlen1.C9
-rw-r--r--gcc/testsuite/g++.dg/template/varmod1.C10
16 files changed, 199 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/abi/empty10.C b/gcc/testsuite/g++.dg/abi/empty10.C
new file mode 100644
index 00000000000..970afbaf512
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/empty10.C
@@ -0,0 +1,27 @@
+// { dg-do run { target i?86-*-* } }
+// { dg-options "-fabi-version=0 -w" }
+
+struct E {};
+struct E2 : public E {};
+
+struct A {
+ int i;
+};
+
+struct B {
+ int j;
+};
+
+struct C :
+ public E,
+ public A,
+ public E2,
+ virtual public B {
+};
+
+C c;
+
+int main () {
+ if (((char*)(B*)&c - (char*)&c) != 8)
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/abi/empty11.C b/gcc/testsuite/g++.dg/abi/empty11.C
new file mode 100644
index 00000000000..b35363f5bf6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/empty11.C
@@ -0,0 +1,19 @@
+// { dg-do run }
+// { dg-options "-w -fabi-version=0" }
+
+struct E {};
+struct E2 : public E {};
+struct E3 : public E, public E2 {};
+struct E4 : public E, public E2, public E3 { };
+struct E5 : public E, public E2, public E3, public E4 {};
+
+struct S : public virtual E5 {
+ E e;
+};
+
+S s;
+
+int main () {
+ if ((char*)(E4*)&s - (char*)&s == 0)
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/inherit/typedef1.C b/gcc/testsuite/g++.dg/inherit/typedef1.C
new file mode 100644
index 00000000000..20da08b2c43
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/typedef1.C
@@ -0,0 +1,8 @@
+namespace NS {
+class X {};
+typedef X Y;
+}
+
+struct Base : virtual public NS::Y {
+ Base() : NS::Y() {}
+};
diff --git a/gcc/testsuite/g++.dg/inherit/typeinfo1.C b/gcc/testsuite/g++.dg/inherit/typeinfo1.C
new file mode 100644
index 00000000000..794776ecbe8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/typeinfo1.C
@@ -0,0 +1,18 @@
+typedef struct {
+ virtual const char *blah() {
+ return "Heya::blah";
+ }
+} Heya;
+
+struct Grok : public Heya {
+ virtual const char *blah() {
+ return "Grok::blah";
+ }
+};
+
+int main() {
+ Grok *g = new Grok();
+ delete g;
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/init/brace2.C b/gcc/testsuite/g++.dg/init/brace2.C
new file mode 100644
index 00000000000..488d916aa42
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/brace2.C
@@ -0,0 +1,8 @@
+// { dg-do compile }
+// [dcl.init] paragraph 13.
+int x = { 2 };
+const char * y = { "hello" };
+int a = 2;
+int b = { 2,3 }; // { dg-error "requires one element" }
+int c = { { 2 } } ; // { dg-error "braces around scalar initializer" }
+
diff --git a/gcc/testsuite/g++.dg/init/brace3.C b/gcc/testsuite/g++.dg/init/brace3.C
new file mode 100644
index 00000000000..0a1ee8f00a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/brace3.C
@@ -0,0 +1 @@
+int array[2][1] = { {0} {1} }; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/init/string1.C b/gcc/testsuite/g++.dg/init/string1.C
new file mode 100644
index 00000000000..597b8619e72
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/string1.C
@@ -0,0 +1,8 @@
+extern void f (char*);
+
+extern const char * const target = "foo";
+
+void g ()
+{
+ f (target); // { dg-error "conversion" }
+}
diff --git a/gcc/testsuite/g++.dg/lookup/anon2.C b/gcc/testsuite/g++.dg/lookup/anon2.C
new file mode 100644
index 00000000000..b0a7c07af96
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/anon2.C
@@ -0,0 +1,6 @@
+// { dg-do compile }
+// { dg-options "" }
+
+class { int i; } a; // { dg-error "private" }
+void foo() { a.i; } // { dg-error "context" }
+
diff --git a/gcc/testsuite/g++.dg/overload/ambig1.C b/gcc/testsuite/g++.dg/overload/ambig1.C
new file mode 100644
index 00000000000..2adc78c795a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/overload/ambig1.C
@@ -0,0 +1,23 @@
+// [over.best.ics]: For the purpose of ranking implicit conversion
+// sequences as described in _over.ics.rank_, the ambiguous conversion
+// sequence is treated as a user-defined sequence that is indistinguishable
+// from any other user- defined conversion sequence.
+
+struct A
+{
+ A(long);
+ A(char);
+};
+
+struct B
+{
+ B(int);
+};
+
+void f(A); // { dg-error "" "candidate" }
+void f(B); // { dg-error "" "candidate" }
+
+int main()
+{
+ f (42); // { dg-error "ambiguous" "ambiguous" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/defarg1.C b/gcc/testsuite/g++.dg/parse/defarg1.C
new file mode 100644
index 00000000000..77c50e8c3a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/defarg1.C
@@ -0,0 +1,5 @@
+class A
+{
+public:
+ A(int nBits = ((int)0x8) | ((int)0x4) | ((int)0x2));
+};
diff --git a/gcc/testsuite/g++.dg/rtti/cv1.C b/gcc/testsuite/g++.dg/rtti/cv1.C
new file mode 100644
index 00000000000..59dd6592c9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/rtti/cv1.C
@@ -0,0 +1,17 @@
+// { dg-do run }
+
+#include <typeinfo>
+#include <string.h>
+
+struct S {};
+
+typedef S volatile T[4];
+
+T t[3];
+
+const std::type_info& ti = typeid (t);
+
+int main () {
+ if (strcmp (ti.name (), "A3_A4_1S") != 0)
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/template/char1.C b/gcc/testsuite/g++.dg/template/char1.C
new file mode 100644
index 00000000000..64ffda8fd36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/char1.C
@@ -0,0 +1,4 @@
+template <class CharType, CharType line_terminator = 0>
+class String {};
+
+String<char, 255> s;
diff --git a/gcc/testsuite/g++.dg/template/ctor2.C b/gcc/testsuite/g++.dg/template/ctor2.C
new file mode 100644
index 00000000000..1c8d8a65d9b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ctor2.C
@@ -0,0 +1,18 @@
+// { dg-do run }
+
+int i;
+
+template <class T>
+struct S
+{
+ S () { i = 1; }
+};
+
+static S<int> s[1];
+
+int main ()
+{
+ if (!i)
+ return 1;
+}
+
diff --git a/gcc/testsuite/g++.dg/template/friend8.C b/gcc/testsuite/g++.dg/template/friend8.C
new file mode 100644
index 00000000000..21fd242f183
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend8.C
@@ -0,0 +1,18 @@
+template <int N> struct ivector
+{
+ template <int r, int c> friend void
+ mult_mv ();
+};
+
+template struct ivector<3>;
+
+template <int r, int c> void
+mult_mv ()
+{
+ c;
+}
+
+void get_local_point_pos ()
+{
+ mult_mv<7, 3> ();
+}
diff --git a/gcc/testsuite/g++.dg/template/strlen1.C b/gcc/testsuite/g++.dg/template/strlen1.C
new file mode 100644
index 00000000000..ddec51d7b1e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/strlen1.C
@@ -0,0 +1,9 @@
+template <typename A1>
+void monk2 (A1) {}
+
+unsigned int strlen (const char*);
+
+void monk ()
+{
+ monk2 (strlen (""));
+}
diff --git a/gcc/testsuite/g++.dg/template/varmod1.C b/gcc/testsuite/g++.dg/template/varmod1.C
new file mode 100644
index 00000000000..0747fe99587
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/varmod1.C
@@ -0,0 +1,10 @@
+// { dg-options "-w" }
+
+template<typename T> void foo(T);
+
+void bar()
+{
+ int i;
+ int A[i][i];
+ foo(A); // { dg-error "" }
+}