[fpc-devel] "inline" issue

Sven Barth pascaldragon at googlemail.com
Fri Apr 26 23:20:32 CEST 2019

Am 26.04.2019 um 22:41 schrieb J. Gareth Moreton:
> On 26/04/2019 21:29, Sven Barth via fpc-devel wrote:
>> ...
>> You did read what Jonas said in the bug report? Adding "inline" in 
>> the implementation section for the interface section would need to 
>> lead to a change of the interface CRC which is a no-go once the 
>> interface section has been handled (and has lead to enough problems 
>> in the past, so fixing this remaining problem is definitely 
>> important). If another unit should inline something then the "inline" 
>> directive needs to be in the interface section, because that's the 
>> purpose of the interface section.
> I did.  I did talk with Jonas privately about the issue, because I did 
> try to fix the compiler so you couldn't do this.  The problem is, a 
> lot of stuff broke, including code in the System unit and the compiler 
> itself.  Take a look: https://bugs.freepascal.org/view.php?id=35433
There are two different points:
- for methods of classes/records/objects the "inline" directive must 
either be in the interface section or not be used at all
- for normal routines "inline" might appear only in the implementation 
section, but then it can be inlined *only* inside the same unit; for 
other units the routine would appear as if it had no "inline" directive

Thus only those cases where a method has "inline" in its implementation 
must be fixed (this will then have to be mentioned on the User Changes 
Trunk wiki page), for the global routines these *can* be fixed to 
improve inlining again. But they won't break compilation.


More information about the fpc-devel mailing list