diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-01-04 18:52:50 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-01-04 18:52:50 +0000 |
commit | ecad0c2519b2e035bea119313b3a9276f37f3db1 (patch) | |
tree | fa9666998caa876fedd5ff6d10b7002ad61420ba | |
parent | 7516c36883bb2326d8e0c02f5e9415bd66014819 (diff) | |
download | gcc-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.cc | 6 | ||||
-rw-r--r-- | gcc/go/gofrontend/statements.cc | 9 |
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) { |