This bug is seen using the avr-gcc that gets built by the script that comes
with FemtoOS 0.88.

reg...@john-home:~/volatile/tmp140$ avr-gcc -O1 small.c
small.c: In function 'uint32func':
small.c:22: error: unable to find a register to spill in class 'POINTER_REGS'
small.c:22: error: this is the insn:
(insn 61 59 141 4 small.c:20 (set (reg:SI 24 r24 [55])
        (ashiftrt:SI (subreg:SI (reg/v:DI 46 [ p_48 ]) 0)
            (const_int 31 [0x1f]))) 60 {ashrsi3} (nil))
small.c:22: confused by earlier errors, bailing out

reg...@john-home:~/volatile/tmp140$ avr-gcc -v         

Using built-in specs.
Target: avr
Configured with: ../gcc-4.3.3/configure --prefix=/home/regehr/avr-gcc-test
--target=avr --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-nls
--disable-libssp --with-dwarf2
Thread model: single
gcc version 4.3.3 (GCC) 

reg...@john-home:~/volatile/tmp140$ cat small.c

typedef int uint64_t __attribute__ ((__mode__ (__DI__)));

static long int safe_mod_func_int32_t_s_s (long int _si1, long int _si2)
{
  return -1 ? _si1 : 1;
}

uint64_t safe_sub_func_uint64_t_u_u (uint64_t _ui1, uint64_t _ui2)
{
  return 0;
}

int foo (int,int,int);
int bar (int);

long int g_14; 

int uint32func (uint64_t p_48)
{
  return foo (safe_mod_func_int32_t_s_s (p_48, 0) ==
       safe_sub_func_uint64_t_u_u (g_14, 1), bar (g_14 == 1), 1);
}


-- 
           Summary: ice for AVR target: unable to find a register to spill
                    in class 'POINTER_REGS'
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: regehr at cs dot utah dot edu
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: avr


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

Reply via email to