aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-08-02 01:58:52 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-08-02 01:58:52 +0000
commitc30b4add62a69bba7271b49d6f31f43187af5cd6 (patch)
tree0e2b7a7a4e1509e9c6c21c62383e3c5ac57705e8 /gcc/testsuite
parent112ccb83bb807c18e7540748b0b3af51d6cbe6cb (diff)
downloadgcc-c30b4add62a69bba7271b49d6f31f43187af5cd6.zip
gcc-c30b4add62a69bba7271b49d6f31f43187af5cd6.tar.gz
gcc-c30b4add62a69bba7271b49d6f31f43187af5cd6.tar.bz2
re PR c++/16338 (ICE when throwing a compound literal)
PR c++/16338 * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro. * call.c (null_ptr_cst_p): Handle variables with constant initializers. * pt.c (convert_nontype_argument): Use DECL_INTEGRAL_CONSTANT_VAR_P. * semantics.c (finish_id_expression): Likewise. PR c++~/16489 * decl.c (duplicate_decls): Reject duplicate namespace declarations. PR c++/16810 * typeck.c (build_ptrmemfunc): Loosen assertion. PR c++/16338 * g++.dg/init/null1.C: New test. * g++.dg/tc1/dr76.C: Adjust error marker. PR c++/16489 * g++.dg/parse/namespace10.C: New test. PR c++/16810 * g++.dg/inherit/ptrmem2.C: New test. From-SVN: r85421
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog12
-rw-r--r--gcc/testsuite/g++.dg/inherit/ptrmem2.C25
-rw-r--r--gcc/testsuite/g++.dg/init/null1.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/namespace10.C9
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr76.C2
5 files changed, 53 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 69ef9dc..c6ae76c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,15 @@
+2004-08-01 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/16338
+ * g++.dg/init/null1.C: New test.
+ * g++.dg/tc1/dr76.C: Adjust error marker.
+
+ PR c++/16489
+ * g++.dg/parse/namespace10.C: New test.
+
+ PR c++/16810
+ * g++.dg/inherit/ptrmem2.C: New test.
+
2004-08-02 Ben Elliston <bje@au.ibm.com>
PR target/16155
diff --git a/gcc/testsuite/g++.dg/inherit/ptrmem2.C b/gcc/testsuite/g++.dg/inherit/ptrmem2.C
new file mode 100644
index 0000000..a137055
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/ptrmem2.C
@@ -0,0 +1,25 @@
+// PR c++/16810
+
+struct C {
+ virtual void f() {}
+};
+
+struct B {virtual ~B() {} };
+
+class D : public B, public C
+{
+public:
+ virtual void f() {}
+};
+
+typedef void ( C::*FP)();
+typedef void ( D::*D_f)();
+
+int main() {
+ D *d = new D();
+ C *c = d;
+
+ const FP fptr = (FP) &D::f;;
+ (d->* (D_f)fptr)();
+}
+
diff --git a/gcc/testsuite/g++.dg/init/null1.C b/gcc/testsuite/g++.dg/init/null1.C
new file mode 100644
index 0000000..37a9a3e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/null1.C
@@ -0,0 +1,6 @@
+// PR c++/16338
+
+const int NULL = 0;
+int main() {
+ double* p = NULL;
+}
diff --git a/gcc/testsuite/g++.dg/parse/namespace10.C b/gcc/testsuite/g++.dg/parse/namespace10.C
new file mode 100644
index 0000000..aeaae61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/namespace10.C
@@ -0,0 +1,9 @@
+// PR c++/16489
+
+namespace m {} // { dg-error "" }
+
+namespace n {
+ namespace m {}
+}
+
+namespace m = n::m; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/tc1/dr76.C b/gcc/testsuite/g++.dg/tc1/dr76.C
index 6d3d1c1..0859b0c 100644
--- a/gcc/testsuite/g++.dg/tc1/dr76.C
+++ b/gcc/testsuite/g++.dg/tc1/dr76.C
@@ -5,4 +5,4 @@
volatile const int a = 5;
template <int> struct K;
-template struct K<a>; // { dg-error "non-constant" }
+template struct K<a>; // { dg-error "" }