FPC 3.0 inline modifier funktioniert nicht

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

FPC 3.0 inline modifier funktioniert nicht

Beitrag von MAC »

Hallo,

Ich habe festgestellt, das beim aktuellen Lazarus 1.6 32bit inline Methoden nicht funktionieren.
Das nach Zu prüfen ist ganz einfach, eine Form erstellten mit button drauf. Eine private Methode mit inline. Eine variable X die der Form zugeordnet ist. Beim button klick x := 0 setzen und die inline Methode aufrufen. Und dort x := 1 setzten.
Dem switch {$Inline on} verwenden und kompilieren.
Unter Assembler nach schauen. Es wird ein "call" aufgerufen.

Ich bin gerade mobil unterwegs, auf Anfrage kann ich gleich auch ein Sample Code hochladen.

Kann jemand das verhalten mal testen ?
Win10, Lazarus 1.6 32bit fpc 3.0.0, 64bit OS

Viele grüße,
Marcel

Code: Alles auswählen

Signatur := nil;

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von Mathias »

Mir mir sieht es so aus, egal ob mit oder ohne inline.

Code: Alles auswählen

000000000048C92D 488975f8                 mov    %rsi,-0x8(%rbp)
unit1.pas:38                              test;
000000000048C931 488b45f0                 mov    -0x10(%rbp),%rax
000000000048C935 4889c7                   mov    %rax,%rdi
000000000048C938 e813000000               callq  0x48c950 <TEST>
unit1.pas:39                              end;


Linux Mint 64bit.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von marcov »

"inline;" ist formell einen Hint, keine Garantie.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von MAC »

Das mit dem Hint hab ich auch gelesen: http://www.freepascal.org/docs-html/ref ... 00014.10.4
Allerdings steht da, dass inline missachtet wird wenn es für den Compiler nicht möglich ist den Hinweis umzusetzen und bei diesem einfachen Beispiel kann ich mir das schwer vorstellen.
Und wenn es immer ignoriert wird (was hier natürlich NOCH NICHT mit bewiesen ist) könnte es ja auch gut ein Fehler im Compiler sein.

Danke für das überprüfen :)

Code: Alles auswählen

Signatur := nil;

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von marcov »

Ich glaube eine die Fälle ist jenseits importieren (A uses B im Interface, B uses A im Implementation).

Und ich kann es auch mit 3.1.1 reproduzieren.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von Socke »

Der Compiler gibt Informationen aus, wenn eine mit inline markierte Methode nicht beachtet werden kann.
Der Compiler Switch is -vd (Compilereinstellungen -> Ausführlichkeit)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: FPC 3.0 inline modifier funktioniert nicht

Beitrag von FPK »

Hier funktioniert es. Kannst Du mal bitte das komplette Projekt posten?

Antworten