mikrocontroller.net

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


Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
sensor->pressurereservend=sensor->mreserve*adc->float_ch[0]+sensor->breserve;
 sensor->pressurereservehpleft=MPRESERVELEFT*adc->float_ch[1]+BPRESERVELEFT;
 sensor->pressurereservehpright=MPRESERVERIGHT*adc->float_ch[2]+BPRESERVERIGHT;
 sensor->pressuresystem=sensor->msystem*adc->float_ch[3]+sensor->bsystem;
 sensor->pressureafterfilter=sensor->mfilter*adc->ch[4]+sensor->bfilter;
Durch umsoriteren der Zeilen verschwindet der Fehler.
 sensor->pressureafterfilter=sensor->mfilter*adc->ch[4]+sensor->bfilter;
 sensor->pressurereservend=sensor->mreserve*adc->float_ch[0]+sensor->breserve;
 sensor->pressurereservehpleft=MPRESERVELEFT*adc->float_ch[1]+BPRESERVELEFT;
 sensor->pressurereservehpright=MPRESERVERIGHT*adc->float_ch[2]+BPRESERVERIGHT;
 sensor->pressuresystem=sensor->msystem*adc->float_ch[3]+sensor->bsystem;

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach was soll ich denn dort suchen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: micro1 (Gast)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.