aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr38639.C17
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" }
+}