diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-08-02 01:58:52 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2004-08-02 01:58:52 +0000 |
commit | c30b4add62a69bba7271b49d6f31f43187af5cd6 (patch) | |
tree | 0e2b7a7a4e1509e9c6c21c62383e3c5ac57705e8 /gcc/testsuite | |
parent | 112ccb83bb807c18e7540748b0b3af51d6cbe6cb (diff) | |
download | gcc-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/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/inherit/ptrmem2.C | 25 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/null1.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/namespace10.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tc1/dr76.C | 2 |
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 "" } |