[fpc-pascal] LLVM Backend Support

Jonas Maebe jonas.maebe at elis.ugent.be
Fri Aug 19 14:43:40 CEST 2016


marcov wrote on Fri, 19 Aug 2016:

> In our previous episode, Jonas Maebe said:
>> Another, more important, issue is that the LLVM-based compiler also
>> includes the regular code generator for the targeted architecture (to
>> generate entry and exit code for pure assembler routines).
>
> FYI, I've been creating some SSE image conversion routines in Delphi/FPC
> (FPC for avx) the last few days, and I noticed that Delphi allows something
> like that too for 64-bit.  (That being generating entry and exit code for
> asm code)
>
> It has pseudo directives to push registers on entry, allowing it
> to create a stack frame (aligned, with SEH record).
>
> There are four functions:
>
> .noframe - omit stackframe (our nostackframe)
[snip]

That's a bit different. I was talking about the entry and exit code  
for a pure assembler routine based on e.g. declared local variables  
and types of the parameters, which was done already even by Turbo  
Pascal. That has to be done even when using an LLVM code generator,  
since pure assembler routines are not touched by the LLVM-to-native  
passes that come after.

The directives you mention are extra features to influence the kind of  
entry/exit code to generate for assembler routines (which we indeed  
don't have yet).


Jonas



More information about the fpc-pascal mailing list