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, &reg_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,