[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.

2006-01-30 Thread amylaar at gcc dot gnu dot org


--- Comment #23 from amylaar at gcc dot gnu dot org  2006-01-30 17:22 
---
Fixed on mainline and the 4.1 branch.


-- 

amylaar at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[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.

2006-01-30 Thread amylaar at gcc dot gnu dot org


--- 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



[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.

2006-01-30 Thread amylaar at gcc dot gnu dot org


--- 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



[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.

2006-01-26 Thread amylaar at gcc dot gnu dot org


--- Comment #20 from amylaar at gcc dot gnu dot org  2006-01-26 15:22 
---
http://gcc.gnu.org/ml/gcc-patches/2006-01/msg01782.html was regression tested
successfully for sh-elf in Revision 110178.
However, it makes sense to write or collect a number of new test cases to test
the affected pragmas and attributes.


-- 

amylaar at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |amylaar at gcc dot gnu dot
   |dot org |org
URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2006-
   ||01/msg01782.html
 Status|NEW |ASSIGNED
   Last reconfirmed|2005-06-04 16:55:35 |2006-01-26 15:22:23
   date||


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



[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.

2006-01-25 Thread amylaar at gcc dot gnu dot org


--- Comment #19 from amylaar at gcc dot gnu dot org  2006-01-25 17:27 
---
There is even more wrong with the way we translate function pro-epilogue
affecting pragmas to attributes.
When we used only pragmas, the pragma could placed not only in front of the
function, but also anywhere within the function, and it would affect the
prologue/epilogue generation of that function.
In order to restore this behaviour, the pragma hooks should check cfun, and
apply the pragma to the current function if cfun is set.


-- 

amylaar at gcc dot gnu dot org changed:

   What|Removed |Added

 CC|joern dot rennecke at superh|joern dot rennecke at st dot
   |dot com |com


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



[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.

2005-12-16 Thread kazu at gcc dot gnu dot org


--- Comment #18 from kazu at gcc dot gnu dot org  2005-12-17 02:27 ---
Anil, would you care to post your patch on gcc-patches?
In general, people don't review patches in PRs.


-- 


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