X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fjava%2Fexpr.c;h=af49adbe8d69c62dad0cc6e9f69263cb9533c0de;hp=c222a6550e6223fd45994f9aeb7e32f395dffeb3;hb=d45e1e6e1a18f6716de168b35aa594666410a7e1;hpb=6952537624788ed18a003114770e86a13e4a3397 diff --git a/gcc/java/expr.c b/gcc/java/expr.c index c222a6550e6..af49adbe8d6 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -638,9 +638,8 @@ java_stack_swap (void) tree decl1, decl2; if (stack_pointer < 2 - || (type1 = stack_type_map[stack_pointer - 1]) == TYPE_UNKNOWN - || (type2 = stack_type_map[stack_pointer - 2]) == TYPE_UNKNOWN - || type1 == TYPE_SECOND || type2 == TYPE_SECOND + || (type1 = stack_type_map[stack_pointer - 1]) == TYPE_SECOND + || (type2 = stack_type_map[stack_pointer - 2]) == TYPE_SECOND || TYPE_IS_WIDE (type1) || TYPE_IS_WIDE (type2)) /* Bad stack swap. */ abort (); @@ -1998,13 +1997,7 @@ build_class_init (tree clas, tree expr) decl = build_decl (VAR_DECL, NULL_TREE, boolean_type_node); MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC (decl); - LOCAL_CLASS_INITIALIZATION_FLAG (decl) = 1; DECL_CONTEXT (decl) = current_function_decl; - DECL_FUNCTION_INIT_TEST_CLASS (decl) = clas; - /* Tell the check-init code to ignore this decl when not - optimizing class initialization. */ - if (!STATIC_CLASS_INIT_OPT_P ()) - DECL_BIT_INDEX (decl) = -1; DECL_INITIAL (decl) = boolean_false_node; /* Don't emit any symbolic debugging info for this decl. */ DECL_IGNORED_P (decl) = 1; @@ -2621,7 +2614,6 @@ build_jni_stub (tree method) int args_size = 0; tree klass = DECL_CONTEXT (method); - int from_class = ! CLASS_FROM_SOURCE_P (klass); klass = build_class_ref (klass); gcc_assert (METHOD_NATIVE (method) && flag_jni); @@ -2651,25 +2643,16 @@ build_jni_stub (tree method) chainon (env_var, meth_var); build_result_decl (method); - /* One strange way that the front ends are different is that they - store arguments differently. */ - if (from_class) - method_args = DECL_ARGUMENTS (method); - else - method_args = BLOCK_EXPR_DECLS (DECL_FUNCTION_BODY (method)); + method_args = DECL_ARGUMENTS (method); block = build_block (env_var, NULL_TREE, method_args, NULL_TREE); TREE_SIDE_EFFECTS (block) = 1; - /* When compiling from source we don't set the type of the block, - because that will prevent patch_return from ever being run. */ - if (from_class) - TREE_TYPE (block) = TREE_TYPE (TREE_TYPE (method)); + TREE_TYPE (block) = TREE_TYPE (TREE_TYPE (method)); /* Compute the local `env' by calling _Jv_GetJNIEnvNewFrame. */ body = build2 (MODIFY_EXPR, ptr_type_node, env_var, build_call_nary (ptr_type_node, build_address_of (soft_getjnienvnewframe_node), 1, klass)); - CAN_COMPLETE_NORMALLY (body) = 1; /* All the arguments to this method become arguments to the underlying JNI function. If we had to wrap object arguments in a @@ -2756,7 +2739,6 @@ build_jni_stub (tree method) } TREE_SIDE_EFFECTS (call) = 1; - CAN_COMPLETE_NORMALLY (call) = 1; body = build2 (COMPOUND_EXPR, void_type_node, body, call); TREE_SIDE_EFFECTS (body) = 1; @@ -2766,7 +2748,6 @@ build_jni_stub (tree method) build_address_of (soft_jnipopsystemframe_node), 1, env_var); TREE_SIDE_EFFECTS (call) = 1; - CAN_COMPLETE_NORMALLY (call) = 1; body = build2 (COMPOUND_EXPR, void_type_node, body, call); TREE_SIDE_EFFECTS (body) = 1; @@ -3750,7 +3731,6 @@ force_evaluation_order (tree node) cmp = build2 (COMPOUND_EXPR, TREE_TYPE (node), cmp, node); if (TREE_TYPE (cmp) != void_type_node) cmp = save_expr (cmp); - CAN_COMPLETE_NORMALLY (cmp) = CAN_COMPLETE_NORMALLY (node); TREE_SIDE_EFFECTS (cmp) = 1; node = cmp; } @@ -3764,7 +3744,6 @@ tree build_java_empty_stmt (void) { tree t = build_empty_stmt (); - CAN_COMPLETE_NORMALLY (t) = 1; return t; }