This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/50887] [avr] Support ACCUMULATE_OUTGOING_ARGS


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50887

--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-10-29 14:36:05 UTC ---
Author: gjl
Date: Sat Oct 29 14:35:59 2011
New Revision: 180654

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180654
Log:
    PR target/50887
    * config/avr/avr.opt (-maccumulate-args): New option.
    * config/avr/avr.h (STARTING_FRAME_OFFSET): Redefine to
    avr_starting_frame_offset.
    (ACCUMULATE_OUTGOING_ARGS): Define to avr_accumulate_outgoing_args.
    * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): Remove.
    (UNSPECV_WRITE_SP_IRQ_OFF): Remove.
    (UNSPECV_WRITE_SP): New constant.
    (*addhi3_sp_R): Rewrite to...
    (*addhi3_sp): ...this new insn.
    (movhi_sp_r_irq_off, movhi_sp_r_irq_on): Combine to...
    (movhi_sp_r): ...this new insn.
    * config/avr/avr-protos.h (avr_accumulate_outgoing_args): New.
    (avr_starting_frame_offset): New.
    * config/avr/avr.c (avr_accumulate_outgoing_args): New function.
    (avr_starting_frame_offset): New function.
    (avr_outgoing_args_size): New static function.
    (avr_initial_elimination_offset): Use it.
    (avr_simple_epilogue): Use it.
    (avr_asm_function_end_prologue): Use it.
    (expand_epilogue): Use it.
    (expand_prologue): Use it.  Break out code to...
    (avr_prologue_setup_frame): ...this new static function.
    (avr_can_eliminate): Allow eliminating to frame pointer if there
    is one.
    (avr_frame_pointer_required_p): Use frame pointer if target has a
    nonlocal label.
    * config/avr/constraints.md (R): Remove.
    (Csp): New constraint.
    * config/avr/predicates.md (avr_sp_immediate_operand): Use it.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr-protos.h
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.h
    trunk/gcc/config/avr/avr.md
    trunk/gcc/config/avr/avr.opt
    trunk/gcc/config/avr/constraints.md
    trunk/gcc/config/avr/predicates.md


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]