So I guess it means simply that smartlinking algorithm isn't so 'smart' yet...? Delphi's linking mechanism obviously still works much better...
No, it's already done a correct and good job. Remember that FPC's RTL+FCL+LCL and Delphi's VCL have different library structure due to the platform and widgetset independent layer. Plus, many functions are linked by a standard LCL application (XML handling for instance) because it's used internally by some components.
But, I still believe SOME change should be visible... NO change in size when smartlinking is enabled is quite an unexpected behaviour...
Not really, as I said before, it depends how the symbols are used. The smartlinker *and you* should be able to prove that a symbol is totally unreachable before removing the symbol. If the symbol isn't removed, that means it's used, either directly (by your program) or indirectly (by other functions that you use). If you want to see the prove, try compiling with
WPO enabled. The generated WPO file shows used symbols in your application, both directly and indirectly. Anyway, WPO could also improve binary size.