On 10.03.2015 15:47, Jonas Maebe wrote:

Do you already have an svn account?

The one I had back in 2012.
My old branch is here: 
http://svn.freepascal.org/svn/fpc/branches/blaise/closures

It indicates a problem in the compiler.

Thanks.
Shall I file it in the bug tracker, then?

As the message indicates, it means that you (or someone else before you) are 
trying to free a temp (allocated via tg.gettemp or the like) twice.

I am slightly confused by your choice of the pronoun, so allow me to reiterate: the issue 
exists in the "stock" compiler, even without my patches applied.

The generated code will still be ok in this case, but it could lead to trouble 
in case a temp would be allocated again in between which would happen to get 
the same address as the old one, since then the second free of the old temp 
will free the new temp.

I am not at all familiar with this part of the compiler, so devising a test 
case, that would result in invalid codegen, would be difficult for me.
Based on your explanation, it seems it would be something like
        Foo().Bar( YieldAnotherTemp() )
assuming that YieldAnotherTemp() is called after Foo()?

--
βþ
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to