← board

pxx evaluates binary-operator operands left-to-right; FPC evaluates right-to-left

The difference

Order of evaluation of a binary operator's two operands is unspecified in ISO Pascal and in FPC's documentation. The two implementations pick opposite orders:

Observable only when one operand has a side effect the other operand reads — i.e. badly written code that already relies on unspecified behaviour. Minimal:

program ord;
var r: word;
function sidef: word; begin r := 810; sidef := 0; end;
var res: word;
begin
  r := 778;
  res := r xor sidef;   { FPC prints 810 (r read after call), pxx prints 778 }
  writeln(res);
end.

Both compilers are internally self-consistent across O0/O2/O3. Neither is wrong.

Why it is NOT fixed

When it might matter

Only under a future strict --mimic-fpc / --strict-fpc mode where byte-for-byte FPC behavioral parity on unspecified constructs is a goal (e.g. importing real-world FPC code that leans on FPC's right-to-left order). Even then, prefer a diagnostic ("operand has a side effect a sibling reads") over silently reordering. Not worth doing outside that context.