Mercurial > hg > CbC > CbC_gcc
diff gcc/cbc-goto.h @ 7:7ff9aed93de8
partially written goto with env...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 20 Aug 2009 19:09:17 +0900 |
parents | 983001f85155 |
children | 959d4c8c8abc |
line wrap: on
line diff
--- a/gcc/cbc-goto.h Thu Aug 20 13:38:58 2009 +0900 +++ b/gcc/cbc-goto.h Thu Aug 20 19:09:17 2009 +0900 @@ -77,13 +77,6 @@ rtx insns; rtx before_call, next_arg_reg; - /* for environment. */ - rtx env_rtx; - tree env_tree; - - // env_tree = TREE_OPERAND(exp, 2); - env_tree = NULL_TREE; - /* State variables we need to save and restore between iterations. */ save_pending_stack_adjust = pending_stack_adjust; @@ -135,45 +128,6 @@ old_stack_allocated = stack_pointer_delta - pending_stack_adjust; - /* The argument block when performing a sibling call is the - incoming argument block. */ - /* - if ( 0 && !CbC_IS_CODE_SEGMENT(TREE_TYPE(current_function_decl)) ) - { - argblock = virtual_outgoing_args_rtx; - } - else - */ - - if ( env_tree!=NULL_TREE ) - { - /* - * ebp <= TREE_VALUE ( env_tree ); - * argsp <= TREE_PURPOSE ( env_tree ); - * - */ - //rtx tmp; - /* compute environment. */ - push_temp_slots (); - /* expand_expr shouldn't be here... it's moved later. */ - //env_rtx = expand_expr ( env_tree, NULL_RTX, - //VOIDmode, EXPAND_STACK_PARM); - //argblock = hard_frame_pointer_rtx; - //argblock = env_rtx; - //argblock = plus_constant (argblock, -current_function_arg_offset_rtx); - //tmp = gen_rtx_MINUS (Pmode, hard_frame_pointer_rtx, virtual_incoming_args_rtx); - //argblock = gen_rtx_MINUS (Pmode, env_rtx, tmp); - //argblock = plus_constant (argblock, frame_offset); - argblock = expand_expr ( TREE_VALUE (env_tree), NULL_RTX, - VOIDmode, EXPAND_STACK_PARM); - env_rtx = expand_expr ( TREE_PURPOSE (env_tree), NULL_RTX, - VOIDmode, EXPAND_STACK_PARM); - preserve_temp_slots (argblock); - pop_temp_slots (); - } - else - { - //argblock = virtual_incoming_args_rtx; argblock = crtl->args.internal_arg_pointer; argblock @@ -182,7 +136,6 @@ #else = plus_constant (argblock, -crtl->args.pretend_args_size); #endif - } stored_args_map = sbitmap_alloc (args_size->constant); @@ -268,9 +221,9 @@ precompute_register_parameters (num_actuals, args, ®_parm_seen); /* operand[2] is environment. */ - //if (TREE_OPERAND (exp, 2)) - //static_chain_value = expand_normal (TREE_OPERAND (exp, 2)); - //else + if (TREE_OPERAND (exp, 2)) + static_chain_value = expand_normal (TREE_OPERAND (exp, 2)); + else static_chain_value = 0; @@ -350,7 +303,7 @@ /* Stack must be properly aligned now. */ gcc_assert (!pass || !(stack_pointer_delta % preferred_unit_stack_boundary)); - +#if 0 /* store environment. */ if ( env_tree!=NULL ) { @@ -363,6 +316,7 @@ emit_indirect_jump (funexp); } +#endif /* Generate the actual call instruction. */ emit_call_1 (funexp, exp, fndecl, funtype, unadjusted_args_size,