Forum: Compiler & IDEs AVR removed in GCC 16 ?


von Thomas H. (thux)


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

von Johann L. (gjlayde) Benutzerseite


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

von Thomas H. (thux)


Lesenswert?

Ah danke, ich versuche am nächsten freien Tag mal etwas davon zu 
verstehen.

von Thomas H. (thux)


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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Thomas H. schrieb:
> 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.

Das Patch wurde abgelehnt weil es nicht die Ursache behebt:

https://gcc.gnu.org/pipermail/gcc-patches/2025-April/681859.html

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.