FPC 3.0 inline modifier funktioniert nicht
-
- 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
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
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;
-
- Beiträge: 6918
- 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
Mir mir sieht es so aus, egal ob mit oder ohne inline.
Linux Mint 64bit.
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;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1102
- 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
"inline;" ist formell einen Hint, keine Garantie.
-
- 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
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
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;
-
- Beiträge: 1102
- 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
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.
Und ich kann es auch mit 3.1.1 reproduzieren.
-
- Lazarusforum e. V.
- Beiträge: 3178
- 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
Der Compiler gibt Informationen aus, wenn eine mit inline markierte Methode nicht beachtet werden kann.
Der Compiler Switch is -vd (Compilereinstellungen -> Ausführlichkeit)
Der Compiler Switch is -vd (Compilereinstellungen -> Ausführlichkeit)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: FPC 3.0 inline modifier funktioniert nicht
Hier funktioniert es. Kannst Du mal bitte das komplette Projekt posten?