diff options
author | Richard Henderson <rth@redhat.com> | 2004-09-30 01:21:27 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-09-30 01:21:27 -0700 |
commit | 282efe1c41e928262612d9c6291805a21f50906f (patch) | |
tree | b68f70cabfd53a484ae0dea743781e11afb3cfd7 /gcc/config | |
parent | de39930392eda3a8a298e70d07f997eba84c5afe (diff) | |
download | gcc-282efe1c41e928262612d9c6291805a21f50906f.zip gcc-282efe1c41e928262612d9c6291805a21f50906f.tar.gz gcc-282efe1c41e928262612d9c6291805a21f50906f.tar.bz2 |
unwind-dw2.c (_Unwind_GetGR): Honor DWARF_ZERO_REG.
* unwind-dw2.c (_Unwind_GetGR): Honor DWARF_ZERO_REG.
* doc/tm.texi (DWARF_ZERO_REG): New.
* config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
alpha_expand_epilogue): Revert 2003-09-30 change to store zero.
* config/alpha/alpha.h (DWARF_ZERO_REG): New.
From-SVN: r88331
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/alpha/alpha.c | 16 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 1 |
2 files changed, 1 insertions, 16 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 114170b..b1de390 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -5924,11 +5924,6 @@ alpha_sa_mask (unsigned long *imaskP, unsigned long *fmaskP) break; imask |= 1UL << regno; } - - /* Glibc likes to use $31 as an unwind stopper for crt0. To - avoid hackery in unwind-dw2.c, we need to actively store a - zero in the prologue of _Unwind_RaiseException et al. */ - imask |= 1UL << 31; } /* If any register spilled, then spill the return address also. */ @@ -6451,14 +6446,6 @@ alpha_expand_prologue (void) reg_offset += 8; } - /* Store a zero if requested for unwinding. */ - if (imask & (1UL << 31)) - { - emit_frame_store_1 (const0_rtx, sa_reg, sa_bias, reg_offset, - gen_rtx_REG (Pmode, 31)); - reg_offset += 8; - } - for (i = 0; i < 31; i++) if (fmask & (1UL << i)) { @@ -6876,9 +6863,6 @@ alpha_expand_epilogue (void) reg_offset += 8; } - if (imask & (1UL << 31)) - reg_offset += 8; - for (i = 0; i < 31; ++i) if (fmask & (1UL << i)) { diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 35d6f4a..fe3cedc 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -1183,6 +1183,7 @@ do { \ #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, 26) #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (26) #define DWARF_ALT_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (64) +#define DWARF_ZERO_REG 31 /* Describe how we implement __builtin_eh_return. */ #define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N) + 16 : INVALID_REGNUM) |