diff options
author | Jakub Jelinek <jakub@redhat.com> | 2006-03-21 19:35:20 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2006-03-21 19:35:20 +0100 |
commit | 3c9bb46ee9c2f34a129c6c4489778092de2a220c (patch) | |
tree | c5c0d1da9f786b1d816f1348270f4cff5352ff5b /gcc | |
parent | b6bbd675eb31f35a014ef560bb661eead09b2a44 (diff) | |
download | gcc-3c9bb46ee9c2f34a129c6c4489778092de2a220c.zip gcc-3c9bb46ee9c2f34a129c6c4489778092de2a220c.tar.gz gcc-3c9bb46ee9c2f34a129c6c4489778092de2a220c.tar.bz2 |
re PR c++/26690 (ICE in get_callee_fndecl, at tree.c:5806 with OpenMP)
PR c++/26690
* tree.c (get_callee_fndecl): If CALL is error_mark_node,
return it immediately.
* g++.dg/gomp/pr26690-1.C: New test.
* g++.dg/gomp/pr26690-2.C: New test.
From-SVN: r112253
Diffstat (limited to 'gcc')
-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); |