On Fri, Jul 8, 2011 at 02:35, Martin <f...@mfriebe.de> wrote:
> On 07/07/2011 16:27, Alexander Klenin wrote:
>>
>> 1) That the code you posted would work quite correctly if "const
>> string" is fixed,
>>   including all the optimizations you are suggesting in the rest of
>> your message.
>
> No.
>
> As I said: IF the result of constant expressions like "s[a] = '<'" are
> cached (in future) depending on optimization level, then it breaks.

Well, maybe you should run the code and see for youself --
I do not know how to explain this in even more detail.
It will *only* break due to the current optimization bug.
Remove the bug, and no breakage is possible,
with or without caching you describe.
Even now, if you ensure refcount>1, no breakage is possible.

> The 2nd evaluation, of this expression without optimization returns a
> different result from the 1st evaluation. (It may be that the example would
> need updating, but there is code where this can happen, including if
> ref-counting was done)
>
> So depending on the 2nd evaluation being done, or cached (future
> optimization) the program flow differs.

It only differs now due to the current optimization bug.
Remove the bug, and the code will stop breaking.

> Code which behaves unpredictable is broken.
Exactly. This is the problem I hope to fix.

-- 
Alexander S. Klenin
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to