> -----Original Message-----
> From: Robert Suchanek [mailto:robert.sucha...@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

Reply via email to