AVR removed in GCC 16 ?

OP #7881008
Lesenswert?

Hallo,

wenn ich das richtig verstehe wird der AVR Support in GCC 16 entfernt weil das neue LRA nicht unterstützt wird?

This is the last release supporting the old reload local register allocation code. It will be removed for GCC 16, causing targets that do not support the new LRA local register allocation code to be removed. See the list of supported targets for which ports are going to be affected (look for missing a, the ports that do not use LRA by default).

1
a       Port uses LRA (by default, i.e. unless overridden by a switch).
2

3
           |      Characteristics
4
Target     | HMSLQNFICBD lqrpbfmgiates
5
avr        |    L  FI    l  p   g

Verstehe ich das falsch oder muss jetzt etwas gemacht werden?

Grüße

https://gcc.gnu.org/gcc-15/changes.html https://gcc.gnu.org/backends.html

Persönliche Seite #7881070
Lesenswert?

Thomas H. schrieb:

wenn ich das richtig verstehe wird der AVR Support in GCC 16 entfernt weil das neue LRA nicht unterstützt wird? Verstehe ich das falsch oder muss jetzt etwas gemacht werden?

Immerhin wird -mlra unterstützt, ist aber nicht default weil es noch mindestens einen Fall gibt, wo LRA falschen Code erzeugt (mit -Os -mmcu=atmega8 -mlra):

1
__attribute__((noipa))
2
void func2 (long long a1, long long a2, long b)
3
{
4
  static unsigned char count = 0;
5
  if (b != count++)
6
    __builtin_abort ();
7
}
8

9
int main (void)
10
{
11
  for (long b = 0; b < 5; ++b)
12
    {
13
      __asm ("/* some reg pressure */" ::: "r5", "r9");
14
      func2 (0, 0, b);
15
    }
16

17
  return 0;
18
}

https://gcc.gnu.org/PR118591

OP #7884522
Lesenswert?

Mein AVR ASM war etwas eingerostet, das habe ich nun aufgefrischt. Die Beispiele hab ich verstanden, auch den erzeugen ASM Code sowie den falsch erzeugten. Mit -O1 wird denke ich kein falscher Code erzeugt und der vorgeschlagener Patch mit optimize_function_for_size_p() zielt auch auf eine Optimierung hin. Also werde ich mich mal weiter in die Richtung damit beschäftigen.

OP #7899492
Lesenswert?

Da bin ich aber erleichtert. Vielen Dank für deine Mühen! (und auch die von vielen anderen).

Ich habe noch ein wenig im GCC Bugtracker mitgelesen. Das scheint ja doch etwas Architektur übergreifendes gewesen zu sein.

Was passiert mit den Architekturen die kein a haben? Das sind ja doch einige, auch wenn ich von vielen noch nie etwas gehört habe.

Persönliche Seite #7899727
Lesenswert?

Thomas H. schrieb:

Was passiert mit den Architekturen die kein a haben?

Eine bessere Übersicht über Backends, die LRA nicht (per default) unterstützen), gibt der entsprechende PR: https://gcc.gnu.org/PR113932

Gibt mehrere Möglichkeiten:

  • LRA wird optional unterstützt ist aber nicht Default (zB: sh, vax, pdp11): Prinzipiell könnte man den LRA-Schalter umlegen und hätte ein "a" in backends.html. Für vax gibt es aber Dinge, die nicht funktionieren. Konkret genannt wird Exception Handler Unwinding (also C++ Exceptions). Ganz übel sieht's für sh aus: https://gcc.gnu.org/PR55212 wo einem der Build mit aktiviertem LRA um die Ohren fliegt.

  • backends.html ist nicht aktuell. Diese Datei ist Teil der GCC Webseite und nicht Teil der GCC Quellen. Ist also nicht ausgeschlossen, dass entsprechende Einträge nicht aktuell sind. So wurden beispielsweise die tile* Backends aus GCC entfernt weil diese aus GlibC und Linux entfernt wurden (tile* unterstützte nur *-linux Konfigurationen), sind aber noch in backends gelistet.

Was schlussendlich passieren wird, etwa mit sh, vermag ich nicht zu sagen. Da bleiben auch mir nur Kristallkugel und Popkorn. Für eine informiertere Antwort kannst du in der gcc@ Mailing Liste fragen: https://gcc.gnu.org/mailman/listinfo/gcc

OP #7901297
Lesenswert?

Vielen Dank für deine ausführliche Antwort. SH ist die SuperH Architektur. Laut Wikipedia war so ein Chip in dem ELSA Microlink 56k Internet II Modem verbaut dass ich noch bis vor 6 Jahren hatte =)

Irgendwie schade wenn für solche alten Architekturen kein Quelltext mehr compiliert werden kann. Aber zumindest funktioniert AVR weiterhin, die werden ja auch noch hergestellt.

Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren