Index: java/class.c
===================================================================
--- java/class.c	(revision 167152)
+++ java/class.c	(working copy)
@@ -27,6 +27,7 @@ the Free Software Foundation; either ver
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm.h"       /* FIXME: For TARGET_PTRMEMFUNC_VBIT_LOCATION / BITS_PER_UNIT / TARGET_VTABLE_USES_DESCRIPTORS / POINTER_SIZE / TARGET_USE_JCR_SECTION  */
 #include "tree.h"
 #include "flags.h"
 #include "java-tree.h"
@@ -42,7 +43,6 @@ the Free Software Foundation; either ver
 #include "cgraph.h"
 #include "tree-iterator.h"
 #include "vecprim.h"
-#include "tm.h"         /* FIXME: For gcc_obstack_init from defaults.h.  */
 #include "target.h"
 
 /* DOS brain-damage */
Index: java/decl.c
===================================================================
--- java/decl.c	(revision 167152)
+++ java/decl.c	(working copy)
@@ -28,6 +28,7 @@ the Free Software Foundation; either ver
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm.h"
 #include "tree.h"
 #include "diagnostic-core.h"
 #include "toplev.h"
Index: java/jcf-parse.c
===================================================================
--- java/jcf-parse.c	(revision 167152)
+++ java/jcf-parse.c	(working copy)
@@ -27,6 +27,7 @@ the Free Software Foundation; either ver
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm.h"
 #include "tree.h"
 #include "obstack.h"
 #include "flags.h"
Index: tree-emutls.c
===================================================================
--- tree-emutls.c	(revision 167152)
+++ tree-emutls.c	(working copy)
@@ -21,6 +21,7 @@ Free Software Foundation; either version
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm-holdover.h"
 #include "tree.h"
 #include "gimple.h"
 #include "tree-pass.h"
Index: expr.c
===================================================================
--- expr.c	(revision 167152)
+++ expr.c	(working copy)
@@ -8405,7 +8405,7 @@ expand_expr_real_1 (tree exp, rtx target
 	    int nregs = hard_regno_nregs[i][GET_MODE (decl_rtl)];
 	    while (nregs)
 	      {
-		SET_HARD_REG_BIT (crtl->asm_clobbers, i);
+		SET_HARD_REG_BIT (ctmrtl->asm_clobbers, i);
 		i++;
 		nregs--;
 	      }
Index: fortran/f95-lang.c
===================================================================
--- fortran/f95-lang.c	(revision 167152)
+++ fortran/f95-lang.c	(working copy)
@@ -28,13 +28,13 @@ Software Foundation; either version 3, o
 #include "ansidecl.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm.h"
 #include "tree.h"
 #include "gimple.h"
 #include "flags.h"
 #include "langhooks.h"
 #include "langhooks-def.h"
 #include "timevar.h"
-#include "tm.h"
 #include "function.h"
 #include "ggc.h"
 #include "toplev.h"
Index: function.c
===================================================================
--- function.c	(revision 167152)
+++ function.c	(working copy)
@@ -215,6 +215,7 @@ free_after_compilation (struct function 
     free (crtl->emit.regno_pointer_align);
 
   memset (crtl, 0, sizeof (struct rtl_data));
+  memset (ctmrtl, 0, sizeof (struct rtl_tm_data));
   f->eh = NULL;
   f->machine = NULL;
   f->cfg = NULL;
@@ -3464,7 +3465,7 @@ assign_parms (tree fndecl)
   /* For stdarg.h function, save info about
      regs and stack space used by the named args.  */
 
-  crtl->args.info = all.args_so_far;
+  ctmrtl->args_info = all.args_so_far;
 
   /* Set the rtx used for the function return value.  Put this in its
      own variable so any optimizers that need this information don't have
Index: function.h
===================================================================
--- function.h	(revision 167152)
+++ function.h	(working copy)
@@ -25,8 +25,9 @@ Software Foundation; either version 3, o
 #include "tree.h"
 #include "hashtab.h"
 #include "vecprim.h"
-#include "tm.h"		/* For CUMULATIVE_ARGS.  */
+#ifdef GCC_TM_H
 #include "hard-reg-set.h"
+#endif /* GCC_TM_H */
 
 /* Stack of pending (incomplete) sequences saved by `start_sequence'.
    Each element describes one pending sequence.
@@ -208,10 +209,6 @@ struct GTY(()) incoming_args {
      anonymous arg can be found, if there is one.  */
   rtx arg_offset_rtx;
 
-  /* Quantities of various kinds of registers
-     used for the current function's args.  */
-  CUMULATIVE_ARGS info;
-
   /* The arg pointer hard register, or the pseudo into which it was copied.  */
   rtx internal_arg_pointer;
 };
@@ -433,6 +430,15 @@ struct GTY(()) rtl_data {
      TREE_NOTHROW (current_function_decl) it is set even for overwritable
      function where currently compiled version of it is nothrow.  */
   bool nothrow;
+};
+
+#ifdef GCC_TM_H
+/* Datastructures maintained for currently processed function in RTL form,
+   which require inclusion of tm.h .  */
+struct GTY(()) rtl_tm_data {
+  /* Quantities of various kinds of registers
+     used for the current function's args.  */
+  CUMULATIVE_ARGS args_info;
 
   /* Like regs_ever_live, but 1 if a reg is set or clobbered from an
      asm.  Unlike regs_ever_live, elements of this array corresponding
@@ -440,6 +446,7 @@ struct GTY(()) rtl_data {
      sets them.  */
   HARD_REG_SET asm_clobbers;
 };
+#endif /* GCC_TM_H */
 
 #define return_label (crtl->x_return_label)
 #define naked_return_label (crtl->x_naked_return_label)
@@ -457,11 +464,13 @@ struct GTY(()) rtl_data {
 #define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
 
 extern GTY(()) struct rtl_data x_rtl;
+extern GTY(()) struct rtl_tm_data x_tm_rtl;
 
 /* Accessor to RTL datastructures.  We keep them statically allocated now since
    we never keep multiple functions.  For threaded compiler we might however
    want to do differently.  */
 #define crtl (&x_rtl)
+#define ctmrtl (&x_tm_rtl)
 
 struct GTY(()) stack_usage
 {
@@ -746,10 +755,12 @@ extern const char *current_function_name
 
 extern void do_warn_unused_parameter (tree);
 
+#ifdef GCC_TM_H
 extern bool pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
 			       tree, bool);
 extern bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode,
 				     tree, bool);
+#endif /* GCC_TM_H */
 
 extern void used_types_insert (tree);
 
Index: tree-affine.c
===================================================================
--- tree-affine.c	(revision 167152)
+++ tree-affine.c	(working copy)
@@ -20,6 +20,7 @@ Free Software Foundation; either version
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm-holdover.h"
 #include "tree.h"
 #include "output.h"
 #include "tree-pretty-print.h"
Index: emit-rtl.c
===================================================================
--- emit-rtl.c	(revision 167152)
+++ emit-rtl.c	(working copy)
@@ -78,6 +78,7 @@ enum machine_mode ptr_mode;	/* Mode whos
 /* Datastructures maintained for currently processed function in RTL form.  */
 
 struct rtl_data x_rtl;
+struct rtl_tm_data x_tm_rtl;
 
 /* Indexed by pseudo register number, gives the rtx for that pseudo.
    Allocated in parallel with regno_pointer_align.
Index: ipa-prop.c
===================================================================
--- ipa-prop.c	(revision 167152)
+++ ipa-prop.c	(working copy)
@@ -21,6 +21,7 @@ Software Foundation; either version 3, o
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+#include "tm.h" /* For TARGET_PTRMEMFUNC_VBIT_LOCATION.  */
 #include "tree.h"
 #include "langhooks.h"
 #include "ggc.h"
Index: ira.c
===================================================================
--- ira.c	(revision 167152)
+++ ira.c	(working copy)
@@ -1328,7 +1328,7 @@ compute_regs_asm_clobbered (void)
 		      + hard_regno_nregs[dregno][mode] - 1;
 
 		    for (i = dregno; i <= end; ++i)
-		      SET_HARD_REG_BIT(crtl->asm_clobbers, i);
+		      SET_HARD_REG_BIT(ctmrtl->asm_clobbers, i);
 		  }
 	      }
 	}
@@ -1374,7 +1374,7 @@ ira_setup_eliminable_regset (void)
 	= (! targetm.can_eliminate (eliminables[i].from, eliminables[i].to)
 	   || (eliminables[i].to == STACK_POINTER_REGNUM && need_fp));
 
-      if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, eliminables[i].from))
+      if (!TEST_HARD_REG_BIT (ctmrtl->asm_clobbers, eliminables[i].from))
 	{
 	    SET_HARD_REG_BIT (eliminable_regset, eliminables[i].from);
 
@@ -1388,7 +1388,7 @@ ira_setup_eliminable_regset (void)
 	df_set_regs_ever_live (eliminables[i].from, true);
     }
 #if !HARD_FRAME_POINTER_IS_FRAME_POINTER
-  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
+  if (!TEST_HARD_REG_BIT (ctmrtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
     {
       SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
       if (need_fp)
@@ -1402,7 +1402,7 @@ ira_setup_eliminable_regset (void)
 #endif
 
 #else
-  if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
+  if (!TEST_HARD_REG_BIT (ctmrtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
     {
       SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);
       if (need_fp)
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 167152)
+++ Makefile.in	(working copy)
@@ -2590,7 +2590,7 @@ tree-ssa-loop-ivopts.o : tree-ssa-loop-i
    tree-affine.h pointer-set.h $(TARGET_H) tree-pretty-print.h \
    gimple-pretty-print.h tree-ssa-propagate.h
 tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \
-   $(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
+   $(SYSTEM_H) $(TREE_H) $(GIMPLE_H) tm-holdover.h \
    output.h $(DIAGNOSTIC_H) coretypes.h $(TREE_DUMP_H) $(FLAGS_H) \
    tree-pretty-print.h
 tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \
@@ -3176,7 +3176,7 @@ tree-complex.o : tree-complex.c $(CONFIG
     tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H)
 tree-emutls.o : tree-emutls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
     $(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) $(CGRAPH_H) langhooks.h \
-    $(TARGET_H) targhooks.h tree-iterator.h
+    $(TARGET_H) targhooks.h tree-iterator.h tm-holdover.h
 tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
     $(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h $(TREE_PASS_H) \
     $(FLAGS_H) $(OPTABS_H) $(MACHMODE_H) $(EXPR_H) \
@@ -3708,6 +3708,15 @@ s-constrs-h: $(MD_DEPS) build/genpreds$(
 	$(SHELL) $(srcdir)/../move-if-change tmp-constrs.h tm-constrs.h
 	$(STAMP) s-constrs-h
 
+tm-holdover.h : s-holdover; @true
+s-holdover: $(tm_file_list)
+	echo '/* Target macros that remain in frontends / tree-optimizers.  */'\
+	  >> tmp-holdover.h
+	grep '^#[ 	]define[ 	]*BITS_PER_UNIT' $(tm_file_list) \
+	  >> tmp-holdover.h \
+	|| echo '#define BITS_PER_UNIT 8' >> tmp-holdover.h
+	$(SHELL) $(srcdir)/../move-if-change tmp-holdover.h tm-holdover.h
+
 target-hooks-def.h: s-target-hooks-def-h; @true
 # make sure that when we build info files, the used tm.texi is up to date.
 $(srcdir)/doc/tm.texi: s-tm-texi; @true
Index: config/alpha/alpha.c
===================================================================
--- config/alpha/alpha.c	(revision 167152)
+++ config/alpha/alpha.c	(working copy)
@@ -186,9 +186,9 @@ struct alpha_rtx_cost_data
 
 /* Get the number of args of a function in one of two ways.  */
 #if TARGET_ABI_OPEN_VMS || TARGET_ABI_UNICOSMK
-#define NUM_ARGS crtl->args.info.num_args
+#define NUM_ARGS ctmrtl->args_info.num_args
 #else
-#define NUM_ARGS crtl->args.info
+#define NUM_ARGS ctmrtl->args_info
 #endif
 
 #define REG_PV 27
Index: config/frv/frv.c
===================================================================
--- config/frv/frv.c	(revision 167152)
+++ config/frv/frv.c	(working copy)
@@ -2253,7 +2253,7 @@ frv_expand_builtin_saveregs (void)
 frv_expand_builtin_va_start (tree valist, rtx nextarg)
 {
   tree t;
-  int num = crtl->args.info - FIRST_ARG_REGNUM - FRV_NUM_ARG_REGS;
+  int num = ctmrtl->args_info - FIRST_ARG_REGNUM - FRV_NUM_ARG_REGS;
 
   nextarg = gen_rtx_PLUS (Pmode, virtual_incoming_args_rtx,
 			  GEN_INT (UNITS_PER_WORD * num));
@@ -2261,7 +2261,7 @@ frv_expand_builtin_va_start (tree valist
   if (TARGET_DEBUG_ARG)
     {
       fprintf (stderr, "va_start: args_info = %d, num = %d\n",
-	       crtl->args.info, num);
+	       ctmrtl->args_info, num);
 
       debug_rtx (nextarg);
     }
Index: config/s390/s390.c
===================================================================
--- config/s390/s390.c	(revision 167152)
+++ config/s390/s390.c	(working copy)
@@ -7225,9 +7225,9 @@ s390_register_info (int clobbered_regs[]
     {
       /* Varargs functions need to save gprs 2 to 6.  */
       if (cfun->va_list_gpr_size
-	  && crtl->args.info.gprs < GP_ARG_NUM_REG)
+	  && ctmrtl->args_info.gprs < GP_ARG_NUM_REG)
 	{
-	  int min_gpr = crtl->args.info.gprs;
+	  int min_gpr = ctmrtl->args_info.gprs;
 	  int max_gpr = min_gpr + cfun->va_list_gpr_size;
 	  if (max_gpr > GP_ARG_NUM_REG)
 	    max_gpr = GP_ARG_NUM_REG;
@@ -7249,9 +7249,9 @@ s390_register_info (int clobbered_regs[]
 
       /* Mark f0, f2 for 31 bit and f0-f4 for 64 bit to be saved.  */
       if (TARGET_HARD_FLOAT && cfun->va_list_fpr_size
-	  && crtl->args.info.fprs < FP_ARG_NUM_REG)
+	  && ctmrtl->args_info.fprs < FP_ARG_NUM_REG)
 	{
-	  int min_fpr = crtl->args.info.fprs;
+	  int min_fpr = ctmrtl->args_info.fprs;
 	  int max_fpr = min_fpr + cfun->va_list_fpr_size;
 	  if (max_fpr > FP_ARG_NUM_REG)
 	    max_fpr = FP_ARG_NUM_REG;
@@ -8720,7 +8720,7 @@ s390_build_builtin_va_list (void)
    The following global variables are used to initialize
    the va_list structure:
 
-     crtl->args.info:
+     ctmrtl->args_info:
        holds number of gprs and fprs used for named arguments.
      crtl->args.arg_offset_rtx:
        holds the offset of the first anonymous stack argument
@@ -8747,8 +8747,8 @@ s390_va_start (tree valist, rtx nextarg 
 
   /* Count number of gp and fp argument registers used.  */
 
-  n_gpr = crtl->args.info.gprs;
-  n_fpr = crtl->args.info.fprs;
+  n_gpr = ctmrtl->args_info.gprs;
+  n_fpr = ctmrtl->args_info.fprs;
 
   if (cfun->va_list_gpr_size)
     {
Index: config/spu/spu.c
===================================================================
--- config/spu/spu.c	(revision 167152)
+++ config/spu/spu.c	(working copy)
@@ -4140,7 +4140,7 @@ spu_build_builtin_va_list (void)
    The following global variables are used to initialize
    the va_list structure:
 
-     crtl->args.info;
+     ctmrtl->args_info;
        the CUMULATIVE_ARGS for this function
 
      crtl->args.arg_offset_rtx:
Index: config/sparc/sparc.c
===================================================================
--- config/sparc/sparc.c	(revision 167152)
+++ config/sparc/sparc.c	(working copy)
@@ -6190,7 +6190,7 @@ sparc_function_value_regno_p (const unsi
 static rtx
 sparc_builtin_saveregs (void)
 {
-  int first_reg = crtl->args.info.words;
+  int first_reg = ctmrtl->args_info.words;
   rtx address;
   int regno;
 
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c	(revision 167152)
+++ config/i386/i386.c	(working copy)
@@ -7953,9 +7953,9 @@ ix86_va_start (tree valist, rtx nextarg)
 		f_sav, NULL_TREE);
 
   /* Count number of gp and fp argument registers used.  */
-  words = crtl->args.info.words;
-  n_gpr = crtl->args.info.regno;
-  n_fpr = crtl->args.info.sse_regno;
+  words = ctmrtl->args_info.words;
+  n_gpr = ctmrtl->args_info.regno;
+  n_fpr = ctmrtl->args_info.sse_regno;
 
   if (cfun->va_list_gpr_size)
     {
Index: config/sh/sh.c
===================================================================
--- config/sh/sh.c	(revision 167152)
+++ config/sh/sh.c	(working copy)
@@ -6599,7 +6599,7 @@ calc_live_regs (HARD_REG_SET *live_regs_
   /* Force PR to be live if the prologue has to call the SHmedia
      argument decoder or register saver.  */
   if (TARGET_SHCOMPACT
-      && ((crtl->args.info.call_cookie
+      && ((ctmrtl->args_info.call_cookie
 	   & ~ CALL_COOKIE_RET_TRAMP (1))
 	  || crtl->saves_all_registers))
     pr_live = 1;
@@ -6626,7 +6626,7 @@ calc_live_regs (HARD_REG_SET *live_regs_
 	  : (/* Only push those regs which are used and need to be saved.  */
 	     (TARGET_SHCOMPACT
 	      && flag_pic
-	      && crtl->args.info.call_cookie
+	      && ctmrtl->args_info.call_cookie
 	      && reg == PIC_OFFSET_TABLE_REGNUM)
 	     || (df_regs_ever_live_p (reg)
 		 && ((!call_really_used_regs[reg]
@@ -6883,15 +6883,15 @@ sh_expand_prologue (void)
   pretend_args = crtl->args.pretend_args_size;
   if (TARGET_VARARGS_PRETEND_ARGS (current_function_decl)
       && (NPARM_REGS(SImode)
-	  > crtl->args.info.arg_count[(int) SH_ARG_INT]))
+	  > ctmrtl->args_info.arg_count[(int) SH_ARG_INT]))
     pretend_args = 0;
 
   output_stack_adjust (-pretend_args
-		       - crtl->args.info.stack_regs * 8,
+		       - ctmrtl->args_info.stack_regs * 8,
 		       stack_pointer_rtx, 0, NULL, true);
-  stack_usage = pretend_args + crtl->args.info.stack_regs * 8;
+  stack_usage = pretend_args + ctmrtl->args_info.stack_regs * 8;
 
-  if (TARGET_SHCOMPACT && flag_pic && crtl->args.info.call_cookie)
+  if (TARGET_SHCOMPACT && flag_pic && ctmrtl->args_info.call_cookie)
     /* We're going to use the PIC register to load the address of the
        incoming-argument decoder and/or of the return trampoline from
        the GOT, so make sure the PIC register is preserved and
@@ -6899,7 +6899,7 @@ sh_expand_prologue (void)
     df_set_regs_ever_live (PIC_OFFSET_TABLE_REGNUM, true);
 
   if (TARGET_SHCOMPACT
-      && (crtl->args.info.call_cookie & ~ CALL_COOKIE_RET_TRAMP(1)))
+      && (ctmrtl->args_info.call_cookie & ~ CALL_COOKIE_RET_TRAMP(1)))
     {
       int reg;
 
@@ -6907,20 +6907,20 @@ sh_expand_prologue (void)
 	 be pushed onto the stack live, so that register renaming
 	 doesn't overwrite them.  */
       for (reg = 0; reg < NPARM_REGS (SImode); reg++)
-	if (CALL_COOKIE_STACKSEQ_GET (crtl->args.info.call_cookie)
+	if (CALL_COOKIE_STACKSEQ_GET (ctmrtl->args_info.call_cookie)
 	    >= NPARM_REGS (SImode) - reg)
 	  for (; reg < NPARM_REGS (SImode); reg++)
 	    emit_insn (gen_shcompact_preserve_incoming_args
 		       (gen_rtx_REG (SImode, FIRST_PARM_REG + reg)));
 	else if (CALL_COOKIE_INT_REG_GET
-		 (crtl->args.info.call_cookie, reg) == 1)
+		 (ctmrtl->args_info.call_cookie, reg) == 1)
 	  emit_insn (gen_shcompact_preserve_incoming_args
 		     (gen_rtx_REG (SImode, FIRST_PARM_REG + reg)));
 
       emit_move_insn (gen_rtx_REG (Pmode, MACL_REG),
 		      stack_pointer_rtx);
       emit_move_insn (gen_rtx_REG (SImode, R0_REG),
-		      GEN_INT (crtl->args.info.call_cookie));
+		      GEN_INT (ctmrtl->args_info.call_cookie));
       emit_move_insn (gen_rtx_REG (SImode, MACH_REG),
 		      gen_rtx_REG (SImode, R0_REG));
     }
@@ -6944,7 +6944,7 @@ sh_expand_prologue (void)
 	      int rn = NPARM_REGS(SImode) + FIRST_PARM_REG - i - 1;
 
 	      if (i >= (NPARM_REGS(SImode)
-			- crtl->args.info.arg_count[(int) SH_ARG_INT]
+			- ctmrtl->args_info.arg_count[(int) SH_ARG_INT]
 			))
 		break;
 	      push (rn);
@@ -7206,7 +7206,7 @@ sh_expand_prologue (void)
     frame_insn (GEN_MOV (hard_frame_pointer_rtx, stack_pointer_rtx));
 
   if (TARGET_SHCOMPACT
-      && (crtl->args.info.call_cookie & ~ CALL_COOKIE_RET_TRAMP(1)))
+      && (ctmrtl->args_info.call_cookie & ~ CALL_COOKIE_RET_TRAMP(1)))
     {
       /* This must NOT go through the PLT, otherwise mach and macl
 	 may be clobbered.  */
@@ -7499,7 +7499,7 @@ sh_expand_epilogue (bool sibcall_p)
 
   output_stack_adjust (crtl->args.pretend_args_size
 		       + save_size + d_rounding
-		       + crtl->args.info.stack_regs * 8,
+		       + ctmrtl->args_info.stack_regs * 8,
 		       stack_pointer_rtx, e, NULL, false);
 
   if (crtl->calls_eh_return)
@@ -7622,11 +7622,11 @@ sh_output_function_epilogue (FILE *file 
 sh_builtin_saveregs (void)
 {
   /* First unnamed integer register.  */
-  int first_intreg = crtl->args.info.arg_count[(int) SH_ARG_INT];
+  int first_intreg = ctmrtl->args_info.arg_count[(int) SH_ARG_INT];
   /* Number of integer registers we need to save.  */
   int n_intregs = MAX (0, NPARM_REGS (SImode) - first_intreg);
   /* First unnamed SFmode float reg */
-  int first_floatreg = crtl->args.info.arg_count[(int) SH_ARG_FLOAT];
+  int first_floatreg = ctmrtl->args_info.arg_count[(int) SH_ARG_FLOAT];
   /* Number of SFmode float regs to save.  */
   int n_floatregs = MAX (0, NPARM_REGS (SFmode) - first_floatreg);
   rtx regbuf, fpregs;
@@ -7641,22 +7641,22 @@ sh_builtin_saveregs (void)
 
 	  while (pushregs < NPARM_REGS (SImode) - 1
 		 && (CALL_COOKIE_INT_REG_GET
-			(crtl->args.info.call_cookie,
+			(ctmrtl->args_info.call_cookie,
 			 NPARM_REGS (SImode) - pushregs)
 		     == 1))
 	    {
-	      crtl->args.info.call_cookie
+	      ctmrtl->args_info.call_cookie
 		&= ~ CALL_COOKIE_INT_REG (NPARM_REGS (SImode)
 					  - pushregs, 1);
 	      pushregs++;
 	    }
 
 	  if (pushregs == NPARM_REGS (SImode))
-	    crtl->args.info.call_cookie
+	    ctmrtl->args_info.call_cookie
 	      |= (CALL_COOKIE_INT_REG (0, 1)
 		  | CALL_COOKIE_STACKSEQ (pushregs - 1));
 	  else
-	    crtl->args.info.call_cookie
+	    ctmrtl->args_info.call_cookie
 	      |= CALL_COOKIE_STACKSEQ (pushregs);
 
 	  crtl->args.pretend_args_size += 8 * n_intregs;
@@ -7866,7 +7866,7 @@ sh_va_start (tree valist, rtx nextarg)
   TREE_SIDE_EFFECTS (t) = 1;
   expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
 
-  nfp = crtl->args.info.arg_count[SH_ARG_FLOAT];
+  nfp = ctmrtl->args_info.arg_count[SH_ARG_FLOAT];
   if (nfp < 8)
     nfp = 8 - nfp;
   else
@@ -7881,7 +7881,7 @@ sh_va_start (tree valist, rtx nextarg)
   TREE_SIDE_EFFECTS (t) = 1;
   expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
 
-  nint = crtl->args.info.arg_count[SH_ARG_INT];
+  nint = ctmrtl->args_info.arg_count[SH_ARG_INT];
   if (nint < 4)
     nint = 4 - nint;
   else
@@ -8668,11 +8668,11 @@ initial_elimination_offset (int from, in
 
   if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM)
     return total_saved_regs_space + total_auto_space
-      + crtl->args.info.byref_regs * 8;
+      + ctmrtl->args_info.byref_regs * 8;
 
   if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
     return total_saved_regs_space + total_auto_space
-      + crtl->args.info.byref_regs * 8;
+      + ctmrtl->args_info.byref_regs * 8;
 
   /* Initial gap between fp and sp is 0.  */
   if (from == HARD_FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
@@ -10283,7 +10283,7 @@ sh_allocate_initial_value (rtx hard_reg)
       if (current_function_is_leaf
 	  && ! sh_pr_n_sets ()
 	  && ! (TARGET_SHCOMPACT
-		&& ((crtl->args.info.call_cookie
+		&& ((ctmrtl->args_info.call_cookie
 		     & ~ CALL_COOKIE_RET_TRAMP (1))
 		    || crtl->saves_all_registers)))
 	x = hard_reg;
@@ -10893,7 +10893,7 @@ sh_function_ok_for_sibcall (tree decl, t
 {
   return (1
 	  && (! TARGET_SHCOMPACT
-	      || crtl->args.info.stack_regs == 0)
+	      || ctmrtl->args_info.stack_regs == 0)
 	  && ! sh_cfun_interrupt_handler_p ()
 	  && (! flag_pic
 	      || (decl && ! TREE_PUBLIC (decl))
@@ -11808,7 +11808,7 @@ sh_get_pr_initial_val (void)
      PR register on SHcompact, because it might be clobbered by the prologue.
      We check first if that is known to be the case.  */
   if (TARGET_SHCOMPACT
-      && ((crtl->args.info.call_cookie
+      && ((ctmrtl->args_info.call_cookie
 	   & ~ CALL_COOKIE_RET_TRAMP (1))
 	  || crtl->saves_all_registers))
     return gen_frame_mem (SImode, return_address_pointer_rtx);
Index: config/sh/sh.md
===================================================================
--- config/sh/sh.md	(revision 167152)
+++ config/sh/sh.md	(working copy)
@@ -9017,7 +9017,7 @@ (define_expand "return"
     }
 
   if (TARGET_SHCOMPACT
-      && (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1)))
+      && (ctmrtl->args_info.call_cookie & CALL_COOKIE_RET_TRAMP (1)))
     {
       emit_jump_insn (gen_shcompact_return_tramp ());
       DONE;
@@ -9027,7 +9027,7 @@ (define_expand "return"
 (define_insn "*return_i"
   [(return)]
   "TARGET_SH1 && ! (TARGET_SHCOMPACT
-		    && (crtl->args.info.call_cookie
+		    && (ctmrtl->args_info.call_cookie
 			& CALL_COOKIE_RET_TRAMP (1)))
    && reload_completed
    && lookup_attribute (\"trap_exit\",
@@ -9054,7 +9054,7 @@ (define_insn "*return_trapa"
 (define_expand "shcompact_return_tramp"
   [(return)]
   "TARGET_SHCOMPACT
-   && (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1))"
+   && (ctmrtl->args_info.call_cookie & CALL_COOKIE_RET_TRAMP (1))"
   "
 {
   rtx reg = gen_rtx_REG (Pmode, R0_REG);
@@ -9067,7 +9067,7 @@ (define_expand "shcompact_return_tramp"
 (define_insn "shcompact_return_tramp_i"
   [(parallel [(return) (use (reg:SI R0_REG))])]
   "TARGET_SHCOMPACT
-   && (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1))"
+   && (ctmrtl->args_info.call_cookie & CALL_COOKIE_RET_TRAMP (1))"
   "jmp	@r0%#"
   [(set_attr "type" "jump_ind")
    (set_attr "needs_delay_slot" "yes")])
Index: config/avr/avr.c
===================================================================
--- config/avr/avr.c	(revision 167152)
+++ config/avr/avr.c	(working copy)
@@ -2772,7 +2772,7 @@ out_movhi_mr_r (rtx insn, rtx op[], int 
 avr_frame_pointer_required_p (void)
 {
   return (cfun->calls_alloca
-	  || crtl->args.info.nregs == 0
+	  || ctmrtl->args_info.nregs == 0
   	  || get_frame_size () > 0);
 }
 
Index: config/xtensa/xtensa.c
===================================================================
--- config/xtensa/xtensa.c	(revision 167152)
+++ config/xtensa/xtensa.c	(working copy)
@@ -2752,7 +2752,7 @@ xtensa_build_builtin_va_list (void)
 xtensa_builtin_saveregs (void)
 {
   rtx gp_regs;
-  int arg_words = crtl->args.info.arg_words;
+  int arg_words = ctmrtl->args_info.arg_words;
   int gp_left = MAX_ARGS_IN_REGISTERS - arg_words;
 
   if (gp_left <= 0)
@@ -2789,7 +2789,7 @@ xtensa_va_start (tree valist, rtx nextar
   tree t, u;
   int arg_words;
 
-  arg_words = crtl->args.info.arg_words;
+  arg_words = ctmrtl->args_info.arg_words;
 
   f_stk = TYPE_FIELDS (va_list_type_node);
   f_reg = DECL_CHAIN (f_stk);
@@ -3184,7 +3184,7 @@ order_regs_for_local_alloc (void)
 
       /* Use the AR registers in increasing order (skipping a0 and a1)
 	 but save the incoming argument registers for a last resort.  */
-      num_arg_regs = crtl->args.info.arg_words;
+      num_arg_regs = ctmrtl->args_info.arg_words;
       if (num_arg_regs > MAX_ARGS_IN_REGISTERS)
 	num_arg_regs = MAX_ARGS_IN_REGISTERS;
       for (i = GP_ARG_FIRST; i < 16 - num_arg_regs; i++)
Index: config/stormy16/stormy16.c
===================================================================
--- config/stormy16/stormy16.c	(revision 167152)
+++ config/stormy16/stormy16.c	(working copy)
@@ -1350,7 +1350,7 @@ xstormy16_expand_builtin_va_start (tree 
 
   t = build2 (MODIFY_EXPR, TREE_TYPE (count), count,
 	      build_int_cst (NULL_TREE,
-			     crtl->args.info * UNITS_PER_WORD));
+			     ctmrtl->args_info * UNITS_PER_WORD));
   TREE_SIDE_EFFECTS (t) = 1;
   expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
 }
Index: config/m68hc11/m68hc11.c
===================================================================
--- config/m68hc11/m68hc11.c	(revision 167152)
+++ config/m68hc11/m68hc11.c	(working copy)
@@ -1669,7 +1669,7 @@ expand_prologue (void)
      If the first argument is a 32-bit quantity, the D+X registers
      are used.  Use Y to compute the frame.  Otherwise, X is cheaper.
      For 68HC12, this scratch register is not used.  */
-  if (crtl->args.info.nregs == 2)
+  if (ctmrtl->args_info.nregs == 2)
     scratch = iy_reg;
   else
     scratch = ix_reg;
Index: config/iq2000/iq2000.c
===================================================================
--- config/iq2000/iq2000.c	(revision 167152)
+++ config/iq2000/iq2000.c	(working copy)
@@ -1414,7 +1414,7 @@ iq2000_va_start (tree valist, rtx nextar
   /* Find out how many non-float named formals.  */
   int gpr_save_area_size;
   /* Note UNITS_PER_WORD is 4 bytes.  */
-  int_arg_words = crtl->args.info.arg_words;
+  int_arg_words = ctmrtl->args_info.arg_words;
 
   if (int_arg_words < 8 )
     /* Adjust for the prologue's economy measure.  */
Index: config/ia64/ia64.c
===================================================================
--- config/ia64/ia64.c	(revision 167152)
+++ config/ia64/ia64.c	(working copy)
@@ -3300,7 +3300,7 @@ #define PRINTREG(a) if (current_frame_in
   /* We don't need an alloc instruction if we've used no outputs or locals.  */
   if (current_frame_info.n_local_regs == 0
       && current_frame_info.n_output_regs == 0
-      && current_frame_info.n_input_regs <= crtl->args.info.int_regs
+      && current_frame_info.n_input_regs <= ctmrtl->args_info.int_regs
       && !TEST_HARD_REG_BIT (current_frame_info.mask, AR_PFS_REGNUM))
     {
       /* If there is no alloc, but there are input registers used, then we
Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c	(revision 167152)
+++ config/rs6000/rs6000.c	(working copy)
@@ -9465,10 +9465,10 @@ rs6000_va_start (tree valist, rtx nextar
 		f_sav, NULL_TREE);
 
   /* Count number of gp and fp argument registers used.  */
-  words = crtl->args.info.words;
-  n_gpr = MIN (crtl->args.info.sysv_gregno - GP_ARG_MIN_REG,
+  words = ctmrtl->args_info.words;
+  n_gpr = MIN (ctmrtl->args_info.sysv_gregno - GP_ARG_MIN_REG,
 	       GP_ARG_NUM_REG);
-  n_fpr = MIN (crtl->args.info.fregno - FP_ARG_MIN_REG,
+  n_fpr = MIN (ctmrtl->args_info.fregno - FP_ARG_MIN_REG,
 	       FP_ARG_NUM_REG);
 
   if (TARGET_DEBUG_ARG)
@@ -18170,7 +18170,7 @@ compute_vrsave_mask (void)
      them in again.  More importantly, the mask we compute here is
      used to generate CLOBBERs in the set_vrsave insn, and we do not
      wish the argument registers to die.  */
-  for (i = crtl->args.info.vregno - 1; i >= ALTIVEC_ARG_MIN_REG; --i)
+  for (i = ctmrtl->args_info.vregno - 1; i >= ALTIVEC_ARG_MIN_REG; --i)
     mask &= ~ALTIVEC_REG_BIT (i);
 
   /* Similarly, remove the return value from the set.  */
Index: config/arc/arc.c
===================================================================
--- config/arc/arc.c	(revision 167152)
+++ config/arc/arc.c	(working copy)
@@ -2298,8 +2298,8 @@ arc_ccfsm_record_branch_deleted (void)
 arc_va_start (tree valist, rtx nextarg)
 {
   /* See arc_setup_incoming_varargs for reasons for this oddity.  */
-  if (crtl->args.info < 8
-      && (crtl->args.info & 1))
+  if (ctmrtl->args_info < 8
+      && (ctmrtl->args_info & 1))
     nextarg = plus_constant (nextarg, UNITS_PER_WORD);
 
   std_expand_builtin_va_start (valist, nextarg);
Index: config/arm/arm.c
===================================================================
--- config/arm/arm.c	(revision 167152)
+++ config/arm/arm.c	(working copy)
@@ -5258,7 +5258,7 @@ thumb_find_work_register (unsigned long 
   if (! cfun->machine->uses_anonymous_args
       && crtl->args.size >= 0
       && crtl->args.size <= (LAST_ARG_REGNUM * UNITS_PER_WORD)
-      && crtl->args.info.nregs < 4)
+      && ctmrtl->args_info.nregs < 4)
     return LAST_ARG_REGNUM;
 
   /* Otherwise look for a call-saved register that is going to be pushed.  */
Index: config/mips/mips.c
===================================================================
--- config/mips/mips.c	(revision 167152)
+++ config/mips/mips.c	(working copy)
@@ -5495,7 +5495,7 @@ mips_va_start (tree valist, rtx nextarg)
       int fpr_save_area_size;
       int fpr_offset;
 
-      cum = &crtl->args.info;
+      cum = &ctmrtl->args_info;
       gpr_save_area_size
 	= (MAX_ARGS_IN_REGISTERS - cum->num_gprs) * UNITS_PER_WORD;
       fpr_save_area_size
@@ -6038,7 +6038,7 @@ mips16_build_function_stub (void)
   fprintf (asm_out_file, "\t# Stub function for %s (",
 	   current_function_name ());
   separator = "";
-  for (f = (unsigned int) crtl->args.info.fp_code; f != 0; f >>= 2)
+  for (f = (unsigned int) ctmrtl->args_info.fp_code; f != 0; f >>= 2)
     {
       fprintf (asm_out_file, "%s%s", separator,
 	       (f & 3) == 1 ? "float" : "double");
@@ -6074,7 +6074,7 @@ mips16_build_function_stub (void)
   output_asm_insn ("la\t%^,%0", &symbol);
 
   /* Move the arguments from floating-point registers to general registers.  */
-  mips_output_args_xfer (crtl->args.info.fp_code, 'f');
+  mips_output_args_xfer (ctmrtl->args_info.fp_code, 'f');
 
   /* Jump to the MIPS16 function.  */
   output_asm_insn ("jr\t%^", NULL);
@@ -9846,7 +9846,7 @@ mips_output_function_prologue (FILE *fil
      floating-point arguments.  */
   if (TARGET_MIPS16
       && TARGET_HARD_FLOAT_ABI
-      && crtl->args.info.fp_code != 0)
+      && ctmrtl->args_info.fp_code != 0)
     mips16_build_function_stub ();
 
   /* Get the function name the same way that toplev.c does before calling
Index: config/mmix/mmix.c
===================================================================
--- config/mmix/mmix.c	(revision 167152)
+++ config/mmix/mmix.c	(working copy)
@@ -904,9 +904,9 @@ mmix_reorg (void)
      wasteful to optimize for unused parameter registers.  As of
      2002-04-30, df_regs_ever_live_p (n) seems to be set for only-reads too, but
      that might change.  */
-  if (!TARGET_ABI_GNU && regno < crtl->args.info.regs - 1)
+  if (!TARGET_ABI_GNU && regno < ctmrtl->args_info.regs - 1)
     {
-      regno = crtl->args.info.regs - 1;
+      regno = ctmrtl->args_info.regs - 1;
 
       /* We don't want to let this cause us to go over the limit and make
 	 incoming parameter registers be misnumbered and treating the last
Index: java/Make-lang.in
===================================================================
--- java/Make-lang.in	(revision 167152)
+++ java/Make-lang.in	(working copy)
@@ -297,7 +297,7 @@ java/jcf-depend.o: java/jcf-depend.c $(C
 java/jcf-parse.o: java/jcf-parse.c $(CONFIG_H) $(JAVA_TREE_H) $(FLAGS_H) \
   input.h java/java-except.h $(SYSTEM_H) coretypes.h toplev.h \
   java/parse.h $(GGC_H) debug.h $(REAL_H) gt-java-jcf-parse.h \
-  java/jcf-reader.c java/zipfile.h java/jcf.h $(BITMAP_H)
+  java/jcf-reader.c java/zipfile.h java/jcf.h $(BITMAP_H) $(TM_H)
 java/jvgenmain.o: java/jvgenmain.c $(CONFIG_H) $(JAVA_TREE_H) $(SYSTEM_H) \
   coretypes.h $(TM_H) intl.h
 java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \
