On 30 Jul 2013, at 22:17, Gerhard Scholz wrote:

> Beside of the question, if ++,--,+=,etc. fit into Pascal or not, there stays 
> the question: is it a plus?
> I expected that
> a[i] += 3
> compiles better than
> a[i] := a[i] + 3
> I expected that the computation of a[i] is done only once, but the produced 
> code is the same, the address of a[i] is computed twice.
> So the whole construct is only a typing saving.
> Compilation done with FP 2.6.2, winxp, 32-bit)

Syntax and generated code are in principle unrelated. The reason you don't get 
the optimised version of the code, is probably because you used global 
variables. Make the array and i local, and you will see that in both cases the 
address of a[i] is calculated only once. Constructs involving global variables 
are harder to analyse for side-effects, so they are simply not optimised at all 
in many cases by FPC.

> Constructs like I++, ++I are nice shortcuts (and sometimes the code can be 
> better readable), but have only a real value, if the produced code is a bit 
> optimized.

That was true in the eighties when C statements were pretty much directly 
mapped to assembler. Nowadays, they make code actually harder to optimise 
because they introduce side-effects in the middle of expressions.

Adding a particular syntax to a programming language in order to work around a 
(realistically solvable) weakness of the optimiser is an extremely bad approach 
to language design.


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

Reply via email to