This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Have ira-conflicts.c use base_reg_class()


Nick Clifton wrote:
Hi Bernd,

  The bfin port is not currently building in the gcc mainline because
  ira-conflicts.c needs a definition of BASE_REGS_CLASS.  The patch
  below adds one, although I am not 100% sure that I have used the
  right value.

IMO ira-conflicts.c needs to be fixed to accept MODE_CODE_BASE_REG_CLASS like everything else.

Thanks for trying to fix this, but this patch is clearly wrong.

Fair enough - in which case please could you review the attached patch. It changes ira-conflicts.c to use the base_reg_class() inline function defined in addresses.h which will use MODE_CODE_BASE_REG_CLASS if it is defined. I had to guess at the parameters to pass to base_reg_class() but I think their exact values will not matter too much.


Tested by rebuilding a lot of toolchains[1], including bfin-elf and by preforming a regression test of the gcc testsuite for an i686-pc-linux-gnu toolchain. (There were no regressions).

OK to apply ?

I am looking at the original code and see two BASE_REG_CLASS occurrences

 if (! CLASS_LIKELY_SPILLED_P (BASE_REG_CLASS))
   CLEAR_HARD_REG_SET (temp_hard_reg_set);
 else
   {
     COPY_HARD_REG_SET (temp_hard_reg_set,
            reg_class_contents[BASE_REG_CLASS]);
     AND_COMPL_HARD_REG_SET (temp_hard_reg_set, ira_no_alloc_regs);
     AND_HARD_REG_SET (temp_hard_reg_set, call_used_reg_set);
   }

Your patch contains only one change. You should change the second occurrence too (in reg_class_contents). Your patch also uses

base_reg_class (VOIDmode, REG, REG)

I'd use

base_reg_class (VOIDmode, ADDRESS, SCRATCH)

because the code, as I remember, is necessary to guarantee that reload finds a register for address to do spill.

With these two changes the patch is ok.


Thanks for the patch and checking the ports, Nick.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]