Forum: Compiler & IDEs unable to find a register to spill in class 'POINTER_REGS'


von micro1 (Gast)


Lesenswert?

Hallo,

ich bekomme folgende Fehlermeldung. Welhe ich zum ersten mal sehe.
Compiling C: fscontroll.c
avr-gcc -c -mmcu=atmega1280 -I. -gdwarf-2 -DF_CPU=16000000UL  -DGERMAN 
-O3 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums 
-Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/fscontroll.lst 
-std=gnu99 -Wundef -MD -MP -MF .dep/fscontroll.o.d fscontroll.c -o 
obj/fscontroll.o
fscontroll.c: In function 'meas_sensors':
fscontroll.c:685: error: unable to find a register to spill in class 
'POINTER_REGS'
fscontroll.c:685: error: this is the insn:
(insn 416 414 417 36 fscontroll.c:627 (set (reg:SF 46 [ D.1966 ])
        (mem/s:SF (post_inc:HI (reg/v/f:HI 14 r14 [orig:63 adc ] [63])) 
[6 <variable>.float_ch+4 S4 A8])) 15 {*movsf} (insn_list:REG_DEP_TRUE 
415 (nil))
    (expr_list:REG_INC (reg/v/f:HI 14 r14 [orig:63 adc ] [63])
        (nil)))
fscontroll.c:685: confused by earlier errors, bailing out
make.exe : *** [obj/fscontroll.o] Error 1

Was bedeutet diese Fehlermeldung.
Dies entsteht durch folgedne Zeilen:
1
sensor->pressurereservend=sensor->mreserve*adc->float_ch[0]+sensor->breserve;
2
 sensor->pressurereservehpleft=MPRESERVELEFT*adc->float_ch[1]+BPRESERVELEFT;
3
 sensor->pressurereservehpright=MPRESERVERIGHT*adc->float_ch[2]+BPRESERVERIGHT;
4
 sensor->pressuresystem=sensor->msystem*adc->float_ch[3]+sensor->bsystem;
5
 sensor->pressureafterfilter=sensor->mfilter*adc->ch[4]+sensor->bfilter;
1
Durch umsoriteren der Zeilen verschwindet der Fehler.
2
 sensor->pressureafterfilter=sensor->mfilter*adc->ch[4]+sensor->bfilter;
3
 sensor->pressurereservend=sensor->mreserve*adc->float_ch[0]+sensor->breserve;
4
 sensor->pressurereservehpleft=MPRESERVELEFT*adc->float_ch[1]+BPRESERVELEFT;
5
 sensor->pressurereservehpright=MPRESERVERIGHT*adc->float_ch[2]+BPRESERVERIGHT;
6
 sensor->pressuresystem=sensor->msystem*adc->float_ch[3]+sensor->bsystem;

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Geh mal nach http://gcc.gnu.org/bugzilla/ und guck mal, ob's dafür
schon einen Bug gibt (und wie der Bearbeitungsstand ist).  Wenn
es noch keinen gibt, schneide deinen Sourcecode auf das Minimum
zusammen, das man braucht, um den Bug zu reproduzieren, und hinterlasse
ebenda einen Bugreport.

von micro1 (Gast)


Lesenswert?

Nach was soll ich denn dort suchen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

micro1 wrote:

> Nach was soll ich denn dort suchen?

Na zum Beispiel nach dem, was du hier als subject für den Thread
genommen hast.  Wenn du zu viel findest, gehe auf die erweiterte
Suche und grenze das "target triplet" auf "avr-*-*" ein.

von micro1 (Gast)


Lesenswert?

Es gibt den Bug schon. Aber wenn ich die Optimierung von 3 auf 0 stelle
geht es einwandfrei.

von Andreas K. (a-k)


Lesenswert?

> Es gibt den Bug schon. Aber wenn ich die Optimierung von 3 auf 0 stelle
> geht es einwandfrei.

Es liegt in der Natur der Sache, dass manche Compilerbugs nur mit 
eingeschalteter Optimierung auftreten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.