From 999392dd559ef4ed8a2f46b347c2357465dbb9b1 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 17 Feb 2012 19:27:27 +0000 Subject: [PATCH] compiler: Check for initialization loop in constant initializer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184347 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/gogo-tree.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc index 352179df02a..603b97ec0c1 100644 --- a/gcc/go/gofrontend/gogo-tree.cc +++ b/gcc/go/gofrontend/gogo-tree.cc @@ -834,8 +834,15 @@ Gogo::write_globals() else if (init == NULL_TREE) ; else if (TREE_CONSTANT(init)) - this->backend()->global_variable_set_init(var, - tree_to_expr(init)); + { + if (expression_requires(no->var_value()->init(), NULL, no)) + error_at(no->location(), + "initialization expression for %qs depends " + "upon itself", + no->message_name().c_str()); + this->backend()->global_variable_set_init(var, + tree_to_expr(init)); + } else if (is_sink) var_init_tree = init; else -- 2.11.0