This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: side effects of the compiler-generated calls


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]