diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-12-27 16:24:52 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-12-27 16:24:52 +0100 |
commit | 749db154bd0d496379afca19ef72c3e121a034bb (patch) | |
tree | 60c714b45e2bed985bd4bfc986331f1655a96787 | |
parent | 382017a6e89525a531a56ca9b29ea5830ad6dbb0 (diff) | |
download | gcc-749db154bd0d496379afca19ef72c3e121a034bb.zip gcc-749db154bd0d496379afca19ef72c3e121a034bb.tar.gz gcc-749db154bd0d496379afca19ef72c3e121a034bb.tar.bz2 |
re PR c++/38639 (ICE with invalid use of auto in parallel for-loop)
PR c++/38639
* pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of
just its type.
* g++.dg/gomp/pr38639.C: New test.
From-SVN: r142933
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr38639.C | 17 |
4 files changed, 29 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 94e1a7c..2771f7e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2008-12-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/38639 + * pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of + just its type. + 2008-12-21 Jason Merrill <jason@redhat.com> PR c++/38597 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index db81942..786e845 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -10334,14 +10334,11 @@ tsubst_omp_for_iterator (tree t, int i, tree declv, tree initv, if (auto_node && init) { tree init_expr = init; - tree orig_type; if (TREE_CODE (init_expr) == DECL_EXPR) init_expr = DECL_INITIAL (DECL_EXPR_DECL (init_expr)); - orig_type = TREE_TYPE (init_expr); - TREE_TYPE (init_expr) = RECUR (TREE_TYPE (init_expr)); + init_expr = RECUR (init_expr); TREE_TYPE (decl) = do_auto_deduction (TREE_TYPE (decl), init_expr, auto_node); - TREE_TYPE (init_expr) = orig_type; } gcc_assert (!type_dependent_expression_p (decl)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4afbc8c..fb334fb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-12-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/38639 + * g++.dg/gomp/pr38639.C: New test. + 2008-12-23 Andrew Pinski <pinskia@gmail.com> PR middle-end/38590 diff --git a/gcc/testsuite/g++.dg/gomp/pr38639.C b/gcc/testsuite/g++.dg/gomp/pr38639.C new file mode 100644 index 0000000..1da3cec --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr38639.C @@ -0,0 +1,17 @@ +// PR c++/38639 +// { dg-do compile } +// { dg-options "-fopenmp -std=c++0x" } + +template<int> void +foo () +{ +#pragma omp parallel for + for (auto i = i = 0; i<4; ++i) // { dg-error "incomplete|unable|invalid" } + ; +} + +void +bar () +{ + foo<0> (); // { dg-message "instantiated from here" } +} |