diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-31 18:17:13 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-08-31 18:17:13 -0400 |
commit | 653a996d860db18ac866140102109f8fb30b8670 (patch) | |
tree | 0ac0bf42672fbfbb35fb1f3d7e0cd2a18aac8382 | |
parent | 1d820a2a0d8f41f94df565d8053873b7a4adf198 (diff) | |
download | gcc-653a996d860db18ac866140102109f8fb30b8670.zip gcc-653a996d860db18ac866140102109f8fb30b8670.tar.gz gcc-653a996d860db18ac866140102109f8fb30b8670.tar.bz2 |
(alpha_builtin_saveregs): Properly compute address of __offset both
both OSF and WINNT.
From-SVN: r10300
-rw-r--r-- | gcc/config/alpha/alpha.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index cd67fe3..e26e8be 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1158,14 +1158,12 @@ alpha_builtin_saveregs (arglist) addr = force_operand (addr, NULL_RTX); - /* Allocate the va_list constructor */ +- /* Allocate the va_list constructor */ block = assign_stack_local (BLKmode, 2 * UNITS_PER_WORD, BITS_PER_WORD); RTX_UNCHANGING_P (block) = 1; RTX_UNCHANGING_P (XEXP (block, 0)) = 1; - /* Store the address of the first integer register in the __base member. - Note that our offsets are correct for both 32- and 64-bit pointers - due to the alignment of the __offset field (a long). */ + /* Store the address of the first integer register in the __base member. */ #ifdef POINTERS_EXTEND_UNSIGNED addr = convert_memory_address (ptr_mode, addr); @@ -1174,10 +1172,10 @@ alpha_builtin_saveregs (arglist) emit_move_insn (change_address (block, ptr_mode, XEXP (block, 0)), addr); /* Store the argsize as the __va_offset member. */ - emit_move_insn (change_address (block, ptr_mode, + emit_move_insn (change_address (block, TYPE_MODE (integer_type_node), plus_constant (XEXP (block, 0), - GET_MODE_SIZE (ptr_mode))), - force_operand (argsize, NULL_RTX)); + POINTER_SIZE/BITS_PER_UNIT)), + argsize); /* Return the address of the va_list constructor, but don't put it in a register. Doing so would fail when not optimizing and produce worse |