diff --git a/go/gogo.cc b/go/gogo.cc
index c1021e5..4c8c55f 100644
--- a/go/gogo.cc
+++ b/go/gogo.cc
@@ -1622,16 +1622,31 @@
               // The initializer is constant if it is the zero-value of the
               // variable's type or if the initial value is an immutable value
               // that is not copied to the heap.
-              bool is_static_initializer = false;
-              if (var->init() == NULL)
+	      Expression* init = var->init();
+
+	      // If we see "a = b; b = x", and x is a static
+	      // initializer, just set a to x.
+	      while (init != NULL && init->var_expression() != NULL)
+		{
+		  Named_object* ino = init->var_expression()->named_object();
+		  if (!ino->is_variable() || ino->package() != NULL)
+		    break;
+		  Expression* ino_init = ino->var_value()->init();
+		  if (ino->var_value()->has_pre_init()
+		      || ino_init == NULL
+		      || !ino_init->is_static_initializer())
+		    break;
+		  init = ino_init;
+		}
+
+              bool is_static_initializer;
+              if (init == NULL)
                 is_static_initializer = true;
               else
                 {
                   Type* var_type = var->type();
-                  Expression* init = var->init();
-                  Expression* init_cast =
-                      Expression::make_cast(var_type, init, var->location());
-                  is_static_initializer = init_cast->is_static_initializer();
+                  init = Expression::make_cast(var_type, init, var->location());
+                  is_static_initializer = init->is_static_initializer();
                 }
 
 	      // Non-constant variable initializations might need to create
@@ -1650,7 +1665,15 @@
                     }
 		  var_init_fn = init_fndecl;
 		}
-              Bexpression* var_binit = var->get_init(this, var_init_fn);
+
+	      Bexpression* var_binit;
+	      if (init == NULL)
+		var_binit = NULL;
+	      else
+		{
+		  Translate_context context(this, var_init_fn, NULL, NULL);
+		  var_binit = init->get_backend(&context);
+		}
 
               if (var_binit == NULL)
 		;
