The following test case, simplified from newlib's libgloss/spu/sbrk.c, breaks a
combined SPU build.  This test case works if sp_r1 is declared globally.  

It fails at the new assert in cfgexpand.c:expand_one_var() which tests
DECL_HARD_REGISTER.

void *
sbrk (unsigned int increment)
{
  volatile register
    __attribute__ ((__spu_vector__)) unsigned int sp_r1 __asm__ ("1");
  unsigned int sps;

  sps = __builtin_spu_extract (sp_r1, 0);
  if (sps - 4096 >= increment)
    return 0;
  else
    return ((void *) -1);
}


-- 
           Summary: [4.5 Regression] r1467817 broke libgloss build for SPU
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: regression
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tsmigiel at gcc dot gnu dot org
GCC target triplet: spu-*-*


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

Reply via email to