[m-rev.] for review: --warn-can-fail-functions

Julien Fischer jfischer at opturion.com
Sat Aug 10 15:04:08 AEST 2024


On Thu, 8 Aug 2024 at 01:51, Zoltan Somogyi <zoltan.somogyi at runbox.com> wrote:

> > (BTW, did you receive my last response regarding the change to where .prof files
> > are placed?)
>
> Yes, but I haven't decided what to do about it. I am thinking about two issues.
>
> One is that the call tree edges of a program will be the same when that program
> is compiled in LLDS and HLDS .prof grades *except* if the program uses a
> C foreign proc that has a "low_level_backend" or "high_level_backend" attribute,
> and has no C foreign_proc with the opposite attribute, since in that case the
> Mercury code version of the procedure can add more edges to its call tree.
> However, these foreign_proc attributes were only ever intended for implementors,
> and their documentation in the language reference manual is commented out,
> so for people other than Mercury developers, they effectively do not exist.
> This makes .prof files effectively non-grade-specific for them.

I can't actually see any use of those attributes in the Mercury system
outside of
a couple of test cases.  In any case, as you say, it's not a feature
users should
be using in their code.

> The second is that the name of the extension, .prof is misleading. Yes, these files
> are used for profiling, but they do NOT themselves contain profiling data. I have
> been trying to come up with a suffix name that is accurate, non-misleading *and*
> not too long, but have not succeeded.

Those files contain the static call graph, so perhaps one of the following:

    .callgraph
    .staticcg
    .stcg
    .scg
?

Julien.


More information about the reviews mailing list