aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2011-01-04 18:52:50 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2011-01-04 18:52:50 +0000
commitecad0c2519b2e035bea119313b3a9276f37f3db1 (patch)
treefa9666998caa876fedd5ff6d10b7002ad61420ba
parent7516c36883bb2326d8e0c02f5e9415bd66014819 (diff)
downloadgcc-ecad0c2519b2e035bea119313b3a9276f37f3db1.zip
gcc-ecad0c2519b2e035bea119313b3a9276f37f3db1.tar.gz
gcc-ecad0c2519b2e035bea119313b3a9276f37f3db1.tar.bz2
Traverse expressions when looking for types.
From-SVN: r168478
-rw-r--r--gcc/go/gofrontend/gogo.cc6
-rw-r--r--gcc/go/gofrontend/statements.cc9
2 files changed, 8 insertions, 7 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index c274424..6685156 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -4159,9 +4159,6 @@ Bindings::traverse(Traverse* traverse, bool is_global)
if (t != NULL
&& Type::traverse(t, traverse) == TRAVERSE_EXIT)
return TRAVERSE_EXIT;
- }
- if ((traverse_mask & Traverse::traverse_expressions) != 0)
- {
if (p->const_value()->traverse_expression(traverse)
== TRAVERSE_EXIT)
return TRAVERSE_EXIT;
@@ -4188,7 +4185,8 @@ Bindings::traverse(Traverse* traverse, bool is_global)
return TRAVERSE_EXIT;
}
if (p->is_variable()
- && (traverse_mask & Traverse::traverse_expressions) != 0)
+ && ((traverse_mask & Traverse::traverse_types) != 0
+ || (traverse_mask & Traverse::traverse_expressions) != 0))
{
if (p->var_value()->traverse_expression(traverse)
== TRAVERSE_EXIT)
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index 3498598..ef34bba 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -108,7 +108,8 @@ Statement::traverse_expression_list(Traverse* traverse,
{
if (expr_list == NULL)
return TRAVERSE_CONTINUE;
- if ((traverse->traverse_mask() & Traverse::traverse_expressions) == 0)
+ if ((traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) == 0)
return TRAVERSE_CONTINUE;
return expr_list->traverse(traverse);
}
@@ -3010,7 +3011,8 @@ int
Case_clauses::Case_clause::traverse(Traverse* traverse)
{
if (this->cases_ != NULL
- && (traverse->traverse_mask() & Traverse::traverse_expressions) != 0)
+ && (traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) != 0)
{
if (this->cases_->traverse(traverse) == TRAVERSE_EXIT)
return TRAVERSE_EXIT;
@@ -3941,7 +3943,8 @@ int
Select_clauses::Select_clause::traverse(Traverse* traverse)
{
if (!this->is_lowered_
- && (traverse->traverse_mask() & Traverse::traverse_expressions) != 0)
+ && (traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) != 0)
{
if (this->channel_ != NULL)
{