* class.c (make_class_data): Set DECL_ALIGN on static class data,
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Apr 2002 23:13:11 +0000 (23:13 +0000)
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Apr 2002 23:13:11 +0000 (23:13 +0000)
for hash synchronization.
* expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
* decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
class_type_node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52448 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/class.c
gcc/java/decl.c
gcc/java/expr.c

index 2666603..db10f95 100644 (file)
@@ -1,3 +1,11 @@
+2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
+
+       * class.c (make_class_data): Set DECL_ALIGN on static class data,
+       for hash synchronization.
+       * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
+       * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
+       class_type_node.
+
 2002-04-16  Mark Wielaard  <mark@klomp.org>
 
        * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
index c8290ea..7b8c5e0 100644 (file)
@@ -1736,6 +1736,11 @@ make_class_data (type)
   FINISH_RECORD_CONSTRUCTOR (cons);
 
   DECL_INITIAL (decl) = cons;
+  
+  /* Hash synchronization requires at least 64-bit alignment. */
+  if (flag_hash_synchronization && POINTER_SIZE < 64)
+    DECL_ALIGN (decl) = 64; 
+  
   rest_of_decl_compilation (decl, (char*) 0, 1, 0);
 }
 
index c0560c6..c3dd5ae 100644 (file)
@@ -682,10 +682,6 @@ java_init_decl_processing ()
     FIELD_PRIVATE (t) = 1;
   push_super_field (class_type_node, object_type_node);
 
-  /* Hash synchronization requires at least double-word alignment. */
-  if (flag_hash_synchronization && POINTER_SIZE < 64)
-    TYPE_ALIGN (class_type_node) = 64;
-
   FINISH_RECORD (class_type_node);
   build_decl (TYPE_DECL, get_identifier ("Class"), class_type_node);
 
index bba81d5..dd736c7 100644 (file)
@@ -2526,6 +2526,9 @@ java_expand_expr (exp, target, tmode, modifier)
            DECL_INITIAL (init_decl) = value;
            DECL_IGNORED_P (init_decl) = 1;
            TREE_READONLY (init_decl) = 1;
+           /* Hash synchronization requires at least 64-bit alignment. */
+           if (flag_hash_synchronization && POINTER_SIZE < 64)
+             DECL_ALIGN (init_decl) = 64;
            rest_of_decl_compilation (init_decl, NULL, 1, 0);
            TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (init_decl)) = 1;
            init = build1 (ADDR_EXPR, TREE_TYPE (exp), init_decl);