compiler: fix off-by-1 array type len in Type::gc_symbol_constructor
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 15 Dec 2016 23:44:13 +0000 (23:44 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 15 Dec 2016 23:44:13 +0000 (23:44 +0000)
    Array type being built to hold GC var initializer was being created
    with an extra/unneeded slot. Fix up the code to insure that the array
    length matches the length of the initializer list.

    Reviewed-on: https://go-review.googlesource.com/34413

From-SVN: r243731

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/types.cc

index 4a5f6d295ddb5545c103d02dcf32af3fb7dd9b4b..8f64fdfda48425f4e4f8b1c91cabd888de667c34 100644 (file)
@@ -1,4 +1,4 @@
-e807c1deec1e7114bc4757b6193510fdae13e75f
+ae57b28b3caf1f6670e0f663235f1bf7655db870
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index f3cb32b5142bf12b36a36f88e0b023960c34ad62..eab3bedbc7f33e735ee59e17d2e4366f2fcd5fa2 100644 (file)
@@ -2261,7 +2261,7 @@ Type::gc_symbol_constructor(Gogo* gogo)
 
   vals->push_back(Expression::make_integer_ul(GC_END, uintptr_t, bloc));
 
-  Expression* len = Expression::make_integer_ul(vals->size() + 1, NULL,
+  Expression* len = Expression::make_integer_ul(vals->size(), NULL,
                                                bloc);
   Array_type* gc_symbol_type = Type::make_array_type(uintptr_t, len);
   return Expression::make_array_composite_literal(gc_symbol_type, vals, bloc);