This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [PATCH, MIPS] Support new interrupt handler options
- From: "Moore, Catherine" <Catherine_Moore at mentor dot com>
- To: Robert Suchanek <Robert dot Suchanek at imgtec dot com>, Matthew Fortune <Matthew dot Fortune at imgtec dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 14 Jul 2015 21:24:11 +0000
- Subject: RE: [PATCH, MIPS] Support new interrupt handler options
- Authentication-results: sourceware.org; auth=none
- References: <B5E67142681B53468FAF6B7C31356562441AA1F3 at hhmail02 dot hh dot imgtec dot org> <FD3DCEAC5B03E9408544A1E416F112420192C8986A at NA-MBX-04 dot mgc dot mentorg dot com> <B5E67142681B53468FAF6B7C31356562441AB2FF at hhmail02 dot hh dot imgtec dot org>
> -----Original Message-----
> From: Robert Suchanek [mailto:Robert.Suchanek@imgtec.com]
> Sent: Tuesday, July 14, 2015 11:14 AM
> To: Moore, Catherine; Matthew Fortune; gcc-patches@gcc.gnu.org
> Subject: RE: [PATCH, MIPS] Support new interrupt handler options
>
> Hi Catherine,
>
> > I'm getting build errors with the current TOT and your patch.
> >
> > The first errors that I encounter are:
> > gcc/config/mips/mips.c:1355:1: warning: 'mips_int_mask
> > mips_interrupt_mask(tree)' defined but not used [-Wunused-function]
> > gcc/config/mips/mips.c:1392:1: warning: 'mips_shadow_set
> > mips_use_shadow_register_set(tree)' defined but not used
> > [-Wunused-function]
> >
> > Removing these two functions results in further errors that I have not
> > investigated.
> > Will you try applying and building your patch again?
>
> I have no explanation why this could happen. My guess is that a part of the
> patch did not apply correctly. Those functions are used in
> mips_compute_frame_info().
>
> I did notice and fixed warnings about unused variables/arguments.
I re-ran patch with the verbose option and found that it was silently discarding hunks (starting with #7) because it thought it was garbage.
>
> >
> > I have a couple of further comments on the existing patch, see below.
>
> Comments added. Please have a look at the attached revised patch.
> Tested against r225768.
>
> Regards,
> Robert
>
>
> gcc/
> * config/mips/mips.c (mips_int_mask): New enum.
> (mips_shadow_set): Likewise.
> (int_mask): New variable.
> (use_shadow_register_set_p): Change type to enum
> mips_shadow_set.
> (machine_function): Add int_mask and use_shadow_register_set.
> (mips_attribute_table): Add attribute handlers for interrupt and
> use_shadow_register_set.
> (mips_interrupt_mask): New static function.
> (mips_handle_interrupt_attr): Likewise.
> (mips_handle_use_shadow_register_set_attr): Likewise.
> (mips_use_shadow_register_set): Change return type to enum
> mips_shadow_set. Add argument handling for
> use_shadow_register_set
> attribute.
> (mips_interrupt_extra_called_saved_reg_p): Update the conditional
> to
> compare with mips_shadow_set enum.
> (mips_compute_frame_info): Add interrupt mask and
> use_shadow_register_set to per-function information structure.
> Add a stack slot for EPC unconditionally.
> (mips_expand_prologue): Compare use_shadow_register_set value
> with mips_shadow_set enum. Save EPC always in K1, clobber only K1
> for
> masked interrupt register but in EIC mode use K0 and save Cause in
> K0.
> EPC saved and restored unconditionally. Use PMODE_INSN macro
> when
> copying the stack pointer from the shadow register set.
> * config/mips/mips.h (SR_IM0): New define.
> * config/mips/mips.md (mips_rdpgpr): Rename to...
> (mips_rdpgpr_<mode>): ...this. Use the Pmode iterator.
> * doc/extend.texi (Declaring Attributes of Functions): Document
> optional arguments for interrupt and use_shadow_register_set
> attributes.
>
> gcc/testsuite/
> * gcc.target/mips/interrupt_handler-4.c: New test.
This is now OK to commit.
Catherine