This is the mail archive of the gcc-patches@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]

Re: [Patch,AVR]: Support -maccumulate-args option


2011/10/27 Georg-Johann Lay <avr@gjlay.de>:
> This is support of a new option -maccumulate-args that implements
> ACCUMULATE_OUTGOING_ARGS as proposed by Richard.
>
> As 4.7 will be released very soon, I'd like to supply the documentation part
> later and use the remaining stage I time for extension/improvements.
>
> The tests ran 4 times with either combination of
> Â-m[no-]call-prologues
> Â-m[no-]accumulate-args
>
> The results for the C testsuite are:
>
> -maccumulate-args
> Â ÂPASS -> FAIL
> Â Âgcc.dg/compat/struct-by-value-16a
> Â Âgcc.dg/compat/struct-by-value-17a
> Â Âgcc.dg/compat/struct-by-value-18a
>
> -maccumulate-args
> -mcall-prologues
> Â ÂPASS -> FAIL
> Â Âgcc.dg/compat/struct-by-value-16a
> Â Âgcc.dg/compat/struct-by-value-17a
> Â Âgcc.dg/compat/struct-by-value-18a
> Â Âgcc.dg/sibcall-3.c
> Â Âgcc.dg/sibcall-4.c
>
> Â ÂFAIL -> PASS
> Â Âgcc.dg/torture/pta-ptrarith-3.c
>
> -mcall-prologues
> Â ÂPASS -> FAIL
> Â Âgcc.dg/sibcall-3.c
> Â Âgcc.dg/sibcall-4.c
>
> Â ÂFAIL -> PASS
> Â Âgcc.dg/torture/pta-ptrarith-3.c
>
> All FAILs runtime fails.
> Â- struct-by-value-* use extrem RAM (overflow)
> Â- sibcall-* fail because that optimization is off
> Â with -mcall-prologues
> Â- the FAILs of pta-ptrarith-3 are PR50063.
>
> There are no changes in the C++ testsuite.
>
> Ok for trunk?
>
> Johann
>
> Â Â Â Â* 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 (Csp): New constraint.
> Â Â Â Â* config/avr/predicates.md (avr_sp_immediate_operand): Use it.
>


Please commit.

Denis.


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