<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 20/10/2013 18:03, Jonas Maebe wrote:<br>
</div>
<blockquote
cite="mid:69EC3D6C-690B-4BB3-B51A-033668F1D6BD@elis.ugent.be"
type="cite">
<pre wrap="">
On 20 Oct 2013, at 18:52, Martin wrote:
</pre>
<blockquote type="cite">
<pre wrap="">On 20/10/2013 17:21, Jonas Maebe wrote:
</pre>
<blockquote type="cite">
<pre wrap="">On 20 Oct 2013, at 17:30, Martin wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Just checking, if there may be a simple fault on my side, or if I stumbled on a bug (fpc 2.6.2 and trunk (from a few weeks ago))
It happens with circular unit references via uses in implementation. (I know "not advisable design", but a valid language feature)
</pre>
</blockquote>
<pre wrap=""><a class="moz-txt-link-freetext" href="http://lists.freepascal.org/lists/fpc-devel/2011-July/024974.html">http://lists.freepascal.org/lists/fpc-devel/2011-July/024974.html</a>
</pre>
</blockquote>
<pre wrap="">
Ok, thanks.
This at least helped me to get it working again. (I had to remove some "inline").
It still leaves me curious, how does an inline change the interface?
And does that mean it is considered a bug or not.
</pre>
</blockquote>
<pre wrap="">
<a class="moz-txt-link-freetext" href="http://bugs.freepascal.org/view.php?id=19673">http://bugs.freepascal.org/view.php?id=19673</a>
</pre>
</blockquote>
<br>
Thanks again.<br>
<br>
I see there are still open related issues, so maybe some hope...<br>
<br>
<blockquote type="cite"><a name="bugnotes" id="bugnotes">That is how
the inlining is implemented by design currently. The
availability of an inline function body changes the unit
interface checksum, so that other units using that unit will be
recompiled the next time and can use the inline body (since the
first time the inline body was not yet available, it could not
yet be inlined). </a></blockquote>
<br>
I have a very limited understanding of this, but I think I disagree
(well I do disagree, I think tha I am correct to do so...)<br>
<br>
AFAIX, ppu already have more than one checksum?<br>
<br>
Then it would just be a question to make that yet another checksum.
And if *only* this new checksum has changed, then recompile *if* the
source is available.<br>
If not, than keep things as they are.<br>
<br>
<br>
After all what seems to happen:<br>
<br>
- PackageUnit1 uses PackageUnit2 via implementation<br>
- PackageUnit2 use PackageUnit1<br>
<br>
So PackageUnit2 compiles with the "no inline body" interface of
PackageUnit1. Then PackageUnit1 changes.<br>
<br>
Now if project uses PackageUnit2 then fpc wants to recompile it
(because PackageUnit1 changed). <br>
But since compiling the project, there are only the ppu avail, and
no source, it can not recompile.<br>
<br>
Yet PackageUnit2 is actually valid, it only misses an optimization,
but it can be used as it is.<br>
<br>
</body>
</html>