diff options
| author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-03-23 00:29:55 +0000 | 
|---|---|---|
| committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-03-23 00:29:55 +0000 | 
| commit | 220d204bf8991b718aa3e35e74c2965e1811a9a2 (patch) | |
| tree | b3b34069ee82d4ab6af7bad503c9132d5330f934 /gcc/function.c | |
| parent | 4e9d90c7ad53043976c8a0e394fe92f698de3173 (diff) | |
| download | ppe42-gcc-220d204bf8991b718aa3e35e74c2965e1811a9a2.tar.gz ppe42-gcc-220d204bf8991b718aa3e35e74c2965e1811a9a2.zip | |
        Implement dwarf2 exception handling for the ARM.
        * config/arm/arm.h (INCOMING_RETURN_ADDR_RTX): Define.
        (DWARF_FRAME_RETURN_COLUMN): Define.
        * config/arm/arm.c (emit_multi_reg_push): Return rtx.  Attach
        REG_FRAME_RELATED_EXPR note.
        (emit_sfm): Likewise.
        (arm_expand_prologue): Set RTX_FRAME_RELATED_P on everything.
        * dwarf2out.c (reg_save): Handle saving a register to itself.
        (dwarf2out_frame_debug_expr): Handle an intermediate cfa reg.
        * except.c (eh_regs): Don't use the static chain reg if it's
        callee-saved.
        * frame.h (frame_state): Add cfa_saved field.
        * frame.c (execute_cfa_insn): Set it.
        * libgcc2.c (throw_helper): Don't adjust sp if it's restored in
        the epilogue.
        * function.c (ARG_POINTER_CFA_OFFSET): Default to FIRST_PARM_OFFSET.
        Now takes a parm.
        (instantiate_virtual_regs): Adjust.
        * tm.texi: Adjust.
        * config/m68k/m68k.h (ARG_POINTER_CFA_OFFSET): Don't define.
        * config/ns32k/ns32k.h (ARG_POINTER_CFA_OFFSET): Don't define.
        * config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): Take a parm.
        * dwarf2out.c (reg_number): Refer to FIRST_PSEUDO_REGISTER.
        (initial_return_save): Use DWARF_FRAME_REGNUM, not reg_number.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32696 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
| -rw-r--r-- | gcc/function.c | 6 | 
1 files changed, 3 insertions, 3 deletions
| diff --git a/gcc/function.c b/gcc/function.c index 3308dbba564..ae04a5c6044 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -2760,10 +2760,10 @@ static int cfa_offset;  #endif  #endif -/* On a few machines, the CFA coincides with the arg pointer.  */ +/* On most machines, the CFA coincides with the first incoming parm.  */  #ifndef ARG_POINTER_CFA_OFFSET -#define ARG_POINTER_CFA_OFFSET 0 +#define ARG_POINTER_CFA_OFFSET(FNDECL) FIRST_PARM_OFFSET (FNDECL)  #endif @@ -3335,7 +3335,7 @@ instantiate_virtual_regs (fndecl, insns)    var_offset = STARTING_FRAME_OFFSET;    dynamic_offset = STACK_DYNAMIC_OFFSET (fndecl);    out_arg_offset = STACK_POINTER_OFFSET; -  cfa_offset = ARG_POINTER_CFA_OFFSET; +  cfa_offset = ARG_POINTER_CFA_OFFSET (fndecl);    /* Scan all variables and parameters of this function.  For each that is       in memory, instantiate all virtual registers if the result is a valid | 

