Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread Flávio Etrusco
On Wed, Jun 8, 2011 at 6:17 AM, Jonas Maebe  wrote:
>
> On 08 Jun 2011, at 10:57, Zaher Dirkey wrote:
>
>> Hi, I know when compile the project with optimize in Delphi the variable
>> freed/allocated after the last line used.
>> How can i make same in FPC, O3 not worked for me.
>
> FPC only reuses stack slots allocated for temporary expressions. It does not
> reuse stack slots used by variables.
>
>
> Jonas
>

While we are at it, is this a limitation or by design?

> >   What if C is string or Interface of TInterfacedObject?
> It is the same logic. It's freed only at the end.

I recently noticed that this is also true for ansistrings. I see this
can avoid lots of errors, but also makes it very ackward to
intentionally avoid copies when modifying strings in-place if they are
obtained from a function...

-Flávio
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread michael . vancanneyt



On Wed, 8 Jun 2011, Zaher Dirkey wrote:


On Wed, Jun 8, 2011 at 11:22 AM,  wrote:




On Wed, 8 Jun 2011, Zaher Dirkey wrote:

 Hi, I know when compile the project with optimize in Delphi the variable

freed/allocated after the last line used.
How can i make same in FPC, O3 not worked for me.
I used FPC 2.4.4

var
 c: Currency;
begin
 c := 10;
 writeln(c);
<

C (as a currency) is never 'freed'. It is declared throughout the whole
procedure.



What if C is string or Interface of TInterfacedObject?


It is the same logic. It's freed only at the end.

For compiler-generated temporary variables, you should not make any assumptions.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread Martin

On 08/06/2011 11:37, Zaher Dirkey wrote:
On Wed, Jun 8, 2011 at 11:22 AM, > wrote:




On Wed, 8 Jun 2011, Zaher Dirkey wrote:

Hi, I know when compile the project with optimize in Delphi
the variable
freed/allocated after the last line used.
How can i make same in FPC, O3 not worked for me.
I used FPC 2.4.4

var
 c: Currency;
begin
 c := 10;
 writeln(c);
<


Read the following threads, it has been lengthly discussed before:

http://lists.freepascal.org/lists/fpc-devel/2010-November/022806.html
http://lists.freepascal.org/lists/fpc-devel/2010-November/022867.html

there may be more threads by the same subject

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread Zaher Dirkey
On Wed, Jun 8, 2011 at 11:22 AM,  wrote:

>
>
> On Wed, 8 Jun 2011, Zaher Dirkey wrote:
>
>  Hi, I know when compile the project with optimize in Delphi the variable
>> freed/allocated after the last line used.
>> How can i make same in FPC, O3 not worked for me.
>> I used FPC 2.4.4
>>
>> var
>>  c: Currency;
>> begin
>>  c := 10;
>>  writeln(c);
>> <>  some code here
>> end;
>>
>
> C (as a currency) is never 'freed'. It is declared throughout the whole
> procedure.
>

What if C is string or Interface of TInterfacedObject?

Thanks

-- 
Zaher Dirkey
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread michael . vancanneyt



On Wed, 8 Jun 2011, Zaher Dirkey wrote:


Hi, I know when compile the project with optimize in Delphi the variable
freed/allocated after the last line used.
How can i make same in FPC, O3 not worked for me.
I used FPC 2.4.4

var
 c: Currency;
begin
  c := 10;
  writeln(c);
<

C (as a currency) is never 'freed'. It is declared throughout the whole 
procedure.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread Jonas Maebe


On 08 Jun 2011, at 10:57, Zaher Dirkey wrote:

Hi, I know when compile the project with optimize in Delphi the  
variable

freed/allocated after the last line used.
How can i make same in FPC, O3 not worked for me.


FPC only reuses stack slots allocated for temporary expressions. It  
does not reuse stack slots used by variables.



Jonas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


[fpc-pascal] When the variable freed in Optimize compile

2011-06-08 Thread Zaher Dirkey
Hi, I know when compile the project with optimize in Delphi the variable
freed/allocated after the last line used.
How can i make same in FPC, O3 not worked for me.
I used FPC 2.4.4

var
  c: Currency;
begin
   c := 10;
   writeln(c);
<___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal