Commit f7130778 by Douglas B Rupp Committed by Richard Kenner

* config/alpha/alpha.c (alpha_va_start): Update VMS case.

From-SVN: r47670
parent 4ee43206
Wed Dec 5 07:41:13 2001 Douglas B. Rupp <rupp@gnat.com>
* config/alpha/alpha.c (alpha_va_start): Update VMS case.
Wed Dec 5 07:27:42 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Wed Dec 5 07:27:42 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
Douglas B. Rupp <rupp@gnat.com> Douglas B. Rupp <rupp@gnat.com>
......
...@@ -5482,7 +5482,7 @@ alpha_va_start (stdarg_p, valist, nextarg) ...@@ -5482,7 +5482,7 @@ alpha_va_start (stdarg_p, valist, nextarg)
if (TREE_CODE (TREE_TYPE (valist)) == ERROR_MARK) if (TREE_CODE (TREE_TYPE (valist)) == ERROR_MARK)
return; return;
if (TARGET_ABI_OPEN_VMS || TARGET_ABI_UNICOSMK) if (TARGET_ABI_UNICOSMK)
std_expand_builtin_va_start (stdarg_p, valist, nextarg); std_expand_builtin_va_start (stdarg_p, valist, nextarg);
/* For Unix, SETUP_INCOMING_VARARGS moves the starting address base /* For Unix, SETUP_INCOMING_VARARGS moves the starting address base
...@@ -5495,10 +5495,22 @@ alpha_va_start (stdarg_p, valist, nextarg) ...@@ -5495,10 +5495,22 @@ alpha_va_start (stdarg_p, valist, nextarg)
in argsize above, but which are not actually stored on the stack. */ in argsize above, but which are not actually stored on the stack. */
if (NUM_ARGS <= 5 + stdarg_p) if (NUM_ARGS <= 5 + stdarg_p)
offset = 6 * UNITS_PER_WORD; offset = TARGET_ABI_OPEN_VMS ? UNITS_PER_WORD : 6 * UNITS_PER_WORD;
else else
offset = -6 * UNITS_PER_WORD; offset = -6 * UNITS_PER_WORD;
if (TARGET_ABI_OPEN_VMS)
{
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);
}
else
{
base_field = TYPE_FIELDS (TREE_TYPE (valist)); base_field = TYPE_FIELDS (TREE_TYPE (valist));
offset_field = TREE_CHAIN (base_field); offset_field = TREE_CHAIN (base_field);
...@@ -5513,10 +5525,11 @@ alpha_va_start (stdarg_p, valist, nextarg) ...@@ -5513,10 +5525,11 @@ alpha_va_start (stdarg_p, valist, nextarg)
TREE_SIDE_EFFECTS (t) = 1; TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
t = build_int_2 (NUM_ARGS*UNITS_PER_WORD, 0); t = build_int_2 (NUM_ARGS * UNITS_PER_WORD, 0);
t = build (MODIFY_EXPR, TREE_TYPE (offset_field), offset_field, t); t = build (MODIFY_EXPR, TREE_TYPE (offset_field), offset_field, t);
TREE_SIDE_EFFECTS (t) = 1; TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
}
} }
rtx rtx
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment