aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2011-02-23 04:54:27 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2011-02-23 04:54:27 +0000
commitb68a9b10c8081a0e4b4811bbbbfa39749d167c09 (patch)
tree55e93bd6fa4aa35ab44db741fb1a570be5d4ab3a
parent7fcf46f509414d97aea64a10f441781ad8c4b9de (diff)
downloadgcc-b68a9b10c8081a0e4b4811bbbbfa39749d167c09.zip
gcc-b68a9b10c8081a0e4b4811bbbbfa39749d167c09.tar.gz
gcc-b68a9b10c8081a0e4b4811bbbbfa39749d167c09.tar.bz2
Fix missing type traversals.
From-SVN: r170427
-rw-r--r--gcc/go/gofrontend/expressions.cc13
-rw-r--r--gcc/go/gofrontend/statements.cc3
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 6440ee1..264dd57 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 99ed665..45e45a3 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