diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-06 15:09:41 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-06 15:09:41 +0000 |
commit | 36e05e80a04b4c8fffd5603ba7b30a17d099dc56 (patch) | |
tree | a53a8de3c7798f7e4f769d054f949cffe717d18e /gcc/java | |
parent | 59c0ed8089f6b84b1598a4590aba03083569eb7e (diff) | |
download | gcc-36e05e80a04b4c8fffd5603ba7b30a17d099dc56.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198631 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/java/class.c | 14 |
2 files changed, 20 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 4f786b40cbd..993890d0079 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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. diff --git a/gcc/java/class.c b/gcc/java/class.c index b3005a82ba0..30679f72b39 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -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; |