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

William Moses via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 23 16:46:03 PDT 2019


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).



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];

}



A work in progress patch implementing such an optimization remark is
available here: https://reviews.llvm.org/D65169



Cheers,

Billy Moses
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190723/c29e167f/attachment.html>


More information about the llvm-dev mailing list