aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr26690-1.C15
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr26690-2.C16
-rw-r--r--gcc/tree.c3
5 files changed, 46 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e910bc..58504cf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/26690
+ * tree.c (get_callee_fndecl): If CALL is error_mark_node,
+ return it immediately.
+
2006-03-21 Michael Matz <matz@suse.de>
* genautomata.c (<struct state>, num_out_arcs, presence_signature):
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8b50952..2c983ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/26690
+ * g++.dg/gomp/pr26690-1.C: New test.
+ * g++.dg/gomp/pr26690-2.C: New test.
+
2006-03-20 Jeff Law <law@redhat.com>
* gcc.dg/tree-ssa/pr21829.c: New test.
diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-1.C b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
new file mode 100644
index 0000000..9efd8d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
@@ -0,0 +1,15 @@
+// PR c++/26690
+// { dg-do compile }
+
+struct A
+{ // { dg-error "A::A\\(const A&\\)" }
+ A (int); // { dg-error "candidates" }
+};
+
+void
+foo ()
+{
+ A a(0);
+#pragma omp parallel private (a) // { dg-error "no matching function" }
+ ;
+}
diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-2.C b/gcc/testsuite/g++.dg/gomp/pr26690-2.C
new file mode 100644
index 0000000..4ebf677
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr26690-2.C
@@ -0,0 +1,16 @@
+// PR c++/26690
+// { dg-do compile }
+
+struct A
+{
+ A (int x = 6); // { dg-error "A::A\\(int\\)" }
+ A (long long x = 12LL); // { dg-error "candidates" }
+};
+
+void
+foo ()
+{
+ A a(6);
+#pragma omp parallel private (a) // { dg-error "call of overloaded" }
+ ;
+}
diff --git a/gcc/tree.c b/gcc/tree.c
index d49b3ba..0c958e8 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -5801,6 +5801,9 @@ get_callee_fndecl (tree call)
{
tree addr;
+ if (call == error_mark_node)
+ return call;
+
/* It's invalid to call this function with anything but a
CALL_EXPR. */
gcc_assert (TREE_CODE (call) == CALL_EXPR);