[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