Don't crash if a constant has a declared but undefined type.
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 3 Mar 2011 00:42:10 +0000 (00:42 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 3 Mar 2011 00:42:10 +0000 (00:42 +0000)
From-SVN: r170632

gcc/go/gofrontend/gogo-tree.cc

index 722a23a52d70dc8637d609364bbce2142eda9e2f..883b5b118469f7abf7ef28198f6781b19164f9aa 100644 (file)
@@ -926,7 +926,16 @@ Named_object::get_tree(Gogo* gogo, Named_object* function)
          {
            Type* type = named_constant->type();
            if (type != NULL && !type->is_abstract())
-             expr_tree = fold_convert(type->get_tree(gogo), expr_tree);
+             {
+               if (!type->is_undefined())
+                 expr_tree = fold_convert(type->get_tree(gogo), expr_tree);
+               else
+                 {
+                   // Make sure we report the error.
+                   type->base();
+                   expr_tree = error_mark_node;
+                 }
+             }
            if (expr_tree == error_mark_node)
              decl = error_mark_node;
            else if (INTEGRAL_TYPE_P(TREE_TYPE(expr_tree)))