diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 49c40ee4149089c74b7aec1a4f88b0c1a91ece17..a1e5a0506f63981d690666724cc621a16620ffa8 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>
+
+	* java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
+	Don't create BLOCK here or call java_gimplify_block.
+
 2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* java-tree.h (flag_deprecated): Removed.
diff --git a/gcc/java/java-gimplify.c b/gcc/java/java-gimplify.c
index 5dd69bf40fe364ba23fc7aaed0e61b0227ad1fd3..2d3be9995a3cace4f00b3f6ddd97c81ce9808f60 100644
--- a/gcc/java/java-gimplify.c
+++ b/gcc/java/java-gimplify.c
@@ -247,18 +247,12 @@ java_gimplify_new_array_init (tree exp)
   tree values = CONSTRUCTOR_ELTS (init);
 
   tree array_ptr_type = build_pointer_type (array_type);
-  tree block = build0 (BLOCK, array_ptr_type);
-  tree tmp = build_decl (VAR_DECL, get_identifier ("<tmp>"), array_ptr_type);
-  tree array = build_decl (VAR_DECL, get_identifier ("<array>"),
-			   array_ptr_type);
+  tree tmp = create_tmp_var (array_ptr_type, "array");
   tree body = build2 (MODIFY_EXPR, array_ptr_type, tmp,
 		      build_new_array (element_type, length));
 
   int index = 0;
 
-  DECL_CONTEXT (array) = current_function_decl;
-  DECL_CONTEXT (tmp) = current_function_decl;
-
   /* FIXME: try to allocate array statically?  */
   while (values != NULL_TREE)
     {
@@ -276,12 +270,7 @@ java_gimplify_new_array_init (tree exp)
       values = TREE_CHAIN (values);
     }
 
-  body = build2 (COMPOUND_EXPR, array_ptr_type, body,
-		 build2 (MODIFY_EXPR, array_ptr_type, array, tmp));
-  TREE_CHAIN (tmp) = array;
-  BLOCK_VARS (block) = tmp;
-  BLOCK_EXPR_BODY (block) = body;
-  return java_gimplify_block (block);
+  return build2 (COMPOUND_EXPR, array_ptr_type, body, tmp);
 }
 
 static tree