summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-10 07:55:04 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-10 07:55:04 +0000
commit53e6e9ec694d8065e09b5f9ce9283e299db6de99 (patch)
treefbc399be50272a1aa560693806cff14985e9e702 /gcc
parenta26887aa8022cbe368df1abc83300acf11b90952 (diff)
downloadgcc-53e6e9ec694d8065e09b5f9ce9283e299db6de99.tar.gz
PR c++/19811
* call.c (build_op_delete_call): Check COMPLETE_TYPE_P before attempting name lookup. PR c++/19811 * g++.dg/init/delete1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94799 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/call.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/init/delete1.C7
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 02b1c0bc118..4aa0118a62a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2005-02-09 Mark Mitchell <mark@codesourcery.com>
+ PR c++/19811
+ * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
+ attempting name lookup.
+
* parser.c (cp_parser_unqualified_id): Initialize type_decl.
PR c++/19787
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 5d931c8b6e3..4655430a2bd 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -3924,7 +3924,9 @@ build_op_delete_call (enum tree_code code, tree addr, tree size,
fnname = ansi_opname (code);
- if (IS_AGGR_TYPE (type) && !global_p)
+ if (CLASS_TYPE_P (type)
+ && COMPLETE_TYPE_P (complete_type (type))
+ && !global_p)
/* In [class.free]
If the result of the lookup is ambiguous or inaccessible, or if
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 210102d5896..e3fe0377147 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-09 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/19811
+ * g++.dg/init/delete1.C: New test.
+
2005-02-09 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/18470
diff --git a/gcc/testsuite/g++.dg/init/delete1.C b/gcc/testsuite/g++.dg/init/delete1.C
new file mode 100644
index 00000000000..698b127714a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/delete1.C
@@ -0,0 +1,7 @@
+// PR c++/19811
+
+class C; // { dg-error "forward" }
+
+void foo(void *p) {
+ delete [] ((C*)p) ; // { dg-error "" }
+}