Commit ef5b0e6e by Jakub Jelinek Committed by Jakub Jelinek

class.c (build_utf8_ref): Pad initializer string to utf8const_type's alignment.

	* class.c (build_utf8_ref): Pad initializer string to utf8const_type's
	alignment.

From-SVN: r138251
parent eb9c434c
2008-07-29 Jakub Jelinek <jakub@redhat.com>
* class.c (build_utf8_ref): Pad initializer string to utf8const_type's
alignment.
2008-07-29 Jan Hubicka <jh@suse.cz> 2008-07-29 Jan Hubicka <jh@suse.cz>
* lang.c (java_post_options): Remove handling of flag_no_inline. * lang.c (java_post_options): Remove handling of flag_no_inline.
......
...@@ -930,8 +930,8 @@ static GTY(()) tree utf8_decl_list = NULL_TREE; ...@@ -930,8 +930,8 @@ static GTY(()) tree utf8_decl_list = NULL_TREE;
tree tree
build_utf8_ref (tree name) build_utf8_ref (tree name)
{ {
const char * name_ptr = IDENTIFIER_POINTER(name); const char * name_ptr = IDENTIFIER_POINTER (name);
int name_len = IDENTIFIER_LENGTH(name); int name_len = IDENTIFIER_LENGTH (name), name_pad;
char buf[60]; char buf[60];
tree ctype, field = NULL_TREE, str_type, cinit, string; tree ctype, field = NULL_TREE, str_type, cinit, string;
static int utf8_count = 0; static int utf8_count = 0;
...@@ -942,8 +942,11 @@ build_utf8_ref (tree name) ...@@ -942,8 +942,11 @@ build_utf8_ref (tree name)
return ref; return ref;
ctype = make_node (RECORD_TYPE); ctype = make_node (RECORD_TYPE);
/* '\0' byte plus padding to utf8const_type's alignment. */
name_pad = TYPE_ALIGN_UNIT (utf8const_type)
- (name_len & (TYPE_ALIGN_UNIT (utf8const_type) - 1));
str_type = build_prim_array_type (unsigned_byte_type_node, str_type = build_prim_array_type (unsigned_byte_type_node,
name_len + 1); /* Allow for final '\0'. */ name_len + name_pad);
PUSH_FIELD (ctype, field, "hash", unsigned_short_type_node); PUSH_FIELD (ctype, field, "hash", unsigned_short_type_node);
PUSH_FIELD (ctype, field, "length", unsigned_short_type_node); PUSH_FIELD (ctype, field, "length", unsigned_short_type_node);
PUSH_FIELD (ctype, field, "data", str_type); PUSH_FIELD (ctype, field, "data", str_type);
...@@ -973,8 +976,7 @@ build_utf8_ref (tree name) ...@@ -973,8 +976,7 @@ build_utf8_ref (tree name)
{ {
int decl_size; int decl_size;
/* Ensure decl_size is a multiple of utf8const_type's alignment. */ /* Ensure decl_size is a multiple of utf8const_type's alignment. */
decl_size = (name_len + 5 + TYPE_ALIGN_UNIT (utf8const_type) - 1) decl_size = name_len + 4 + name_pad;
& ~(TYPE_ALIGN_UNIT (utf8const_type) - 1);
if (flag_merge_constants && decl_size < 256) if (flag_merge_constants && decl_size < 256)
{ {
char buf[32]; char buf[32];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment