[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.
amylaar at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Jan 30 16:19:00 GMT 2006
------- Comment #22 from amylaar at gcc dot gnu dot org 2006-01-30 16:19 -------
Subject: Bug 14798
Author: amylaar
Date: Mon Jan 30 16:19:11 2006
New Revision: 110401
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110401
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.
* config/sh/sh.c (sh_cfun_trap_exit_p): New function.
* sh-protos.h (sh_cfun_trap_exit_p): Declare.
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:
branches/gcc-4_1-branch/gcc/config/sh/sh-c.c
- copied unchanged from r110398, trunk/gcc/config/sh/sh-c.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/attr-isr-nosave_low_regs.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/attr-isr-nosave_low_regs.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/attr-isr-trap_exit.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/attr-isr-trap_exit.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/attr-isr-trapa.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/attr-isr-trapa.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/attr-isr.c
- copied unchanged from r110398, trunk/gcc/testsuite/gcc.dg/attr-isr.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr-nosave_low_regs.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/pragma-isr-nosave_low_regs.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr-trap_exit.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/pragma-isr-trap_exit.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr-trapa.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/pragma-isr-trapa.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
- copied unchanged from r110398,
trunk/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr2.c
- copied unchanged from r110398, trunk/gcc/testsuite/gcc.dg/pragma-isr2.c
Modified:
branches/gcc-4_1-branch/gcc/ChangeLog
branches/gcc-4_1-branch/gcc/config.gcc
branches/gcc-4_1-branch/gcc/config/sh/sh-protos.h
branches/gcc-4_1-branch/gcc/config/sh/sh.c
branches/gcc-4_1-branch/gcc/config/sh/sh.h
branches/gcc-4_1-branch/gcc/config/sh/sh.md
branches/gcc-4_1-branch/gcc/config/sh/t-sh
branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/pragma-isr.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14798
More information about the Gcc-bugs
mailing list