avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-gcc-list] RE: [Bug target/31786] error: unable to find a register t


From: Eric Weddington
Subject: [avr-gcc-list] RE: [Bug target/31786] error: unable to find a register to spill in class 'BASE_POINTER_REGS'
Date: Thu, 03 May 2007 06:46:22 -0600

 

> -----Original Message-----
> From: Ralf Corsepius [mailto:address@hidden 
> Sent: Thursday, May 03, 2007 3:36 AM
> To: address@hidden
> Cc: address@hidden; Joel Sherrill
> Subject: Re: [Bug target/31786] error: unable to find a 
> register to spill in class 'BASE_POINTER_REGS'
> 
> On Thu, 2007-05-03 at 09:27 +0000, ralf_corsepius at rtems dot org
> wrote:
> > Eric, due to bugzilla's current brokenness, I am sending 
> you the *.i on PM.
> 
> Please find enclosed.
> 
> The original failing call is this:
> 
>  
> /users/rtems/src/rpms/BUILD/rtems-4.8-avr-rtems4.8-gcc-4.2.0/b
> uild/./gcc/xgcc 
> -B/users/rtems/src/rpms/BUILD/rtems-4.8-avr-rtems4.8-gcc-4.2.0
> /build/./gcc/ -nostdinc 
> -B/users/rtems/src/rpms/BUILD/rtems-4.8-avr-rtems4.8-gcc-4.2.0
> /build/avr-rtems4.8/newlib/ -isystem 
> /users/rtems/src/rpms/BUILD/rtems-4.8-avr-rtems4.8-gcc-4.2.0/b
> uild/avr-rtems4.8/newlib/targ-include -isystem 
> /users/rtems/src/rpms/BUILD/rtems-4.8-avr-rtems4.8-gcc-4.2.0/g
> cc-4.2.0-20070501/newlib/libc/include 
> -B/opt/rtems-4.8/avr-rtems4.8/bin/ 
> -B/opt/rtems-4.8/avr-rtems4.8/lib/ -isystem 
> /opt/rtems-4.8/avr-rtems4.8/include -isystem 
> /opt/rtems-4.8/avr-rtems4.8/sys-include 
> -DPACKAGE_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" 
> -DPACKAGE_VERSION=\"1.15.0\" -DPACKAGE_STRING=\"newlib\ 
> 1.15.0\" -DPACKAGE_BUGREPORT=\"\"  -I. 
> -I../../../../../../gcc-4.2.0-20070501/newlib/libc/misc -Os 
> -DPREFER_SIZE_OVER_SPEED -mcall-prologues -DMALLOC_PROVIDED 
> -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED 
> -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR -DNO_EXEC 
> -DHAVE_FCNTL -fno-builtin      -O2 -g -O2   -mmcu=avr25 -c -o 
> lib_a-init.o `test -f 'init.c' || echo 
> '../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/'`init.c
> ../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/init.c: 
> In function '__libc_fini_array':
> ../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/init.c:5
> 9: error: unable to find a register to spill in class 
> 'BASE_POINTER_REGS'
> ../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/init.c:5
> 9: error: this is the insn:
> (insn 84 55 56 4 
> ../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/init.c:5
> 6 (set (mem/c:HI (plus:HI (reg/f:HI 28 r28)
>                 (const_int 1 [0x1])) [5 S2 A8])
>         (reg:HI 24 r24)) 12 {*movhi} (nil)
>     (nil))
> ../../../../../../gcc-4.2.0-20070501/newlib/libc/misc/init.c:5
> 9: confused by earlier errors, bailing out
> 
> Removing -O2 (and hence picking up -Os) lets it succeed:

Hi Ralf,

I agree with your latest post on the bug report. 
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31786>
Yes, this is a real bug that does need to get fixed at some point.

However, as a workaround only, is there some reason why RTEMS cannot use
avr-libc for the AVR? Avr-libc is better maintained then newlib for the AVR
target.

As another note, it would make more sense if newlib used -Os for the AVR
rather than -O2. Usually, code size is a stronger constraint for the AVR.

Eric Weddington





reply via email to

[Prev in Thread] Current Thread [Next in Thread]