From b68a9b10c8081a0e4b4811bbbbfa39749d167c09 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor <ian@gcc.gnu.org> Date: Wed, 23 Feb 2011 04:54:27 +0000 Subject: [PATCH] Fix missing type traversals. From-SVN: r170427 --- gcc/go/gofrontend/expressions.cc | 13 +++++++++++++ gcc/go/gofrontend/statements.cc | 3 +++ 2 files changed, 16 insertions(+) diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 6440ee1393e3..264dd579b6f4 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -2357,6 +2357,9 @@ class Const_expression : public Expression check_for_init_loop(); protected: + int + do_traverse(Traverse*); + Expression* do_lower(Gogo*, Named_object*, int); @@ -2412,6 +2415,16 @@ class Const_expression : public Expression mutable bool seen_; }; +// Traversal. + +int +Const_expression::do_traverse(Traverse* traverse) +{ + if (this->type_ != NULL) + return Type::traverse(this->type_, traverse); + return TRAVERSE_CONTINUE; +} + // Lower a constant expression. This is where we convert the // predeclared constant iota into an integer value. diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc index 99ed6653914e..45e45a381b7e 100644 --- a/gcc/go/gofrontend/statements.cc +++ b/gcc/go/gofrontend/statements.cc @@ -318,6 +318,9 @@ Temporary_statement::get_decl() const int Temporary_statement::do_traverse(Traverse* traverse) { + if (this->type_ != NULL + && this->traverse_type(traverse, this->type_) == TRAVERSE_EXIT) + return TRAVERSE_EXIT; if (this->init_ == NULL) return TRAVERSE_CONTINUE; else -- GitLab