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