https://sourceware.org/bugzilla/show_bug.cgi?id=32704

--- Comment #1 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Georg-Johann Lay <g...@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0d93e61c318823da567053d8f1561c78e2efcf06

commit 0d93e61c318823da567053d8f1561c78e2efcf06
Author: Georg-Johann Lay <a...@gjlay.de>
Date:   Sun Feb 16 18:43:56 2025 +0100

    AVR: gas/32704 - Improve code generation for __gcc_isr.

    The prologue generated by __gcc_isr can be improved in
    situations where:

    * ZERO_REG is needed, and
    * SREG is not clobbered by the ISR, and
    * avr-gcc provides a GPR >= R16 with the Done chunk, and
    * Code generation is for ordinary AVRs (not AVRrc).

    For example, the prologue for

    volatile char var;

    __attribute__((signal)) void __vector_1 (void)
    {
        var = 1;
        var = 0;
    }

    may be

    00000000 <__vector_1>:
       0:   8f 93           push    r24
       2:   1f 92           push    r1
       4:   80 e0           ldi     r24, 0
       6:   18 2e           mov     r1, r24

    instead of the code as currently generated by GAS:

    00000000 <__vector_1>:
       0:   1f 92           push    r1
       2:   1f b6           in      r1, SREG
       4:   1f 92           push    r1
       6:   11 24           clr     r1
       8:   8f 93           push    r24

    which consumes more stack, time and code than needed.

    gas/
            PR gas/32704
            PR gas/21683
            * config/tc-avr.c (avr_isr): bool-ize.
            (avr_emit_insn): Emit "mov" code as  MOV R1,<reg>.
            (avr_isr_stack_t): New typedef.
            (avr_emit_push, avr_emit_pop): New static functions.
            (avr_patch_gccisr_frag): Overhaul prologue and epilogue
            generation.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to