Thanks for your reply and information.
BTW, since you are updating the wiki page, can you look into the following statement (in the same wiki page) which I think may not be valid now:-
Also, in {$mode FPC} and {$mode objFPC} the @‑address operator has to be used to assign values to procedural values (unless {$modeSwitch classicalProcVars+} is set). In {$mode TP} and {$mode Delphi}, however, no operator at all may be used.
Based on my testing result, the mainly difference between addr and @ is: @(x) returns typed pointer when {$T} switch is on while addr(x) always return an untyped pointer.
Thank you.