side effects of the compiler-generated calls

Tobias Schlüter Tobias.Schlueter@physik.uni-muenchen.de
Wed Jul 18 13:56:00 GMT 2007


David Livshin wrote:
> Actually I hoped that as routines from the fortran library, they might have 
> "simplified" calling convention, e.g. affect less  (  then normal calls ) 
> resources ( registers ). As to the stack pointer, analyzing the compiler 
> generated code, I didn't see any cases of stack-adjustment after the calls to 
> these routines - the question is if I may assume it to be a rule; for what 
> routines is it a rule?

libgfortran is (for the most part) implemented in C, so it uses the C 
ABI.  I had a quick look through the code to verify that no attributes 
which may affect calling conventions are set.  I don't think you may 
assume anything beyond that.

 From the description of your software it looks like you're the assembly 
expert, so I may be wrong here, but I assume that you don't see stack 
adjustments because as long as the compiler doesn't get confused, it 
doesn't have to re-adjust the stack.  So instead of doing
   push arg
   push arg
   call f
   add %esp, ...
   push arg
   call g
   add %esp, ...
it can omit the first add, using a larger offset in the second add (or 
sub, if I misremembered the stack growth direction).

- Tobi



More information about the Fortran mailing list