diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr26690-1.C | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr26690-2.C | 16 | ||||
-rw-r--r-- | gcc/tree.c | 3 |
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" } + ; +} @@ -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); |