[PATCH] build -> buildN

Richard Guenther rguenther@suse.de
Fri Dec 2 15:48:00 GMT 2005


For config/*/*.  Tested by building whatever-available X affected-target
cc1.  Apart from frv, which fails to build reload.c.

Ok for mainline?

Richard.


2005-12-02  Richard Guenther  <rguenther@suse.de>

	* config/alpha/alpha.c (alpha_va_start, alpha_gimplify_va_arg_1i,
	alpha_gimplify_va_arg): Use buildN and fold_buildN where applicable.
	* config/frv/frv.c (frv_expand_builtin_va_start): Likewise.
	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
	Likewise.
	* config/sh/sh.c (sh_va_start, sh_gimplify_va_arg_expr,
	sh_adjust_unroll_max): Likewise.
	* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_gimplify_va_arg_expr):
	Likewise.
	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Likewise.
	* config/mips/mips.c (mips_va_start, mips_gimplify_va_arg_expr):
	Likewise.


Index: config/alpha/alpha.c
===================================================================
*** config/alpha/alpha.c	(revision 107893)
--- config/alpha/alpha.c	(working copy)
*************** alpha_va_start (tree valist, rtx nextarg
*** 6148,6155 ****
      {
        nextarg = plus_constant (nextarg, offset);
        nextarg = plus_constant (nextarg, NUM_ARGS * UNITS_PER_WORD);
!       t = build (MODIFY_EXPR, TREE_TYPE (valist), valist,
! 		 make_tree (ptr_type_node, nextarg));
        TREE_SIDE_EFFECTS (t) = 1;
  
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
--- 6148,6155 ----
      {
        nextarg = plus_constant (nextarg, offset);
        nextarg = plus_constant (nextarg, NUM_ARGS * UNITS_PER_WORD);
!       t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist,
! 		  make_tree (ptr_type_node, nextarg));
        TREE_SIDE_EFFECTS (t) = 1;
  
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
*************** alpha_va_start (tree valist, rtx nextarg
*** 6159,6178 ****
        base_field = TYPE_FIELDS (TREE_TYPE (valist));
        offset_field = TREE_CHAIN (base_field);
  
!       base_field = build (COMPONENT_REF, TREE_TYPE (base_field),
! 			  valist, base_field, NULL_TREE);
!       offset_field = build (COMPONENT_REF, TREE_TYPE (offset_field),
! 			    valist, offset_field, NULL_TREE);
  
        t = make_tree (ptr_type_node, virtual_incoming_args_rtx);
!       t = build (PLUS_EXPR, ptr_type_node, t,
! 		 build_int_cst (NULL_TREE, offset));
!       t = build (MODIFY_EXPR, TREE_TYPE (base_field), base_field, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        t = build_int_cst (NULL_TREE, NUM_ARGS * UNITS_PER_WORD);
!       t = build (MODIFY_EXPR, TREE_TYPE (offset_field), offset_field, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 6159,6178 ----
        base_field = TYPE_FIELDS (TREE_TYPE (valist));
        offset_field = TREE_CHAIN (base_field);
  
!       base_field = build3 (COMPONENT_REF, TREE_TYPE (base_field),
! 			   valist, base_field, NULL_TREE);
!       offset_field = build3 (COMPONENT_REF, TREE_TYPE (offset_field),
! 			     valist, offset_field, NULL_TREE);
  
        t = make_tree (ptr_type_node, virtual_incoming_args_rtx);
!       t = build2 (PLUS_EXPR, ptr_type_node, t,
! 		  build_int_cst (NULL_TREE, offset));
!       t = build2 (MODIFY_EXPR, TREE_TYPE (base_field), base_field, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        t = build_int_cst (NULL_TREE, NUM_ARGS * UNITS_PER_WORD);
!       t = build2 (MODIFY_EXPR, TREE_TYPE (offset_field), offset_field, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** alpha_gimplify_va_arg_1 (tree type, tree
*** 6188,6195 ****
    if (targetm.calls.must_pass_in_stack (TYPE_MODE (type), type))
      {
        t = build_int_cst (TREE_TYPE (offset), 6*8);
!       t = build (MODIFY_EXPR, TREE_TYPE (offset), offset,
! 		 build (MAX_EXPR, TREE_TYPE (offset), offset, t));
        gimplify_and_add (t, pre_p);
      }
  
--- 6188,6195 ----
    if (targetm.calls.must_pass_in_stack (TYPE_MODE (type), type))
      {
        t = build_int_cst (TREE_TYPE (offset), 6*8);
!       t = build2 (MODIFY_EXPR, TREE_TYPE (offset), offset,
! 		  build2 (MAX_EXPR, TREE_TYPE (offset), offset, t));
        gimplify_and_add (t, pre_p);
      }
  
*************** alpha_gimplify_va_arg_1 (tree type, tree
*** 6210,6232 ****
        imag_part = alpha_gimplify_va_arg_1 (TREE_TYPE (type), base,
  					   offset, pre_p);
  
!       return build (COMPLEX_EXPR, type, real_temp, imag_part);
      }
    else if (TREE_CODE (type) == REAL_TYPE)
      {
        tree fpaddend, cond, fourtyeight;
  
        fourtyeight = build_int_cst (TREE_TYPE (addend), 6*8);
!       fpaddend = fold (build (MINUS_EXPR, TREE_TYPE (addend),
! 			      addend, fourtyeight));
!       cond = fold (build (LT_EXPR, boolean_type_node, addend, fourtyeight));
!       addend = fold (build (COND_EXPR, TREE_TYPE (addend), cond,
! 			    fpaddend, addend));
      }
  
    /* Build the final address and force that value into a temporary.  */
!   addr = build (PLUS_EXPR, ptr_type, fold_convert (ptr_type, base),
! 	        fold_convert (ptr_type, addend));
    internal_post = NULL;
    gimplify_expr (&addr, pre_p, &internal_post, is_gimple_val, fb_rvalue);
    append_to_statement_list (internal_post, pre_p);
--- 6210,6232 ----
        imag_part = alpha_gimplify_va_arg_1 (TREE_TYPE (type), base,
  					   offset, pre_p);
  
!       return build2 (COMPLEX_EXPR, type, real_temp, imag_part);
      }
    else if (TREE_CODE (type) == REAL_TYPE)
      {
        tree fpaddend, cond, fourtyeight;
  
        fourtyeight = build_int_cst (TREE_TYPE (addend), 6*8);
!       fpaddend = fold_build2 (MINUS_EXPR, TREE_TYPE (addend),
! 			      addend, fourtyeight);
!       cond = fold_build2 (LT_EXPR, boolean_type_node, addend, fourtyeight);
!       addend = fold_build3 (COND_EXPR, TREE_TYPE (addend), cond,
! 			    fpaddend, addend);
      }
  
    /* Build the final address and force that value into a temporary.  */
!   addr = build2 (PLUS_EXPR, ptr_type, fold_convert (ptr_type, base),
! 	         fold_convert (ptr_type, addend));
    internal_post = NULL;
    gimplify_expr (&addr, pre_p, &internal_post, is_gimple_val, fb_rvalue);
    append_to_statement_list (internal_post, pre_p);
*************** alpha_gimplify_va_arg_1 (tree type, tree
*** 6242,6249 ****
        t = size_binop (MULT_EXPR, t, size_int (8));
      }
    t = fold_convert (TREE_TYPE (offset), t);
!   t = build (MODIFY_EXPR, void_type_node, offset,
! 	     build (PLUS_EXPR, TREE_TYPE (offset), offset, t));
    gimplify_and_add (t, pre_p);
  
    return build_va_arg_indirect_ref (addr);
--- 6242,6249 ----
        t = size_binop (MULT_EXPR, t, size_int (8));
      }
    t = fold_convert (TREE_TYPE (offset), t);
!   t = build2 (MODIFY_EXPR, void_type_node, offset,
! 	      build2 (PLUS_EXPR, TREE_TYPE (offset), offset, t));
    gimplify_and_add (t, pre_p);
  
    return build_va_arg_indirect_ref (addr);
*************** alpha_gimplify_va_arg (tree valist, tree
*** 6260,6269 ****
  
    base_field = TYPE_FIELDS (va_list_type_node);
    offset_field = TREE_CHAIN (base_field);
!   base_field = build (COMPONENT_REF, TREE_TYPE (base_field),
! 		      valist, base_field, NULL_TREE);
!   offset_field = build (COMPONENT_REF, TREE_TYPE (offset_field),
! 			valist, offset_field, NULL_TREE);
  
    /* Pull the fields of the structure out into temporaries.  Since we never
       modify the base field, we can use a formal temporary.  Sign-extend the
--- 6260,6269 ----
  
    base_field = TYPE_FIELDS (va_list_type_node);
    offset_field = TREE_CHAIN (base_field);
!   base_field = build3 (COMPONENT_REF, TREE_TYPE (base_field),
! 		       valist, base_field, NULL_TREE);
!   offset_field = build3 (COMPONENT_REF, TREE_TYPE (offset_field),
! 			 valist, offset_field, NULL_TREE);
  
    /* Pull the fields of the structure out into temporaries.  Since we never
       modify the base field, we can use a formal temporary.  Sign-extend the
*************** alpha_gimplify_va_arg (tree valist, tree
*** 6282,6289 ****
    r = alpha_gimplify_va_arg_1 (type, base, offset, pre_p);
  
    /* Stuff the offset temporary back into its field.  */
!   t = build (MODIFY_EXPR, void_type_node, offset_field,
! 	     fold_convert (TREE_TYPE (offset_field), offset));
    gimplify_and_add (t, pre_p);
  
    if (indirect)
--- 6282,6289 ----
    r = alpha_gimplify_va_arg_1 (type, base, offset, pre_p);
  
    /* Stuff the offset temporary back into its field.  */
!   t = build2 (MODIFY_EXPR, void_type_node, offset_field,
! 	      fold_convert (TREE_TYPE (offset_field), offset));
    gimplify_and_add (t, pre_p);
  
    if (indirect)
Index: config/frv/frv.c
===================================================================
*** config/frv/frv.c	(revision 107893)
--- config/frv/frv.c	(working copy)
*************** frv_expand_builtin_va_start (tree valist
*** 2203,2210 ****
        debug_rtx (nextarg);
      }
  
!   t = build (MODIFY_EXPR, TREE_TYPE (valist), valist,
! 	     make_tree (ptr_type_node, nextarg));
    TREE_SIDE_EFFECTS (t) = 1;
  
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
--- 2203,2210 ----
        debug_rtx (nextarg);
      }
  
!   t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist,
! 	      make_tree (ptr_type_node, nextarg));
    TREE_SIDE_EFFECTS (t) = 1;
  
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
Index: config/s390/s390.c
===================================================================
*** config/s390/s390.c	(revision 107893)
--- config/s390/s390.c	(working copy)
*************** s390_va_start (tree valist, rtx nextarg 
*** 7493,7502 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
  
--- 7493,7502 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
  
*************** s390_va_start (tree valist, rtx nextarg 
*** 7505,7520 ****
  
    if (cfun->va_list_gpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 	         build_int_cst (NULL_TREE, n_gpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 	         build_int_cst (NULL_TREE, n_fpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 7505,7520 ----
  
    if (cfun->va_list_gpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 	          build_int_cst (NULL_TREE, n_gpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 	          build_int_cst (NULL_TREE, n_fpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** s390_va_start (tree valist, rtx nextarg 
*** 7531,7539 ****
  	fprintf (stderr, "va_start: n_gpr = %d, n_fpr = %d off %d\n",
  		 (int)n_gpr, (int)n_fpr, off);
  
!       t = build (PLUS_EXPR, TREE_TYPE (ovf), t, build_int_cst (NULL_TREE, off));
  
!       t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 7531,7539 ----
  	fprintf (stderr, "va_start: n_gpr = %d, n_fpr = %d off %d\n",
  		 (int)n_gpr, (int)n_fpr, off);
  
!       t = build2 (PLUS_EXPR, TREE_TYPE (ovf), t, build_int_cst (NULL_TREE, off));
  
!       t = build2 (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** s390_va_start (tree valist, rtx nextarg 
*** 7543,7552 ****
        || (cfun->va_list_fpr_size && n_fpr < FP_ARG_NUM_REG))
      {
        t = make_tree (TREE_TYPE (sav), return_address_pointer_rtx);
!       t = build (PLUS_EXPR, TREE_TYPE (sav), t,
! 	         build_int_cst (NULL_TREE, -RETURN_REGNUM * UNITS_PER_WORD));
    
!       t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 7543,7552 ----
        || (cfun->va_list_fpr_size && n_fpr < FP_ARG_NUM_REG))
      {
        t = make_tree (TREE_TYPE (sav), return_address_pointer_rtx);
!       t = build2 (PLUS_EXPR, TREE_TYPE (sav), t,
! 	          build_int_cst (NULL_TREE, -RETURN_REGNUM * UNITS_PER_WORD));
    
!       t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** s390_gimplify_va_arg (tree valist, tree 
*** 7591,7600 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    size = int_size_in_bytes (type);
  
--- 7591,7600 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    size = int_size_in_bytes (type);
  
Index: config/ia64/ia64.c
===================================================================
*** config/ia64/ia64.c	(revision 107893)
--- config/ia64/ia64.c	(working copy)
*************** ia64_gimplify_va_arg (tree valist, tree 
*** 4260,4270 ****
    if ((TREE_CODE (type) == REAL_TYPE || TREE_CODE (type) == INTEGER_TYPE)
        ? int_size_in_bytes (type) > 8 : TYPE_ALIGN (type) > 8 * BITS_PER_UNIT)
      {
!       tree t = build (PLUS_EXPR, TREE_TYPE (valist), valist,
! 		      build_int_cst (NULL_TREE, 2 * UNITS_PER_WORD - 1));
!       t = build (BIT_AND_EXPR, TREE_TYPE (t), t,
! 		 build_int_cst (NULL_TREE, -2 * UNITS_PER_WORD));
!       t = build (MODIFY_EXPR, TREE_TYPE (valist), valist, t);
        gimplify_and_add (t, pre_p);
      }
  
--- 4260,4270 ----
    if ((TREE_CODE (type) == REAL_TYPE || TREE_CODE (type) == INTEGER_TYPE)
        ? int_size_in_bytes (type) > 8 : TYPE_ALIGN (type) > 8 * BITS_PER_UNIT)
      {
!       tree t = build2 (PLUS_EXPR, TREE_TYPE (valist), valist,
! 		       build_int_cst (NULL_TREE, 2 * UNITS_PER_WORD - 1));
!       t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t,
! 		  build_int_cst (NULL_TREE, -2 * UNITS_PER_WORD));
!       t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist, t);
        gimplify_and_add (t, pre_p);
      }
  
Index: config/i386/i386.c
===================================================================
*** config/i386/i386.c	(revision 107893)
--- config/i386/i386.c	(working copy)
*************** ix86_va_start (tree valist, rtx nextarg)
*** 3804,3813 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
    words = current_function_args_info.words;
--- 3804,3813 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (valist)), valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
    words = current_function_args_info.words;
*************** ix86_va_start (tree valist, rtx nextarg)
*** 3820,3835 ****
  
    if (cfun->va_list_gpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 		 build_int_cst (NULL_TREE, n_gpr * 8));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 		 build_int_cst (NULL_TREE, n_fpr * 16 + 8*REGPARM_MAX));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 3820,3835 ----
  
    if (cfun->va_list_gpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 		  build_int_cst (NULL_TREE, n_gpr * 8));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 		  build_int_cst (NULL_TREE, n_fpr * 16 + 8*REGPARM_MAX));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** ix86_va_start (tree valist, rtx nextarg)
*** 3837,3845 ****
    /* Find the overflow area.  */
    t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx);
    if (words != 0)
!     t = build (PLUS_EXPR, TREE_TYPE (ovf), t,
! 	       build_int_cst (NULL_TREE, words * UNITS_PER_WORD));
!   t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
--- 3837,3845 ----
    /* Find the overflow area.  */
    t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx);
    if (words != 0)
!     t = build2 (PLUS_EXPR, TREE_TYPE (ovf), t,
! 	        build_int_cst (NULL_TREE, words * UNITS_PER_WORD));
!   t = build2 (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
*************** ix86_va_start (tree valist, rtx nextarg)
*** 3848,3854 ****
        /* Find the register save area.
  	 Prologue of the function save it right above stack frame.  */
        t = make_tree (TREE_TYPE (sav), frame_pointer_rtx);
!       t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 3848,3854 ----
        /* Find the register save area.
  	 Prologue of the function save it right above stack frame.  */
        t = make_tree (TREE_TYPE (sav), frame_pointer_rtx);
!       t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** ix86_gimplify_va_arg (tree valist, tree 
*** 3880,3889 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    indirect_p = pass_by_reference (NULL, TYPE_MODE (type), type, false);
    if (indirect_p)
--- 3880,3889 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    indirect_p = pass_by_reference (NULL, TYPE_MODE (type), type, false);
    if (indirect_p)
*************** ix86_gimplify_va_arg (tree valist, tree 
*** 3965,3971 ****
  			     (REGPARM_MAX - needed_intregs + 1) * 8);
  	  t = build2 (GE_EXPR, boolean_type_node, gpr, t);
  	  t2 = build1 (GOTO_EXPR, void_type_node, lab_false);
! 	  t = build (COND_EXPR, void_type_node, t, t2, NULL_TREE);
  	  gimplify_and_add (t, pre_p);
  	}
        if (needed_sseregs)
--- 3965,3971 ----
  			     (REGPARM_MAX - needed_intregs + 1) * 8);
  	  t = build2 (GE_EXPR, boolean_type_node, gpr, t);
  	  t2 = build1 (GOTO_EXPR, void_type_node, lab_false);
! 	  t = build3 (COND_EXPR, void_type_node, t, t2, NULL_TREE);
  	  gimplify_and_add (t, pre_p);
  	}
        if (needed_sseregs)
*************** ix86_gimplify_va_arg (tree valist, tree 
*** 3975,3981 ****
  			     + REGPARM_MAX * 8);
  	  t = build2 (GE_EXPR, boolean_type_node, fpr, t);
  	  t2 = build1 (GOTO_EXPR, void_type_node, lab_false);
! 	  t = build (COND_EXPR, void_type_node, t, t2, NULL_TREE);
  	  gimplify_and_add (t, pre_p);
  	}
  
--- 3975,3981 ----
  			     + REGPARM_MAX * 8);
  	  t = build2 (GE_EXPR, boolean_type_node, fpr, t);
  	  t2 = build1 (GOTO_EXPR, void_type_node, lab_false);
! 	  t = build3 (COND_EXPR, void_type_node, t, t2, NULL_TREE);
  	  gimplify_and_add (t, pre_p);
  	}
  
*************** ix86_gimplify_va_arg (tree valist, tree 
*** 4072,4081 ****
    else
      {
        HOST_WIDE_INT align = FUNCTION_ARG_BOUNDARY (VOIDmode, type) / 8;
!       t = build (PLUS_EXPR, TREE_TYPE (ovf), ovf,
! 		 build_int_cst (TREE_TYPE (ovf), align - 1));
!       t = build (BIT_AND_EXPR, TREE_TYPE (t), t,
! 		 build_int_cst (TREE_TYPE (t), -align));
      }
    gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue);
  
--- 4072,4081 ----
    else
      {
        HOST_WIDE_INT align = FUNCTION_ARG_BOUNDARY (VOIDmode, type) / 8;
!       t = build2 (PLUS_EXPR, TREE_TYPE (ovf), ovf,
! 		  build_int_cst (TREE_TYPE (ovf), align - 1));
!       t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t,
! 		  build_int_cst (TREE_TYPE (t), -align));
      }
    gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue);
  
Index: config/rs6000/rs6000.c
===================================================================
*** config/rs6000/rs6000.c	(revision 107893)
--- config/rs6000/rs6000.c	(working copy)
*************** rs6000_va_start (tree valist, rtx nextar
*** 5658,5667 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
    words = current_function_args_info.words;
--- 5658,5667 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    /* Count number of gp and fp argument registers used.  */
    words = current_function_args_info.words;
*************** rs6000_va_start (tree valist, rtx nextar
*** 5677,5692 ****
  
    if (cfun->va_list_gpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 		 build_int_cst (NULL_TREE, n_gpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 		 build_int_cst (NULL_TREE, n_fpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
--- 5677,5692 ----
  
    if (cfun->va_list_gpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (gpr), gpr,
! 		  build_int_cst (NULL_TREE, n_gpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
  
    if (cfun->va_list_fpr_size)
      {
!       t = build2 (MODIFY_EXPR, TREE_TYPE (fpr), fpr,
! 		  build_int_cst (NULL_TREE, n_fpr));
        TREE_SIDE_EFFECTS (t) = 1;
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
*************** rs6000_va_start (tree valist, rtx nextar
*** 5694,5702 ****
    /* Find the overflow area.  */
    t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx);
    if (words != 0)
!     t = build (PLUS_EXPR, TREE_TYPE (ovf), t,
! 	       build_int_cst (NULL_TREE, words * UNITS_PER_WORD));
!   t = build (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
--- 5694,5702 ----
    /* Find the overflow area.  */
    t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx);
    if (words != 0)
!     t = build2 (PLUS_EXPR, TREE_TYPE (ovf), t,
! 	        build_int_cst (NULL_TREE, words * UNITS_PER_WORD));
!   t = build2 (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
*************** rs6000_va_start (tree valist, rtx nextar
*** 5711,5719 ****
    /* Find the register save area.  */
    t = make_tree (TREE_TYPE (sav), virtual_stack_vars_rtx);
    if (cfun->machine->varargs_save_offset)
!     t = build (PLUS_EXPR, TREE_TYPE (sav), t,
! 	       build_int_cst (NULL_TREE, cfun->machine->varargs_save_offset));
!   t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
--- 5711,5719 ----
    /* Find the register save area.  */
    t = make_tree (TREE_TYPE (sav), virtual_stack_vars_rtx);
    if (cfun->machine->varargs_save_offset)
!     t = build2 (PLUS_EXPR, TREE_TYPE (sav), t,
! 	        build_int_cst (NULL_TREE, cfun->machine->varargs_save_offset));
!   t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 5759,5765 ****
  	      imag_part = rs6000_gimplify_va_arg (valist, elem_type, pre_p,
  						  post_p);
  
! 	      return build (COMPLEX_EXPR, type, real_part, imag_part);
  	    }
  	}
  
--- 5759,5765 ----
  	      imag_part = rs6000_gimplify_va_arg (valist, elem_type, pre_p,
  						  post_p);
  
! 	      return build2 (COMPLEX_EXPR, type, real_part, imag_part);
  	    }
  	}
  
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 5773,5782 ****
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    size = int_size_in_bytes (type);
    rsize = (size + 3) / 4;
--- 5773,5782 ----
    f_sav = TREE_CHAIN (f_ovf);
  
    valist = build_va_arg_indirect_ref (valist);
!   gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE);
!   fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE);
!   ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);
!   sav = build3 (COMPONENT_REF, TREE_TYPE (f_sav), valist, f_sav, NULL_TREE);
  
    size = int_size_in_bytes (type);
    rsize = (size + 3) / 4;
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 5857,5863 ****
  	{
  	  /* Ensure that we don't find any more args in regs.
  	     Alignment has taken care of the n_reg == 2 case.  */
! 	  t = build (MODIFY_EXPR, TREE_TYPE (reg), reg, size_int (8));
  	  gimplify_and_add (t, pre_p);
  	}
      }
--- 5857,5863 ----
  	{
  	  /* Ensure that we don't find any more args in regs.
  	     Alignment has taken care of the n_reg == 2 case.  */
! 	  t = build2 (MODIFY_EXPR, TREE_TYPE (reg), reg, size_int (8));
  	  gimplify_and_add (t, pre_p);
  	}
      }
Index: config/sh/sh.c
===================================================================
*** config/sh/sh.c	(revision 107893)
--- config/sh/sh.c	(working copy)
*************** sh_va_start (tree valist, rtx nextarg)
*** 6658,6677 ****
    f_next_fp_limit = TREE_CHAIN (f_next_fp);
    f_next_stack = TREE_CHAIN (f_next_fp_limit);
  
!   next_o = build (COMPONENT_REF, TREE_TYPE (f_next_o), valist, f_next_o,
! 		  NULL_TREE);
!   next_o_limit = build (COMPONENT_REF, TREE_TYPE (f_next_o_limit),
! 			valist, f_next_o_limit, NULL_TREE);
!   next_fp = build (COMPONENT_REF, TREE_TYPE (f_next_fp), valist, f_next_fp,
  		   NULL_TREE);
!   next_fp_limit = build (COMPONENT_REF, TREE_TYPE (f_next_fp_limit),
! 			 valist, f_next_fp_limit, NULL_TREE);
!   next_stack = build (COMPONENT_REF, TREE_TYPE (f_next_stack),
! 		      valist, f_next_stack, NULL_TREE);
  
    /* Call __builtin_saveregs.  */
    u = make_tree (ptr_type_node, expand_builtin_saveregs ());
!   t = build (MODIFY_EXPR, ptr_type_node, next_fp, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
--- 6658,6677 ----
    f_next_fp_limit = TREE_CHAIN (f_next_fp);
    f_next_stack = TREE_CHAIN (f_next_fp_limit);
  
!   next_o = build3 (COMPONENT_REF, TREE_TYPE (f_next_o), valist, f_next_o,
  		   NULL_TREE);
!   next_o_limit = build3 (COMPONENT_REF, TREE_TYPE (f_next_o_limit),
! 			 valist, f_next_o_limit, NULL_TREE);
!   next_fp = build3 (COMPONENT_REF, TREE_TYPE (f_next_fp), valist, f_next_fp,
! 		    NULL_TREE);
!   next_fp_limit = build3 (COMPONENT_REF, TREE_TYPE (f_next_fp_limit),
! 			  valist, f_next_fp_limit, NULL_TREE);
!   next_stack = build3 (COMPONENT_REF, TREE_TYPE (f_next_stack),
! 		       valist, f_next_stack, NULL_TREE);
  
    /* Call __builtin_saveregs.  */
    u = make_tree (ptr_type_node, expand_builtin_saveregs ());
!   t = build2 (MODIFY_EXPR, ptr_type_node, next_fp, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
*************** sh_va_start (tree valist, rtx nextarg)
*** 6680,6692 ****
      nfp = 8 - nfp;
    else
      nfp = 0;
!   u = fold (build (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, UNITS_PER_WORD * nfp)));
!   t = build (MODIFY_EXPR, ptr_type_node, next_fp_limit, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
!   t = build (MODIFY_EXPR, ptr_type_node, next_o, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
--- 6680,6692 ----
      nfp = 8 - nfp;
    else
      nfp = 0;
!   u = fold_build2 (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, UNITS_PER_WORD * nfp));
!   t = build2 (MODIFY_EXPR, ptr_type_node, next_fp_limit, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
!   t = build2 (MODIFY_EXPR, ptr_type_node, next_o, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
*************** sh_va_start (tree valist, rtx nextarg)
*** 6695,6708 ****
      nint = 4 - nint;
    else
      nint = 0;
!   u = fold (build (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, UNITS_PER_WORD * nint)));
!   t = build (MODIFY_EXPR, ptr_type_node, next_o_limit, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
    u = make_tree (ptr_type_node, nextarg);
!   t = build (MODIFY_EXPR, ptr_type_node, next_stack, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
--- 6695,6708 ----
      nint = 4 - nint;
    else
      nint = 0;
!   u = fold_build2 (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, UNITS_PER_WORD * nint));
!   t = build2 (MODIFY_EXPR, ptr_type_node, next_o_limit, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
    u = make_tree (ptr_type_node, nextarg);
!   t = build2 (MODIFY_EXPR, ptr_type_node, next_stack, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
*************** sh_gimplify_va_arg_expr (tree valist, tr
*** 6761,6776 ****
        f_next_fp_limit = TREE_CHAIN (f_next_fp);
        f_next_stack = TREE_CHAIN (f_next_fp_limit);
  
!       next_o = build (COMPONENT_REF, TREE_TYPE (f_next_o), valist, f_next_o,
! 		      NULL_TREE);
!       next_o_limit = build (COMPONENT_REF, TREE_TYPE (f_next_o_limit),
! 			    valist, f_next_o_limit, NULL_TREE);
!       next_fp = build (COMPONENT_REF, TREE_TYPE (f_next_fp),
! 		       valist, f_next_fp, NULL_TREE);
!       next_fp_limit = build (COMPONENT_REF, TREE_TYPE (f_next_fp_limit),
! 			     valist, f_next_fp_limit, NULL_TREE);
!       next_stack = build (COMPONENT_REF, TREE_TYPE (f_next_stack),
! 			  valist, f_next_stack, NULL_TREE);
  
        /* Structures with a single member with a distinct mode are passed
  	 like their member.  This is relevant if the latter has a REAL_TYPE
--- 6761,6776 ----
        f_next_fp_limit = TREE_CHAIN (f_next_fp);
        f_next_stack = TREE_CHAIN (f_next_fp_limit);
  
!       next_o = build3 (COMPONENT_REF, TREE_TYPE (f_next_o), valist, f_next_o,
! 		       NULL_TREE);
!       next_o_limit = build3 (COMPONENT_REF, TREE_TYPE (f_next_o_limit),
! 			     valist, f_next_o_limit, NULL_TREE);
!       next_fp = build3 (COMPONENT_REF, TREE_TYPE (f_next_fp),
! 		        valist, f_next_fp, NULL_TREE);
!       next_fp_limit = build3 (COMPONENT_REF, TREE_TYPE (f_next_fp_limit),
! 			      valist, f_next_fp_limit, NULL_TREE);
!       next_stack = build3 (COMPONENT_REF, TREE_TYPE (f_next_stack),
! 			   valist, f_next_stack, NULL_TREE);
  
        /* Structures with a single member with a distinct mode are passed
  	 like their member.  This is relevant if the latter has a REAL_TYPE
*************** sh_gimplify_va_arg_expr (tree valist, tr
*** 6829,6847 ****
  	  if (size > 4 && !is_double)
  	    tmp = build2 (PLUS_EXPR, TREE_TYPE (tmp), tmp,
  			  fold_convert (TREE_TYPE (tmp), size_int (4 - size)));
! 	  tmp = build (GE_EXPR, boolean_type_node, next_fp_tmp, tmp);
! 	  cmp = build (COND_EXPR, void_type_node, tmp,
! 		       build (GOTO_EXPR, void_type_node, lab_false),
! 		       NULL);
  	  if (!is_double)
  	    gimplify_and_add (cmp, pre_p);
  
  	  if (TYPE_ALIGN (type) > BITS_PER_WORD || (is_double || size == 16))
  	    {
  	      tmp = fold_convert (ptr_type_node, size_int (UNITS_PER_WORD));
! 	      tmp = build (BIT_AND_EXPR, ptr_type_node, next_fp_tmp, tmp);
! 	      tmp = build (PLUS_EXPR, ptr_type_node, next_fp_tmp, tmp);
! 	      tmp = build (MODIFY_EXPR, ptr_type_node, next_fp_tmp, tmp);
  	      gimplify_and_add (tmp, pre_p);
  	    }
  	  if (is_double)
--- 6829,6847 ----
  	  if (size > 4 && !is_double)
  	    tmp = build2 (PLUS_EXPR, TREE_TYPE (tmp), tmp,
  			  fold_convert (TREE_TYPE (tmp), size_int (4 - size)));
! 	  tmp = build2 (GE_EXPR, boolean_type_node, next_fp_tmp, tmp);
! 	  cmp = build3 (COND_EXPR, void_type_node, tmp,
! 		        build1 (GOTO_EXPR, void_type_node, lab_false),
! 		        NULL_TREE);
  	  if (!is_double)
  	    gimplify_and_add (cmp, pre_p);
  
  	  if (TYPE_ALIGN (type) > BITS_PER_WORD || (is_double || size == 16))
  	    {
  	      tmp = fold_convert (ptr_type_node, size_int (UNITS_PER_WORD));
! 	      tmp = build2 (BIT_AND_EXPR, ptr_type_node, next_fp_tmp, tmp);
! 	      tmp = build2 (PLUS_EXPR, ptr_type_node, next_fp_tmp, tmp);
! 	      tmp = build2 (MODIFY_EXPR, ptr_type_node, next_fp_tmp, tmp);
  	      gimplify_and_add (tmp, pre_p);
  	    }
  	  if (is_double)
*************** sh_gimplify_va_arg_expr (tree valist, tr
*** 6861,6879 ****
  		= std_gimplify_va_arg_expr (next_fp_tmp, subtype, pre_p, NULL);
  	      real = get_initialized_tmp_var (real, pre_p, NULL);
  
! 	      result = build (COMPLEX_EXPR, type, real, imag);
  	      result = get_initialized_tmp_var (result, pre_p, NULL);
  	    }
  #endif /* FUNCTION_ARG_SCmode_WART */
  
! 	  tmp = build (GOTO_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build (LABEL_EXPR, void_type_node, lab_false);
  	  gimplify_and_add (tmp, pre_p);
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_stack);
! 	  tmp = build (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  	  tmp = build2 (MODIFY_EXPR, ptr_type_node, next_fp_tmp, valist);
  	  gimplify_and_add (tmp, pre_p);
--- 6861,6879 ----
  		= std_gimplify_va_arg_expr (next_fp_tmp, subtype, pre_p, NULL);
  	      real = get_initialized_tmp_var (real, pre_p, NULL);
  
! 	      result = build2 (COMPLEX_EXPR, type, real, imag);
  	      result = get_initialized_tmp_var (result, pre_p, NULL);
  	    }
  #endif /* FUNCTION_ARG_SCmode_WART */
  
! 	  tmp = build1 (GOTO_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build1 (LABEL_EXPR, void_type_node, lab_false);
  	  gimplify_and_add (tmp, pre_p);
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_stack);
! 	  tmp = build2 (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  	  tmp = build2 (MODIFY_EXPR, ptr_type_node, next_fp_tmp, valist);
  	  gimplify_and_add (tmp, pre_p);
*************** sh_gimplify_va_arg_expr (tree valist, tr
*** 6885,6921 ****
        else
  	{
  	  tmp = fold_convert (ptr_type_node, size_int (rsize));
! 	  tmp = build (PLUS_EXPR, ptr_type_node, next_o, tmp);
! 	  tmp = build (GT_EXPR, boolean_type_node, tmp, next_o_limit);
! 	  tmp = build (COND_EXPR, void_type_node, tmp,
! 		       build (GOTO_EXPR, void_type_node, lab_false),
! 		       NULL);
  	  gimplify_and_add (tmp, pre_p);
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_o);
! 	  tmp = build (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build (GOTO_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build (LABEL_EXPR, void_type_node, lab_false);
  	  gimplify_and_add (tmp, pre_p);
  
  	  if (size > 4 && ! TARGET_SH4)
  	    {
! 	      tmp = build (MODIFY_EXPR, ptr_type_node, next_o, next_o_limit);
  	      gimplify_and_add (tmp, pre_p);
  	    }
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_stack);
! 	  tmp = build (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  	}
  
        if (!result)
  	{
! 	  tmp = build (LABEL_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  	}
      }
--- 6885,6921 ----
        else
  	{
  	  tmp = fold_convert (ptr_type_node, size_int (rsize));
! 	  tmp = build2 (PLUS_EXPR, ptr_type_node, next_o, tmp);
! 	  tmp = build2 (GT_EXPR, boolean_type_node, tmp, next_o_limit);
! 	  tmp = build3 (COND_EXPR, void_type_node, tmp,
! 		        build1 (GOTO_EXPR, void_type_node, lab_false),
! 		        NULL_TREE);
  	  gimplify_and_add (tmp, pre_p);
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_o);
! 	  tmp = build2 (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build1 (GOTO_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  
! 	  tmp = build1 (LABEL_EXPR, void_type_node, lab_false);
  	  gimplify_and_add (tmp, pre_p);
  
  	  if (size > 4 && ! TARGET_SH4)
  	    {
! 	      tmp = build2 (MODIFY_EXPR, ptr_type_node, next_o, next_o_limit);
  	      gimplify_and_add (tmp, pre_p);
  	    }
  
  	  tmp = build1 (ADDR_EXPR, pptr_type_node, next_stack);
! 	  tmp = build2 (MODIFY_EXPR, void_type_node, addr, tmp);
  	  gimplify_and_add (tmp, pre_p);
  	}
  
        if (!result)
  	{
! 	  tmp = build1 (LABEL_EXPR, void_type_node, lab_over);
  	  gimplify_and_add (tmp, pre_p);
  	}
      }
*************** sh_gimplify_va_arg_expr (tree valist, tr
*** 6926,6935 ****
    tmp = std_gimplify_va_arg_expr (valist, type, pre_p, NULL);
    if (result)
      {
!       tmp = build (MODIFY_EXPR, void_type_node, result, tmp);
        gimplify_and_add (tmp, pre_p);
  
!       tmp = build (LABEL_EXPR, void_type_node, lab_over);
        gimplify_and_add (tmp, pre_p);
      }
    else
--- 6926,6935 ----
    tmp = std_gimplify_va_arg_expr (valist, type, pre_p, NULL);
    if (result)
      {
!       tmp = build2 (MODIFY_EXPR, void_type_node, result, tmp);
        gimplify_and_add (tmp, pre_p);
  
!       tmp = build1 (LABEL_EXPR, void_type_node, lab_over);
        gimplify_and_add (tmp, pre_p);
      }
    else
*************** sh_adjust_unroll_max (struct loop * loop
*** 10279,10288 ****
  			  if (TREE_CODE (type) != ARRAY_TYPE
  			      || ! TYPE_SIZE (type) || ! TYPE_SIZE_UNIT (type))
  			    break;
! 			  size_tree = fold (build (TRUNC_DIV_EXPR,
  						   bitsizetype,
  						   TYPE_SIZE (type),
! 						   TYPE_SIZE_UNIT (type)));
  			  if (TREE_CODE (size_tree) == INTEGER_CST
  			      && ! TREE_INT_CST_HIGH (size_tree)
  			      && TREE_INT_CST_LOW  (size_tree) < max_iterations)
--- 10279,10288 ----
  			  if (TREE_CODE (type) != ARRAY_TYPE
  			      || ! TYPE_SIZE (type) || ! TYPE_SIZE_UNIT (type))
  			    break;
! 			  size_tree = fold_build2 (TRUNC_DIV_EXPR,
  						   bitsizetype,
  						   TYPE_SIZE (type),
! 						   TYPE_SIZE_UNIT (type));
  			  if (TREE_CODE (size_tree) == INTEGER_CST
  			      && ! TREE_INT_CST_HIGH (size_tree)
  			      && TREE_INT_CST_LOW  (size_tree) < max_iterations)
Index: config/c4x/c4x.c
===================================================================
*** config/c4x/c4x.c	(revision 107893)
--- config/c4x/c4x.c	(working copy)
*************** c4x_gimplify_va_arg_expr (tree valist, t
*** 722,729 ****
    if (indirect)
      type = build_pointer_type (type);
  
!   t = build (PREDECREMENT_EXPR, TREE_TYPE (valist), valist,
! 	     build_int_cst (NULL_TREE, int_size_in_bytes (type)));
    t = fold_convert (build_pointer_type (type), t);
    t = build_va_arg_indirect_ref (t);
  
--- 722,729 ----
    if (indirect)
      type = build_pointer_type (type);
  
!   t = build2 (PREDECREMENT_EXPR, TREE_TYPE (valist), valist,
! 	      build_int_cst (NULL_TREE, int_size_in_bytes (type)));
    t = fold_convert (build_pointer_type (type), t);
    t = build_va_arg_indirect_ref (t);
  
Index: config/pa/pa.c
===================================================================
*** config/pa/pa.c	(revision 107893)
--- config/pa/pa.c	(working copy)
*************** hppa_gimplify_va_arg_expr (tree valist, 
*** 5853,5872 ****
        /* Args grow down.  Not handled by generic routines.  */
  
        u = fold_convert (valist_type, size_in_bytes (type));
!       t = build (MINUS_EXPR, valist_type, valist, u);
  
        /* Copied from va-pa.h, but we probably don't need to align to
  	 word size, since we generate and preserve that invariant.  */
        u = build_int_cst (valist_type, (size > 4 ? -8 : -4));
!       t = build (BIT_AND_EXPR, valist_type, t, u);
  
!       t = build (MODIFY_EXPR, valist_type, valist, t);
  
        ofs = (8 - size) % 4;
        if (ofs != 0)
  	{
  	  u = fold_convert (valist_type, size_int (ofs));
! 	  t = build (PLUS_EXPR, valist_type, t, u);
  	}
  
        t = fold_convert (ptr, t);
--- 5853,5872 ----
        /* Args grow down.  Not handled by generic routines.  */
  
        u = fold_convert (valist_type, size_in_bytes (type));
!       t = build2 (MINUS_EXPR, valist_type, valist, u);
  
        /* Copied from va-pa.h, but we probably don't need to align to
  	 word size, since we generate and preserve that invariant.  */
        u = build_int_cst (valist_type, (size > 4 ? -8 : -4));
!       t = build2 (BIT_AND_EXPR, valist_type, t, u);
  
!       t = build2 (MODIFY_EXPR, valist_type, valist, t);
  
        ofs = (8 - size) % 4;
        if (ofs != 0)
  	{
  	  u = fold_convert (valist_type, size_int (ofs));
! 	  t = build2 (PLUS_EXPR, valist_type, t, u);
  	}
  
        t = fold_convert (ptr, t);
Index: config/xtensa/xtensa.c
===================================================================
*** config/xtensa/xtensa.c	(revision 107893)
--- config/xtensa/xtensa.c	(working copy)
*************** xtensa_va_start (tree valist, rtx nextar
*** 2098,2118 ****
    f_reg = TREE_CHAIN (f_stk);
    f_ndx = TREE_CHAIN (f_reg);
  
!   stk = build (COMPONENT_REF, TREE_TYPE (f_stk), valist, f_stk, NULL_TREE);
!   reg = build (COMPONENT_REF, TREE_TYPE (f_reg), valist, f_reg, NULL_TREE);
!   ndx = build (COMPONENT_REF, TREE_TYPE (f_ndx), valist, f_ndx, NULL_TREE);
  
    /* Call __builtin_saveregs; save the result in __va_reg */
    u = make_tree (ptr_type_node, expand_builtin_saveregs ());
!   t = build (MODIFY_EXPR, ptr_type_node, reg, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
    /* Set the __va_stk member to ($arg_ptr - 32).  */
    u = make_tree (ptr_type_node, virtual_incoming_args_rtx);
!   u = fold (build (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, -32)));
!   t = build (MODIFY_EXPR, ptr_type_node, stk, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
--- 2098,2118 ----
    f_reg = TREE_CHAIN (f_stk);
    f_ndx = TREE_CHAIN (f_reg);
  
!   stk = build3 (COMPONENT_REF, TREE_TYPE (f_stk), valist, f_stk, NULL_TREE);
!   reg = build3 (COMPONENT_REF, TREE_TYPE (f_reg), valist, f_reg, NULL_TREE);
!   ndx = build3 (COMPONENT_REF, TREE_TYPE (f_ndx), valist, f_ndx, NULL_TREE);
  
    /* Call __builtin_saveregs; save the result in __va_reg */
    u = make_tree (ptr_type_node, expand_builtin_saveregs ());
!   t = build2 (MODIFY_EXPR, ptr_type_node, reg, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
    /* Set the __va_stk member to ($arg_ptr - 32).  */
    u = make_tree (ptr_type_node, virtual_incoming_args_rtx);
!   u = fold_build2 (PLUS_EXPR, ptr_type_node, u,
! 		   build_int_cst (NULL_TREE, -32));
!   t = build2 (MODIFY_EXPR, ptr_type_node, stk, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
*************** xtensa_va_start (tree valist, rtx nextar
*** 2122,2128 ****
    if (arg_words >= MAX_ARGS_IN_REGISTERS)
      arg_words += 2;
    u = build_int_cst (NULL_TREE, arg_words * UNITS_PER_WORD);
!   t = build (MODIFY_EXPR, integer_type_node, ndx, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
--- 2122,2128 ----
    if (arg_words >= MAX_ARGS_IN_REGISTERS)
      arg_words += 2;
    u = build_int_cst (NULL_TREE, arg_words * UNITS_PER_WORD);
!   t = build2 (MODIFY_EXPR, integer_type_node, ndx, u);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2158,2173 ****
  					       pre_p, NULL);
        imag_part = get_initialized_tmp_var (imag_part, pre_p, NULL);
  
!       return build (COMPLEX_EXPR, type, real_part, imag_part);
      }
  
    f_stk = TYPE_FIELDS (va_list_type_node);
    f_reg = TREE_CHAIN (f_stk);
    f_ndx = TREE_CHAIN (f_reg);
  
!   stk = build (COMPONENT_REF, TREE_TYPE (f_stk), valist, f_stk, NULL_TREE);
!   reg = build (COMPONENT_REF, TREE_TYPE (f_reg), valist, f_reg, NULL_TREE);
!   ndx = build (COMPONENT_REF, TREE_TYPE (f_ndx), valist, f_ndx, NULL_TREE);
  
    type_size = size_in_bytes (type);
    va_size = round_up (type_size, UNITS_PER_WORD);
--- 2158,2173 ----
  					       pre_p, NULL);
        imag_part = get_initialized_tmp_var (imag_part, pre_p, NULL);
  
!       return build2 (COMPLEX_EXPR, type, real_part, imag_part);
      }
  
    f_stk = TYPE_FIELDS (va_list_type_node);
    f_reg = TREE_CHAIN (f_stk);
    f_ndx = TREE_CHAIN (f_reg);
  
!   stk = build3 (COMPONENT_REF, TREE_TYPE (f_stk), valist, f_stk, NULL_TREE);
!   reg = build3 (COMPONENT_REF, TREE_TYPE (f_reg), valist, f_reg, NULL_TREE);
!   ndx = build3 (COMPONENT_REF, TREE_TYPE (f_ndx), valist, f_ndx, NULL_TREE);
  
    type_size = size_in_bytes (type);
    va_size = round_up (type_size, UNITS_PER_WORD);
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2187,2197 ****
      {
        int align = TYPE_ALIGN (type) / BITS_PER_UNIT;
  
!       t = build (PLUS_EXPR, integer_type_node, orig_ndx,
! 		 build_int_cst (NULL_TREE, align - 1));
!       t = build (BIT_AND_EXPR, integer_type_node, t,
! 		 build_int_cst (NULL_TREE, -align));
!       t = build (MODIFY_EXPR, integer_type_node, orig_ndx, t);
        gimplify_and_add (t, pre_p);
      }
  
--- 2187,2197 ----
      {
        int align = TYPE_ALIGN (type) / BITS_PER_UNIT;
  
!       t = build2 (PLUS_EXPR, integer_type_node, orig_ndx,
! 		  build_int_cst (NULL_TREE, align - 1));
!       t = build2 (BIT_AND_EXPR, integer_type_node, t,
! 		  build_int_cst (NULL_TREE, -align));
!       t = build2 (MODIFY_EXPR, integer_type_node, orig_ndx, t);
        gimplify_and_add (t, pre_p);
      }
  
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2201,2208 ****
       (AP).__va_ndx = orig_ndx + __va_size (TYPE); */
  
    t = fold_convert (integer_type_node, va_size);
!   t = build (PLUS_EXPR, integer_type_node, orig_ndx, t);
!   t = build (MODIFY_EXPR, integer_type_node, ndx, t);
    gimplify_and_add (t, pre_p);
  
  
--- 2201,2208 ----
       (AP).__va_ndx = orig_ndx + __va_size (TYPE); */
  
    t = fold_convert (integer_type_node, va_size);
!   t = build2 (PLUS_EXPR, integer_type_node, orig_ndx, t);
!   t = build2 (MODIFY_EXPR, integer_type_node, ndx, t);
    gimplify_and_add (t, pre_p);
  
  
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2221,2239 ****
        lab_over = create_artificial_label ();
  
        t = build_int_cst (NULL_TREE, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD);
!       t = build (GT_EXPR, boolean_type_node, ndx, t);
!       t = build (COND_EXPR, void_type_node, t,
! 		 build (GOTO_EXPR, void_type_node, lab_false),
! 		 NULL);
        gimplify_and_add (t, pre_p);
  
!       t = build (MODIFY_EXPR, void_type_node, array, reg);
        gimplify_and_add (t, pre_p);
  
!       t = build (GOTO_EXPR, void_type_node, lab_over);
        gimplify_and_add (t, pre_p);
  
!       t = build (LABEL_EXPR, void_type_node, lab_false);
        gimplify_and_add (t, pre_p);
      }
  
--- 2221,2239 ----
        lab_over = create_artificial_label ();
  
        t = build_int_cst (NULL_TREE, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD);
!       t = build2 (GT_EXPR, boolean_type_node, ndx, t);
!       t = build3 (COND_EXPR, void_type_node, t,
! 		  build1 (GOTO_EXPR, void_type_node, lab_false),
! 		  NULL_TREE);
        gimplify_and_add (t, pre_p);
  
!       t = build2 (MODIFY_EXPR, void_type_node, array, reg);
        gimplify_and_add (t, pre_p);
  
!       t = build1 (GOTO_EXPR, void_type_node, lab_over);
        gimplify_and_add (t, pre_p);
  
!       t = build1 (LABEL_EXPR, void_type_node, lab_false);
        gimplify_and_add (t, pre_p);
      }
  
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2251,2276 ****
    lab_false2 = create_artificial_label ();
  
    t = build_int_cst (NULL_TREE, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD);
!   t = build (GT_EXPR, boolean_type_node, orig_ndx, t);
!   t = build (COND_EXPR, void_type_node, t,
! 	     build (GOTO_EXPR, void_type_node, lab_false2),
! 	     NULL);
    gimplify_and_add (t, pre_p);
  
    t = size_binop (PLUS_EXPR, va_size, size_int (32));
    t = fold_convert (integer_type_node, t);
!   t = build (MODIFY_EXPR, integer_type_node, ndx, t);
    gimplify_and_add (t, pre_p);
  
!   t = build (LABEL_EXPR, void_type_node, lab_false2);
    gimplify_and_add (t, pre_p);
  
!   t = build (MODIFY_EXPR, void_type_node, array, stk);
    gimplify_and_add (t, pre_p);
  
    if (lab_over)
      {
!       t = build (LABEL_EXPR, void_type_node, lab_over);
        gimplify_and_add (t, pre_p);
      }
  
--- 2251,2276 ----
    lab_false2 = create_artificial_label ();
  
    t = build_int_cst (NULL_TREE, MAX_ARGS_IN_REGISTERS * UNITS_PER_WORD);
!   t = build2 (GT_EXPR, boolean_type_node, orig_ndx, t);
!   t = build3 (COND_EXPR, void_type_node, t,
! 	      build1 (GOTO_EXPR, void_type_node, lab_false2),
! 	      NULL_TREE);
    gimplify_and_add (t, pre_p);
  
    t = size_binop (PLUS_EXPR, va_size, size_int (32));
    t = fold_convert (integer_type_node, t);
!   t = build2 (MODIFY_EXPR, integer_type_node, ndx, t);
    gimplify_and_add (t, pre_p);
  
!   t = build1 (LABEL_EXPR, void_type_node, lab_false2);
    gimplify_and_add (t, pre_p);
  
!   t = build2 (MODIFY_EXPR, void_type_node, array, stk);
    gimplify_and_add (t, pre_p);
  
    if (lab_over)
      {
!       t = build1 (LABEL_EXPR, void_type_node, lab_over);
        gimplify_and_add (t, pre_p);
      }
  
*************** xtensa_gimplify_va_arg_expr (tree valist
*** 2289,2305 ****
    if (BYTES_BIG_ENDIAN && TREE_CODE (type_size) == INTEGER_CST)
      {
        t = size_int (PARM_BOUNDARY / BITS_PER_UNIT);
!       t = fold (build (GE_EXPR, boolean_type_node, type_size, t));
!       t = fold (build (COND_EXPR, sizetype, t, va_size, type_size));
        size = t;
      }
    else
      size = va_size;
  
    t = fold_convert (ptr_type_node, ndx);
!   addr = build (PLUS_EXPR, ptr_type_node, array, t);
    t = fold_convert (ptr_type_node, size);
!   addr = build (MINUS_EXPR, ptr_type_node, addr, t);
  
    addr = fold_convert (build_pointer_type (type), addr);
    if (indirect)
--- 2289,2305 ----
    if (BYTES_BIG_ENDIAN && TREE_CODE (type_size) == INTEGER_CST)
      {
        t = size_int (PARM_BOUNDARY / BITS_PER_UNIT);
!       t = fold_build2 (GE_EXPR, boolean_type_node, type_size, t);
!       t = fold_build3 (COND_EXPR, sizetype, t, va_size, type_size);
        size = t;
      }
    else
      size = va_size;
  
    t = fold_convert (ptr_type_node, ndx);
!   addr = build2 (PLUS_EXPR, ptr_type_node, array, t);
    t = fold_convert (ptr_type_node, size);
!   addr = build2 (MINUS_EXPR, ptr_type_node, addr, t);
  
    addr = fold_convert (build_pointer_type (type), addr);
    if (indirect)
Index: config/stormy16/stormy16.c
===================================================================
*** config/stormy16/stormy16.c	(revision 107893)
--- config/stormy16/stormy16.c	(working copy)
*************** xstormy16_expand_builtin_va_start (tree 
*** 1365,1384 ****
    f_base = TYPE_FIELDS (va_list_type_node);
    f_count = TREE_CHAIN (f_base);
    
!   base = build (COMPONENT_REF, TREE_TYPE (f_base), valist, f_base, NULL_TREE);
!   count = build (COMPONENT_REF, TREE_TYPE (f_count), valist, f_count,
! 		 NULL_TREE);
  
    t = make_tree (TREE_TYPE (base), virtual_incoming_args_rtx);
!   t = build (PLUS_EXPR, TREE_TYPE (base), t, 
! 	     build_int_cst (NULL_TREE, INCOMING_FRAME_SP_OFFSET));
!   t = build (MODIFY_EXPR, TREE_TYPE (base), base, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
!   t = build (MODIFY_EXPR, TREE_TYPE (count), count, 
! 	     build_int_cst (NULL_TREE,
! 			    current_function_args_info * UNITS_PER_WORD));
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
--- 1365,1384 ----
    f_base = TYPE_FIELDS (va_list_type_node);
    f_count = TREE_CHAIN (f_base);
    
!   base = build3 (COMPONENT_REF, TREE_TYPE (f_base), valist, f_base, NULL_TREE);
!   count = build3 (COMPONENT_REF, TREE_TYPE (f_count), valist, f_count,
! 		  NULL_TREE);
  
    t = make_tree (TREE_TYPE (base), virtual_incoming_args_rtx);
!   t = build2 (PLUS_EXPR, TREE_TYPE (base), t, 
! 	      build_int_cst (NULL_TREE, INCOMING_FRAME_SP_OFFSET));
!   t = build2 (MODIFY_EXPR, TREE_TYPE (base), base, t);
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
!   t = build2 (MODIFY_EXPR, TREE_TYPE (count), count, 
! 	      build_int_cst (NULL_TREE,
! 			     current_function_args_info * UNITS_PER_WORD));
    TREE_SIDE_EFFECTS (t) = 1;
    expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  }
*************** xstormy16_expand_builtin_va_arg (tree va
*** 1401,1409 ****
    f_base = TYPE_FIELDS (va_list_type_node);
    f_count = TREE_CHAIN (f_base);
    
!   base = build (COMPONENT_REF, TREE_TYPE (f_base), valist, f_base, NULL_TREE);
!   count = build (COMPONENT_REF, TREE_TYPE (f_count), valist, f_count,
! 		 NULL_TREE);
  
    must_stack = targetm.calls.must_pass_in_stack (TYPE_MODE (type), type);
    size_tree = round_up (size_in_bytes (type), UNITS_PER_WORD);
--- 1401,1409 ----
    f_base = TYPE_FIELDS (va_list_type_node);
    f_count = TREE_CHAIN (f_base);
    
!   base = build3 (COMPONENT_REF, TREE_TYPE (f_base), valist, f_base, NULL_TREE);
!   count = build3 (COMPONENT_REF, TREE_TYPE (f_count), valist, f_count,
! 		  NULL_TREE);
  
    must_stack = targetm.calls.must_pass_in_stack (TYPE_MODE (type), type);
    size_tree = round_up (size_in_bytes (type), UNITS_PER_WORD);
*************** xstormy16_expand_builtin_va_arg (tree va
*** 1421,1443 ****
        tree r;
  
        t = fold_convert (TREE_TYPE (count), size_tree);
!       t = build (PLUS_EXPR, TREE_TYPE (count), count_tmp, t);
        r = fold_convert (TREE_TYPE (count), size_int (size_of_reg_args));
!       t = build (GT_EXPR, boolean_type_node, t, r);
!       t = build (COND_EXPR, void_type_node, t,
! 		 build (GOTO_EXPR, void_type_node, lab_fromstack),
! 		 NULL);
        gimplify_and_add (t, pre_p);
    
        t = fold_convert (ptr_type_node, count_tmp);
!       t = build (PLUS_EXPR, ptr_type_node, base, t);
!       t = build (MODIFY_EXPR, void_type_node, addr, t);
        gimplify_and_add (t, pre_p);
  
!       t = build (GOTO_EXPR, void_type_node, lab_gotaddr);
        gimplify_and_add (t, pre_p);
  
!       t = build (LABEL_EXPR, void_type_node, lab_fromstack);
        gimplify_and_add (t, pre_p);
      }
    
--- 1421,1443 ----
        tree r;
  
        t = fold_convert (TREE_TYPE (count), size_tree);
!       t = build2 (PLUS_EXPR, TREE_TYPE (count), count_tmp, t);
        r = fold_convert (TREE_TYPE (count), size_int (size_of_reg_args));
!       t = build2 (GT_EXPR, boolean_type_node, t, r);
!       t = build3 (COND_EXPR, void_type_node, t,
! 		  build1 (GOTO_EXPR, void_type_node, lab_fromstack),
! 		  NULL_TREE);
        gimplify_and_add (t, pre_p);
    
        t = fold_convert (ptr_type_node, count_tmp);
!       t = build2 (PLUS_EXPR, ptr_type_node, base, t);
!       t = build2 (MODIFY_EXPR, void_type_node, addr, t);
        gimplify_and_add (t, pre_p);
  
!       t = build1 (GOTO_EXPR, void_type_node, lab_gotaddr);
        gimplify_and_add (t, pre_p);
  
!       t = build1 (LABEL_EXPR, void_type_node, lab_fromstack);
        gimplify_and_add (t, pre_p);
      }
    
*************** xstormy16_expand_builtin_va_arg (tree va
*** 1450,1480 ****
        tree r, u;
  
        r = size_int (NUM_ARGUMENT_REGISTERS * UNITS_PER_WORD);
!       u = build (MODIFY_EXPR, void_type_node, count_tmp, r);
  
        t = fold_convert (TREE_TYPE (count), r);
!       t = build (GE_EXPR, boolean_type_node, count_tmp, t);
!       t = build (COND_EXPR, void_type_node, t, NULL, u);
        gimplify_and_add (t, pre_p);
      }
  
    t = size_int (NUM_ARGUMENT_REGISTERS * UNITS_PER_WORD
  		- INCOMING_FRAME_SP_OFFSET);
    t = fold_convert (TREE_TYPE (count), t);
!   t = build (MINUS_EXPR, TREE_TYPE (count), count_tmp, t);
!   t = build (PLUS_EXPR, TREE_TYPE (count), t,
! 	     fold_convert (TREE_TYPE (count), size_tree));
    t = fold_convert (TREE_TYPE (base), fold (t));
!   t = build (MINUS_EXPR, TREE_TYPE (base), base, t);
!   t = build (MODIFY_EXPR, void_type_node, addr, t);
    gimplify_and_add (t, pre_p);
  
!   t = build (LABEL_EXPR, void_type_node, lab_gotaddr);
    gimplify_and_add (t, pre_p);
  
    t = fold_convert (TREE_TYPE (count), size_tree);
!   t = build (PLUS_EXPR, TREE_TYPE (count), count_tmp, t);
!   t = build (MODIFY_EXPR, TREE_TYPE (count), count, t);
    gimplify_and_add (t, pre_p);
    
    addr = fold_convert (build_pointer_type (type), addr);
--- 1450,1480 ----
        tree r, u;
  
        r = size_int (NUM_ARGUMENT_REGISTERS * UNITS_PER_WORD);
!       u = build2 (MODIFY_EXPR, void_type_node, count_tmp, r);
  
        t = fold_convert (TREE_TYPE (count), r);
!       t = build2 (GE_EXPR, boolean_type_node, count_tmp, t);
!       t = build3 (COND_EXPR, void_type_node, t, NULL_TREE, u);
        gimplify_and_add (t, pre_p);
      }
  
    t = size_int (NUM_ARGUMENT_REGISTERS * UNITS_PER_WORD
  		- INCOMING_FRAME_SP_OFFSET);
    t = fold_convert (TREE_TYPE (count), t);
!   t = build2 (MINUS_EXPR, TREE_TYPE (count), count_tmp, t);
!   t = build2 (PLUS_EXPR, TREE_TYPE (count), t,
! 	      fold_convert (TREE_TYPE (count), size_tree));
    t = fold_convert (TREE_TYPE (base), fold (t));
!   t = build2 (MINUS_EXPR, TREE_TYPE (base), base, t);
!   t = build2 (MODIFY_EXPR, void_type_node, addr, t);
    gimplify_and_add (t, pre_p);
  
!   t = build1 (LABEL_EXPR, void_type_node, lab_gotaddr);
    gimplify_and_add (t, pre_p);
  
    t = fold_convert (TREE_TYPE (count), size_tree);
!   t = build2 (PLUS_EXPR, TREE_TYPE (count), count_tmp, t);
!   t = build2 (MODIFY_EXPR, TREE_TYPE (count), count, t);
    gimplify_and_add (t, pre_p);
    
    addr = fold_convert (build_pointer_type (type), addr);
Index: config/mips/mips.c
===================================================================
*** config/mips/mips.c	(revision 107893)
--- config/mips/mips.c	(working copy)
*************** mips_va_start (tree valist, rtx nextarg)
*** 4092,4122 ****
        f_goff = TREE_CHAIN (f_ftop);
        f_foff = TREE_CHAIN (f_goff);
  
!       ovfl = build (COMPONENT_REF, TREE_TYPE (f_ovfl), valist, f_ovfl,
! 		    NULL_TREE);
!       gtop = build (COMPONENT_REF, TREE_TYPE (f_gtop), valist, f_gtop,
! 		    NULL_TREE);
!       ftop = build (COMPONENT_REF, TREE_TYPE (f_ftop), valist, f_ftop,
! 		    NULL_TREE);
!       goff = build (COMPONENT_REF, TREE_TYPE (f_goff), valist, f_goff,
! 		    NULL_TREE);
!       foff = build (COMPONENT_REF, TREE_TYPE (f_foff), valist, f_foff,
! 		    NULL_TREE);
  
        /* Emit code to initialize OVFL, which points to the next varargs
  	 stack argument.  CUM->STACK_WORDS gives the number of stack
  	 words used by named arguments.  */
        t = make_tree (TREE_TYPE (ovfl), virtual_incoming_args_rtx);
        if (cum->stack_words > 0)
! 	t = build (PLUS_EXPR, TREE_TYPE (ovfl), t,
! 		   build_int_cst (NULL_TREE,
! 				  cum->stack_words * UNITS_PER_WORD));
!       t = build (MODIFY_EXPR, TREE_TYPE (ovfl), ovfl, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize GTOP, the top of the GPR save area.  */
        t = make_tree (TREE_TYPE (gtop), virtual_incoming_args_rtx);
!       t = build (MODIFY_EXPR, TREE_TYPE (gtop), gtop, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize FTOP, the top of the FPR save area.
--- 4092,4122 ----
        f_goff = TREE_CHAIN (f_ftop);
        f_foff = TREE_CHAIN (f_goff);
  
!       ovfl = build3 (COMPONENT_REF, TREE_TYPE (f_ovfl), valist, f_ovfl,
! 		     NULL_TREE);
!       gtop = build3 (COMPONENT_REF, TREE_TYPE (f_gtop), valist, f_gtop,
! 		     NULL_TREE);
!       ftop = build3 (COMPONENT_REF, TREE_TYPE (f_ftop), valist, f_ftop,
! 		     NULL_TREE);
!       goff = build3 (COMPONENT_REF, TREE_TYPE (f_goff), valist, f_goff,
! 		     NULL_TREE);
!       foff = build3 (COMPONENT_REF, TREE_TYPE (f_foff), valist, f_foff,
! 		     NULL_TREE);
  
        /* Emit code to initialize OVFL, which points to the next varargs
  	 stack argument.  CUM->STACK_WORDS gives the number of stack
  	 words used by named arguments.  */
        t = make_tree (TREE_TYPE (ovfl), virtual_incoming_args_rtx);
        if (cum->stack_words > 0)
! 	t = build2 (PLUS_EXPR, TREE_TYPE (ovfl), t,
! 		    build_int_cst (NULL_TREE,
! 				   cum->stack_words * UNITS_PER_WORD));
!       t = build2 (MODIFY_EXPR, TREE_TYPE (ovfl), ovfl, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize GTOP, the top of the GPR save area.  */
        t = make_tree (TREE_TYPE (gtop), virtual_incoming_args_rtx);
!       t = build2 (MODIFY_EXPR, TREE_TYPE (gtop), gtop, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize FTOP, the top of the FPR save area.
*************** mips_va_start (tree valist, rtx nextarg)
*** 4126,4146 ****
        fpr_offset = gpr_save_area_size + UNITS_PER_FPVALUE - 1;
        fpr_offset &= ~(UNITS_PER_FPVALUE - 1);
        if (fpr_offset)
! 	t = build (PLUS_EXPR, TREE_TYPE (ftop), t,
! 		   build_int_cst (NULL_TREE, -fpr_offset));
!       t = build (MODIFY_EXPR, TREE_TYPE (ftop), ftop, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize GOFF, the offset from GTOP of the
  	 next GPR argument.  */
!       t = build (MODIFY_EXPR, TREE_TYPE (goff), goff,
! 		 build_int_cst (NULL_TREE, gpr_save_area_size));
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Likewise emit code to initialize FOFF, the offset from FTOP
  	 of the next FPR argument.  */
!       t = build (MODIFY_EXPR, TREE_TYPE (foff), foff,
! 		 build_int_cst (NULL_TREE, fpr_save_area_size));
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
    else
--- 4126,4146 ----
        fpr_offset = gpr_save_area_size + UNITS_PER_FPVALUE - 1;
        fpr_offset &= ~(UNITS_PER_FPVALUE - 1);
        if (fpr_offset)
! 	t = build2 (PLUS_EXPR, TREE_TYPE (ftop), t,
! 		    build_int_cst (NULL_TREE, -fpr_offset));
!       t = build2 (MODIFY_EXPR, TREE_TYPE (ftop), ftop, t);
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Emit code to initialize GOFF, the offset from GTOP of the
  	 next GPR argument.  */
!       t = build2 (MODIFY_EXPR, TREE_TYPE (goff), goff,
! 		  build_int_cst (NULL_TREE, gpr_save_area_size));
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
  
        /* Likewise emit code to initialize FOFF, the offset from FTOP
  	 of the next FPR argument.  */
!       t = build2 (MODIFY_EXPR, TREE_TYPE (foff), foff,
! 		  build_int_cst (NULL_TREE, fpr_save_area_size));
        expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
      }
    else
*************** mips_gimplify_va_arg_expr (tree valist, 
*** 4214,4229 ****
  
  	 [1] and [9] can sometimes be optimized away.  */
  
!       ovfl = build (COMPONENT_REF, TREE_TYPE (f_ovfl), valist, f_ovfl,
! 		    NULL_TREE);
  
        if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_FLOAT
  	  && GET_MODE_SIZE (TYPE_MODE (type)) <= UNITS_PER_FPVALUE)
  	{
! 	  top = build (COMPONENT_REF, TREE_TYPE (f_ftop), valist, f_ftop,
! 		       NULL_TREE);
! 	  off = build (COMPONENT_REF, TREE_TYPE (f_foff), valist, f_foff,
! 		       NULL_TREE);
  
  	  /* When floating-point registers are saved to the stack,
  	     each one will take up UNITS_PER_HWFPVALUE bytes, regardless
--- 4214,4229 ----
  
  	 [1] and [9] can sometimes be optimized away.  */
  
!       ovfl = build3 (COMPONENT_REF, TREE_TYPE (f_ovfl), valist, f_ovfl,
! 		     NULL_TREE);
  
        if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_FLOAT
  	  && GET_MODE_SIZE (TYPE_MODE (type)) <= UNITS_PER_FPVALUE)
  	{
! 	  top = build3 (COMPONENT_REF, TREE_TYPE (f_ftop), valist, f_ftop,
! 		        NULL_TREE);
! 	  off = build3 (COMPONENT_REF, TREE_TYPE (f_foff), valist, f_foff,
! 		        NULL_TREE);
  
  	  /* When floating-point registers are saved to the stack,
  	     each one will take up UNITS_PER_HWFPVALUE bytes, regardless
*************** mips_gimplify_va_arg_expr (tree valist, 
*** 4251,4292 ****
  	}
        else
  	{
! 	  top = build (COMPONENT_REF, TREE_TYPE (f_gtop), valist, f_gtop,
! 		       NULL_TREE);
! 	  off = build (COMPONENT_REF, TREE_TYPE (f_goff), valist, f_goff,
! 		       NULL_TREE);
  	  if (rsize > UNITS_PER_WORD)
  	    {
  	      /* [1] Emit code for: off &= -rsize.	*/
! 	      t = build (BIT_AND_EXPR, TREE_TYPE (off), off,
! 			 build_int_cst (NULL_TREE, -rsize));
! 	      t = build (MODIFY_EXPR, TREE_TYPE (off), off, t);
  	      gimplify_and_add (t, pre_p);
  	    }
  	  osize = rsize;
  	}
  
        /* [2] Emit code to branch if off == 0.  */
!       t = build (NE_EXPR, boolean_type_node, off,
! 		 build_int_cst (TREE_TYPE (off), 0));
!       addr = build (COND_EXPR, ptr_type_node, t, NULL, NULL);
  
        /* [5] Emit code for: off -= rsize.  We do this as a form of
  	 post-increment not available to C.  Also widen for the
  	 coming pointer arithmetic.  */
        t = fold_convert (TREE_TYPE (off), build_int_cst (NULL_TREE, rsize));
!       t = build (POSTDECREMENT_EXPR, TREE_TYPE (off), off, t);
        t = fold_convert (sizetype, t);
        t = fold_convert (TREE_TYPE (top), t);
  
        /* [4] Emit code for: addr_rtx = top - off.  On big endian machines,
  	 the argument has RSIZE - SIZE bytes of leading padding.  */
!       t = build (MINUS_EXPR, TREE_TYPE (top), top, t);
        if (BYTES_BIG_ENDIAN && rsize > size)
  	{
  	  u = fold_convert (TREE_TYPE (t), build_int_cst (NULL_TREE,
  							  rsize - size));
! 	  t = build (PLUS_EXPR, TREE_TYPE (t), t, u);
  	}
        COND_EXPR_THEN (addr) = t;
  
--- 4251,4292 ----
  	}
        else
  	{
! 	  top = build3 (COMPONENT_REF, TREE_TYPE (f_gtop), valist, f_gtop,
! 		        NULL_TREE);
! 	  off = build3 (COMPONENT_REF, TREE_TYPE (f_goff), valist, f_goff,
! 		        NULL_TREE);
  	  if (rsize > UNITS_PER_WORD)
  	    {
  	      /* [1] Emit code for: off &= -rsize.	*/
! 	      t = build2 (BIT_AND_EXPR, TREE_TYPE (off), off,
! 			  build_int_cst (NULL_TREE, -rsize));
! 	      t = build2 (MODIFY_EXPR, TREE_TYPE (off), off, t);
  	      gimplify_and_add (t, pre_p);
  	    }
  	  osize = rsize;
  	}
  
        /* [2] Emit code to branch if off == 0.  */
!       t = build2 (NE_EXPR, boolean_type_node, off,
! 		  build_int_cst (TREE_TYPE (off), 0));
!       addr = build3 (COND_EXPR, ptr_type_node, t, NULL_TREE, NULL_TREE);
  
        /* [5] Emit code for: off -= rsize.  We do this as a form of
  	 post-increment not available to C.  Also widen for the
  	 coming pointer arithmetic.  */
        t = fold_convert (TREE_TYPE (off), build_int_cst (NULL_TREE, rsize));
!       t = build2 (POSTDECREMENT_EXPR, TREE_TYPE (off), off, t);
        t = fold_convert (sizetype, t);
        t = fold_convert (TREE_TYPE (top), t);
  
        /* [4] Emit code for: addr_rtx = top - off.  On big endian machines,
  	 the argument has RSIZE - SIZE bytes of leading padding.  */
!       t = build2 (MINUS_EXPR, TREE_TYPE (top), top, t);
        if (BYTES_BIG_ENDIAN && rsize > size)
  	{
  	  u = fold_convert (TREE_TYPE (t), build_int_cst (NULL_TREE,
  							  rsize - size));
! 	  t = build2 (PLUS_EXPR, TREE_TYPE (t), t, u);
  	}
        COND_EXPR_THEN (addr) = t;
  
*************** mips_gimplify_va_arg_expr (tree valist, 
*** 4295,4305 ****
  	  /* [9] Emit: ovfl += ((intptr_t) ovfl + osize - 1) & -osize.  */
  	  u = fold_convert (TREE_TYPE (ovfl),
  			    build_int_cst (NULL_TREE, osize - 1));
! 	  t = build (PLUS_EXPR, TREE_TYPE (ovfl), ovfl, u);
  	  u = fold_convert (TREE_TYPE (ovfl),
  			    build_int_cst (NULL_TREE, -osize));
! 	  t = build (BIT_AND_EXPR, TREE_TYPE (ovfl), t, u);
! 	  align = build (MODIFY_EXPR, TREE_TYPE (ovfl), ovfl, t);
  	}
        else
  	align = NULL;
--- 4295,4305 ----
  	  /* [9] Emit: ovfl += ((intptr_t) ovfl + osize - 1) & -osize.  */
  	  u = fold_convert (TREE_TYPE (ovfl),
  			    build_int_cst (NULL_TREE, osize - 1));
! 	  t = build2 (PLUS_EXPR, TREE_TYPE (ovfl), ovfl, u);
  	  u = fold_convert (TREE_TYPE (ovfl),
  			    build_int_cst (NULL_TREE, -osize));
! 	  t = build2 (BIT_AND_EXPR, TREE_TYPE (ovfl), t, u);
! 	  align = build2 (MODIFY_EXPR, TREE_TYPE (ovfl), ovfl, t);
  	}
        else
  	align = NULL;
*************** mips_gimplify_va_arg_expr (tree valist, 
*** 4309,4325 ****
  	 the argument has OSIZE - SIZE bytes of leading padding.  */
        u = fold_convert (TREE_TYPE (ovfl),
  			build_int_cst (NULL_TREE, osize));
!       t = build (POSTINCREMENT_EXPR, TREE_TYPE (ovfl), ovfl, u);
        if (BYTES_BIG_ENDIAN && osize > size)
  	{
  	  u = fold_convert (TREE_TYPE (t),
  			    build_int_cst (NULL_TREE, osize - size));
! 	  t = build (PLUS_EXPR, TREE_TYPE (t), t, u);
  	}
  
        /* String [9] and [10,11] together.  */
        if (align)
! 	t = build (COMPOUND_EXPR, TREE_TYPE (t), align, t);
        COND_EXPR_ELSE (addr) = t;
  
        addr = fold_convert (build_pointer_type (type), addr);
--- 4309,4325 ----
  	 the argument has OSIZE - SIZE bytes of leading padding.  */
        u = fold_convert (TREE_TYPE (ovfl),
  			build_int_cst (NULL_TREE, osize));
!       t = build2 (POSTINCREMENT_EXPR, TREE_TYPE (ovfl), ovfl, u);
        if (BYTES_BIG_ENDIAN && osize > size)
  	{
  	  u = fold_convert (TREE_TYPE (t),
  			    build_int_cst (NULL_TREE, osize - size));
! 	  t = build2 (PLUS_EXPR, TREE_TYPE (t), t, u);
  	}
  
        /* String [9] and [10,11] together.  */
        if (align)
! 	t = build2 (COMPOUND_EXPR, TREE_TYPE (t), align, t);
        COND_EXPR_ELSE (addr) = t;
  
        addr = fold_convert (build_pointer_type (type), addr);



More information about the Gcc-patches mailing list