re PR libgcj/57074 (libgcj regression on 32bit Power architecture)
authorJakub Jelinek <jakub@redhat.com>
Mon, 6 May 2013 15:09:41 +0000 (17:09 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 6 May 2013 15:09:41 +0000 (17:09 +0200)
PR libgcj/57074
* class.c (emit_symbol_table): Use array type of the
right size for the_syms_decl and its DECL_INITIAL, instead
of symbols_array_type.  Set TREE_TYPE (the_syms_decl) to it.
(emit_assertion_table): Use array type of the right size
for table_decl and its DECL_INITIAL.

From-SVN: r198631

gcc/java/ChangeLog
gcc/java/class.c

index 4f786b40cbdef8c0a045eccbdd8c3a923d87293d..993890d00795670ac5eea4458c553cb73da088b2 100644 (file)
@@ -1,3 +1,12 @@
+2013-05-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR libgcj/57074
+       * class.c (emit_symbol_table): Use array type of the
+       right size for the_syms_decl and its DECL_INITIAL, instead
+       of symbols_array_type.  Set TREE_TYPE (the_syms_decl) to it.
+       (emit_assertion_table): Use array type of the right size
+       for table_decl and its DECL_INITIAL.
+
 2013-04-15  Gerald Pfeifer  <gerald@pfeifer.com>
 
        * gcj.texi (Configure-time Options): Refer to GCC, not gcc.
index b3005a82ba0a22fe938c88d2f71bb452a27f3728..30679f72b394e6dcb60c9576eda7c10088fa1823 100644 (file)
@@ -2958,9 +2958,14 @@ emit_symbol_table (tree name, tree the_table,
                                           null_pointer_node);
   CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, null_symbol);
 
-  table = build_constructor (symbols_array_type, v);
+  tree symbols_arr_type
+    = build_prim_array_type (symbol_type, vec_safe_length (v));
+
+  table = build_constructor (symbols_arr_type, v);
 
   /* Make it the initial value for otable_syms and emit the decl. */
+  TREE_TYPE (the_syms_decl) = symbols_arr_type;
+  relayout_decl (the_syms_decl);
   DECL_INITIAL (the_syms_decl) = table;
   DECL_ARTIFICIAL (the_syms_decl) = 1;
   DECL_IGNORED_P (the_syms_decl) = 1;
@@ -3109,12 +3114,15 @@ emit_assertion_table (tree klass)
                                             null_pointer_node);
   
   CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, null_entry);
+
+  tree type
+    = build_prim_array_type (assertion_entry_type, vec_safe_length (v));
   
-  ctor = build_constructor (assertion_table_type, v);
+  ctor = build_constructor (type, v);
 
   table_decl = build_decl (input_location,
                           VAR_DECL, mangled_classname ("_type_assert_", klass),
-                          assertion_table_type);
+                          type);
 
   TREE_STATIC (table_decl) = 1;
   TREE_READONLY (table_decl) = 1;