[llvm-dev] [RFC] Adding function attributes to represent codegen optimization level
via llvm-dev
llvm-dev at lists.llvm.org
Tue Apr 3 12:47:26 PDT 2018
All,
A recent commit, D43040/r324557, changed the behavior of the gold plugin
when compiling with LTO. The change now causes the codegen optimization
level to default to CodeGenOpt::Default (i.e., -O2) rather than use the
LTO optimization level. The argument was made that the LTO optimization
level should control the amount of cross-module optimizations done by
LTO, but it should not control the codegen optimization level; that
should be based off of the optimization level used during the initial
compilation phase (i.e., bitcode generation).
Assuming the argument is reasonable (it make sense to me), I was hoping
to solicit feedback on how to proceed. The suggestion in D43040/r324557
was to add function attributes to represent the compile-time
optimization level (which also seems reasonable to me).
As a first step, I've put together two patches: 1) an llvm patch that
adds the function attributes to the LLVM IR and 2) a clang patch that
attaches these attributes to each function based on the codegen
optimization level. I then use the function level attributes to
"reconstruct" to codegen optimization level used with LTO.
Please understand this is very much a WIP and just a very small step
towards a final solution.
Here are the patches for reference:
Clang: D45226
LLVM: D45225
Regards,
Chad
More information about the llvm-dev
mailing list