[llvm-dev] [RFC] Optimization Remark for derived function / argument attributes

William Moses via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 25 14:11:11 PDT 2019


Hi Francis,

I'm wondering if it makes more sense to have a single pass to emit
attributes rather than making sure that this is emitted in all passes that
could modify arguments. If memory serves there's more than just
FunctionAttrs.

Cheers,
Billy

On Wed, Jul 24, 2019 at 5:32 PM Francis Visoiu Mistrih <francisvm at yahoo.com>
wrote:

> Hi Billy,
>
> On Jul 23, 2019, at 4:46 PM, William Moses via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hello all,
>
> During the compilation process, LLVM automatically derives various
> attributes about functions and values (for example that a pointer is
> nonnull, a function is constant, etc) that are used within a translation
> unit.
>
>
> I propose adding a pass to LLVM that allows front-ends to output derived
> attributes. Such a pass would be useful both for developers and end users
> to debug programs, either learning that an expected attribute was learned,
> or an unexpected attribute was learned (for example a pointer never being
> written to).
>
>
> This sounds like a good idea! Would adding new optimization remarks to
> passes that modify the attributes work? For example, we could emit an
> “analysis” remark in FunctionAttrs::setDoesNotRecurse.
>
>
> Evidently the following might not be the final interface, but one could
> imagine something like the following:
>
>
> $ ./clang foobar.c -g -Rannotations -O3
>    foobar.c:2:1: remark: derived following attributes for function f:
> fn_attr("norecurse") fn_attr("nounwind") fn_attr("readonly") arg_attr(0,
> "nocapture") arg_attr(0, "readonly") [-Rannotations]
>    double f(double* a) {
>
>
> foobar.c:
>
>
> double f(double* a) {
>     return a[0];
> }
>
>
> If this is emitted as an analysis remark as suggested above, clang
> -Rpass-analysis=functionattrs could display the remarks in a similar way.
>
> This has also the advantage that it can be serialized to a file using
> -fsave-optimization-record without any extra work involved.
>
> Cheers,
>
>> Francis
>
>
> A work in progress patch implementing such an optimization remark is
> available here: https://reviews.llvm.org/D65169
>
>
> Cheers,
> Billy Moses
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190725/a242b6f2/attachment.html>


More information about the llvm-dev mailing list