Three random remarks:
1. Note that the new CastleVectors API from Castle Game Engine uses "inline" for many methods. Are you sure that it's not the fault of my CastleVectors?
2. As Thaddy writes, inlining virtual methods doesn't work. Virtual methods are called through a pointer, the idea is that the compiler doesn't know (at compilation time) what is the actual code being executed. So, it also cannot inline the method.
Note that the "Whole Program Optimization" can analyze the code and perform "devirtualisation", when possible. See the documentation on
http://wiki.freepascal.org/Whole_Program_Optimization . Although I never tested it, and I have no idea whether the "devirtualization" is done early enough to allow inlining to work. But, *in theory*, it could enable inlining of (some) of the cases when you use virtual methods.
(But it will only affect the cases when the analysis can prove that your virtual method call is actually always calling only the one possible method implementation. Which may not be helpful at all in your case.)
3. I don't think that "-gl" has any effect on the hints you see *when compiling*. At least it's not documented like that (documentation says "-gl" does "Use line info unit (show more info with backtraces)"). And I never observed it.
The -gl does the same thing as adding the LineInfo unit at the beginning of the uses clause of your program. So it allows you to see the line information (e.g. in backtraces) at runtime, but I *think* it has no effect on the information you see at compile time. If you can show me an example when the "-gl" changes what you see at compile-time, I would happily be corrected