summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-11 14:41:03 +0000
committerreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>2006-05-11 14:41:03 +0000
commitb9e80c12e995d5f8084c3faaf40e9d07b910a960 (patch)
treeae8d1f873eb329b0c27f14d31b977e3c4754a332
parent6869220236f7186ddaec6bbc8adfdaa54095dd12 (diff)
downloadppe42-gcc-b9e80c12e995d5f8084c3faaf40e9d07b910a960.tar.gz
ppe42-gcc-b9e80c12e995d5f8084c3faaf40e9d07b910a960.zip
PR c++/27547
* decl.c (copy_fn_p): Return early on non-member functions. * g++.dg/other/operator1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113696 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/operator1.C9
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a357204e4a6..898c13fef06 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-11 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/27547
+ * decl.c (copy_fn_p): Return early on non-member functions.
+
2006-05-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/27447
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 057c1fb5169..1b5e41d373c 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -8818,7 +8818,9 @@ copy_fn_p (tree d)
tree arg_type;
int result = 1;
- gcc_assert (DECL_FUNCTION_MEMBER_P (d));
+ if (!DECL_FUNCTION_MEMBER_P (d))
+ /* Non-members are invalid. We complained, but kept the declaration. */
+ return 0;
if (TREE_CODE (d) == TEMPLATE_DECL
|| (DECL_TEMPLATE_INFO (d)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 418c6718b03..036f0dfc6e3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-11 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/27547
+ * g++.dg/other/operator1.C: New test.
+
2006-05-11 Richard Guenther <rguenther@suse.de>
PR middle-end/27529
diff --git a/gcc/testsuite/g++.dg/other/operator1.C b/gcc/testsuite/g++.dg/other/operator1.C
new file mode 100644
index 00000000000..1760a1c385c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/operator1.C
@@ -0,0 +1,9 @@
+// PR c++/27547
+// { dg-do compile }
+
+int operator=(int); // { dg-error "member function" }
+
+void foo()
+{
+ operator=(0);
+}
OpenPOWER on IntegriCloud