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/14798] [3.4/4.0/4.1/4.2 Regression] In case of SH target with -O2 option #pragma interrupt doesn't get resetted.



------- Comment #21 from amylaar at gcc dot gnu dot org  2006-01-30 15:07 -------
Subject: Bug 14798

Author: amylaar
Date: Mon Jan 30 15:07:43 2006
New Revision: 110398

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110398
Log:
PR target/14798:

gcc:
        * sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
        (pragma_trap, pragma_nosave_low_regs): Likewise.
        (current_function_anonymous_args): Likewise.
        (sh_deferred_function_attributes): New variable.
        (sh_deferred_function_attributes_tail): Likewise.
        (print_operand): For '@', look up trap_exit attribute.
        (calc_live_regs): Look up trapa_handler attribute.  For trapa
        handlers, save/restore fpscr, but don't do any other
        interrupt-specific saves.
        Don't save r0..r7 if the nosave_low_regs attribute is in effect.
        Fix check for partially saved registers to check for SHmedia.
        (sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
        (sh_output_function_epilogue): Don't clear any of the removed
        variables.
        (sh_insert_attributes): Don't check pragma_interrupt.
        Insert deferred attributes.  Check that interrupt attribute is
        present for other attributes that require its presence.
        (sh_attribute_table): Add new attributes trapa_handler and
        nosave_low_regs.
        (sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
        Don't check for pragma_interrupt.  Don't store argument.
        * sh.h (pragma_interrupt, sp_switch): Don't declare.
        (sh_deferred_function_attributes): Declare.
        (sh_deferred_function_attributes_tail): Likewise.
        * sh.md (sp_switch_1): Add operand.  Change generator caller.
        (sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
        (*return_i): Don't use when trap_exit attribute is in effect.
        (*return_trapa): New insn pattern.
        * sh-c.c: New file.
        * config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
        setting c_target_objs and cxx_target_objs.
        * t-sh: Add rule for sh-c.o.
gcc/testsuite:
        * gcc.dg/pragma-isr.c: Added target sh[1234ble]*-*-*.
        * gcc.dg/pragma-isr2.c, gcc.dg/pragma-isr-trapa.c: New tests.
        * gcc.dg/pragma-isr-trapa2.c: Likewise.
        * gcc.dg/pragma-isr-nosave_low_regs.c: Likewise.
        * gcc.dg/pragma-isr-trap_exit.c: Likewise.
        * gcc.dg/attr-isr.c, gcc.dg/attr-isr-trapa.c: Likewise.
        * gcc.dg/attr-isr-trap_exit.c: Likewise.
        * gcc.dg/attr-isr-nosave_low_regs.c: Likewise.

Added:
    trunk/gcc/config/sh/sh-c.c
    trunk/gcc/testsuite/gcc.dg/attr-isr-nosave_low_regs.c
    trunk/gcc/testsuite/gcc.dg/attr-isr-trap_exit.c
    trunk/gcc/testsuite/gcc.dg/attr-isr-trapa.c
    trunk/gcc/testsuite/gcc.dg/attr-isr.c
    trunk/gcc/testsuite/gcc.dg/pragma-isr-nosave_low_regs.c
    trunk/gcc/testsuite/gcc.dg/pragma-isr-trap_exit.c
    trunk/gcc/testsuite/gcc.dg/pragma-isr-trapa.c
    trunk/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
    trunk/gcc/testsuite/gcc.dg/pragma-isr2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config.gcc
    trunk/gcc/config/sh/sh.c
    trunk/gcc/config/sh/sh.h
    trunk/gcc/config/sh/sh.md
    trunk/gcc/config/sh/t-sh
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/pragma-isr.c


-- 


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


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