diff options
author | Richard Henderson <rth@cygnus.com> | 2000-06-13 16:36:19 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-06-13 16:36:19 -0700 |
commit | 46327bc509a091ca9def304efd65b37110160d24 (patch) | |
tree | e3050ff52fc29f7a4264af25f0952023d18cc9ca /gcc/libgcc2.c | |
parent | 13da91fd236bc0d0b3cb773eed729cb35044848b (diff) | |
download | gcc-46327bc509a091ca9def304efd65b37110160d24.zip gcc-46327bc509a091ca9def304efd65b37110160d24.tar.gz gcc-46327bc509a091ca9def304efd65b37110160d24.tar.bz2 |
libgcc2.c (ia64_throw_helper): Use __builtin_return_address.
* libgcc2.c (ia64_throw_helper): Use __builtin_return_address.
(__throw): Don't pass the address of a label.
* config/ia64/ia64.c (ia64_compute_frame_size): Use
current_function_is_leaf.
(ia64_expand_prologue): Likewise. Modify return_address_pointer_rtx
instead of reg_names[RETURN_ADDRESS_REGNUM].
(ia64_init_machine_status): Reset return_address_pointer_rtx.
* config/ia64/ia64.h (RETURN_ADDRESS_POINTER_REGNUM): Rename
from RETURN_ADDRESS_REGNUM. Update all uses.
(RETURN_ADDR_RTX): Use return_address_pointer_rtx; return
zero instead of null on failure.
(ELIMINABLE_REGS): Add ra->b0 elimination.
(CAN_ELIMINATE): Update accordingly.
(INITIAL_ELIMINATION_OFFSET): Likewise.
(REGISTER_NAMES): Use an illegal assembler name for
RETURN_ADDRESS_POINTER_REGNUM.
From-SVN: r34531
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 305d7f0..06c6fdd 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -4043,12 +4043,12 @@ __ia64_personality_v1 (void *pc, old_exception_table *table) } static void -ia64_throw_helper (throw_pc, throw_frame, caller, throw_bsp) - void *throw_pc; +ia64_throw_helper (throw_frame, caller, throw_bsp) ia64_frame_state *throw_frame; ia64_frame_state *caller; void *throw_bsp; { + void *throw_pc = __builtin_return_address (0); unwind_info_ptr *info; void *pc, *handler = NULL; void *pc_base; @@ -4146,7 +4146,6 @@ __throw () __terminate (); __builtin_unwind_init (); -label_ia64: /* We have to call another routine to actually process the frame information, which will force all of __throw's local registers into backing store. */ @@ -4154,7 +4153,7 @@ label_ia64: /* Get the value of ar.bsp while we're here. */ bsp = __builtin_ia64_bsp (); - ia64_throw_helper (&&label_ia64, &my_frame, &originator, bsp); + ia64_throw_helper (&my_frame, &originator, bsp); /* Now we have to fudge the bsp by the amount in our (__throw) frame marker, since the return is going to adjust it by that much. */ |