aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-06-13 16:36:19 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-06-13 16:36:19 -0700
commit46327bc509a091ca9def304efd65b37110160d24 (patch)
treee3050ff52fc29f7a4264af25f0952023d18cc9ca /gcc/libgcc2.c
parent13da91fd236bc0d0b3cb773eed729cb35044848b (diff)
downloadgcc-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.c7
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. */