[fpc-devel] Wrong debug info when using clang backend

Adriaan van Os adriaan at adriaan.biz
Sat Dec 9 13:35:11 CET 2023


Jonas Maebe via fpc-devel wrote:
> On 09/12/2023 10:07, Adriaan van Os via fpc-devel wrote:
> 
>> Another question. Is there a way to put pragmas in fpc source code to 
>> be passed to CLang, eg. those mentioned here 
>> <https://llvm.org/docs/Vectorizers.html> ? That would gain a lot, at 
>> little cost.
> 
> No. However, FPC command line parameters (e.g. -O, -Cp) and 
> directives/modifiers (e.g. inline, const, constref, ...) get translated 
> into LLVM directives wherever possible.
> 
> So if/when we would get FPC equivalents of such directives, I could 
> translate those to LLVM IR as well.

Then I suggest the following (and I can prepare a patch to the code and docs if it were to be accepted)

$vectorize ON}
{$vectorize OFF}
{$vectorize WIDTH=VALUE}
{$vectorize TYPE=FIXED}
{$vectorize TYPE=SCALABLE}
{$vectorize PREDICATE=ON}
{$vectorize PREDICATE=OFF}

For a description, see <https://llvm.org/docs/Vectorizers.html#command-line-flags>. And

{$unroll ON}
{$unroll OFF}
{$unroll FULL}
{$unroll COUNT=VALUE}

For a description, see 
<https://clang.llvm.org/docs/LanguageExtensions.html#extensions-for-loop-hint-optimizations>.

LLVM equivalents of these compiler switches will be passed (by Jonas) to Clang as IR methadata.

Also, I suggest

-Cl<xxx>   Pass xxx to Clang as pragma on the command-line.

Regards,

Adriaan van Os



More information about the fpc-devel mailing list