aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@gcc.gnu.org>2003-03-24 18:20:12 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2003-03-24 18:20:12 +0000
commit2ef6c975b9345f745e7d21a2cbbabdc8de9acbee (patch)
tree9428069c2d293eff9d76d9d9ce3a2754b4f311bf
parentf89283915de8e381764e7283ac11a1680ede0869 (diff)
downloadgcc-2ef6c975b9345f745e7d21a2cbbabdc8de9acbee.zip
gcc-2ef6c975b9345f745e7d21a2cbbabdc8de9acbee.tar.gz
gcc-2ef6c975b9345f745e7d21a2cbbabdc8de9acbee.tar.bz2
re PR c++/10026 (ICE on incomplete type)
cp: PR c++/10026 * decl2.c (arg_assoc_type) [ERROR_MARK]: Don't die. testsuite: PR c++/10026 * g++.dg/lookup/koenig1.C: New test. PR C++/10199 * g++.dg/lookup/template2.C: New test. From-SVN: r64809
-rw-r--r--gcc/cp/ChangeLog16
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/g++.dg/lookup/koenig1.C13
-rw-r--r--gcc/testsuite/g++.dg/lookup/template2.C31
5 files changed, 65 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 68c1716..5ffb144 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,7 +1,13 @@
+2003-03-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/10026
+ * decl2.c (arg_assoc_type) [ERROR_MARK]: Don't die.
+
2003-03-23 Mark Mitchell <mark@codesourcery.com>
PR c++/7086
- * typeck.c (cxx_mark_addressable): Likewise.
+ * typeck.c (cxx_mark_addressable): Adjust call to
+ gen_mem_addressof or put_var_into_stack.
2003-03-22 Nathan Sidwell <nathan@codesourcery.com>
@@ -647,10 +653,10 @@
2003-02-26 Devang Patel <dpatel@apple.com>
- * decl.c (finish_enum): Merge two 'for' loops. Copy value node if required.
- Postpone enum setting for template decls.
- (build_enumerator): Delay copying value node until finish_enum (). Remove
- #if 0'ed code.
+ * decl.c (finish_enum): Merge two 'for' loops. Copy value node if
+ required. Postpone enum setting for template decls.
+ (build_enumerator): Delay copying value node until finish_enum
+ (). Remove #if 0'ed code.
* pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
(tsubst_copy): Add check for enum type.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 751d0f6..9f5e27e 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -3986,6 +3986,8 @@ arg_assoc_type (struct arg_lookup *k, tree type)
{
switch (TREE_CODE (type))
{
+ case ERROR_MARK:
+ return false;
case VOID_TYPE:
case INTEGER_TYPE:
case REAL_TYPE:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 25027a9..a402ba0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2003-03-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/10026
+ * g++.dg/lookup/koenig1.C: New test.
+
+ PR C++/10199
+ * g++.dg/lookup/template2.C: New test.
+
2003-03-24 Jakub Jelinek <jakub@redhat.com>
* g++.dg/opt/rtti1.C: New test.
diff --git a/gcc/testsuite/g++.dg/lookup/koenig1.C b/gcc/testsuite/g++.dg/lookup/koenig1.C
new file mode 100644
index 0000000..697a322
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/koenig1.C
@@ -0,0 +1,13 @@
+// { dg-do compile }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Mar 2003 <nathan@codesourcery.com>
+
+// PR 10026. We ICE'd
+
+class X;
+
+void foo() {
+ X x(1); // { dg-error "incomplete type" "" }
+ bar(x); // { dg-error "undeclared" "" }
+}
diff --git a/gcc/testsuite/g++.dg/lookup/template2.C b/gcc/testsuite/g++.dg/lookup/template2.C
new file mode 100644
index 0000000..0e89212
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/template2.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 24 Mar 2003 <nathan@codesourcery.com>
+
+// PR 10199. Lookup problems
+
+class X {
+public:
+ template<int d>
+ int bar ();
+};
+
+template<int x>
+int fooo ();
+
+template<class T>
+void bar (T& g)
+{
+ int kk = fooo<17>(); // OK
+ X x;
+ int k = x.bar<17>(); // Not OK
+}
+
+int main ()
+{
+ X x;
+ int k=x.bar<17>(); // OK
+ int n;
+ bar(n);
+}