Clang:在编译覆盖 PGO 时我是否必须通过 -O0
Clang: do I have to pass -O0 when compiling with coverage for PGO
所以我正在用 clang 3.8 编译一个大的 C++ 程序。
我想使用 PGO(Profile guided optimization)。我想用instrumentation编译的方式来生成profile。
目前我正在将 -fprofile-instr-generate --coverage
传递给编译器,将 --coverage
传递给链接器。
所以现在的问题是是否最好也传递 -O0
,以便编译器可以在下一次编译期间正确映射回二进制文件中的调用。或者这是不必要的?
没有必要。优化代码的覆盖率将相同,否则会令人担忧;)
例如,clang 覆盖机器人使用 -O3 -fprofile-instr-generate -fcoverage-mapping
构建
所以我正在用 clang 3.8 编译一个大的 C++ 程序。 我想使用 PGO(Profile guided optimization)。我想用instrumentation编译的方式来生成profile。
目前我正在将 -fprofile-instr-generate --coverage
传递给编译器,将 --coverage
传递给链接器。
所以现在的问题是是否最好也传递 -O0
,以便编译器可以在下一次编译期间正确映射回二进制文件中的调用。或者这是不必要的?
没有必要。优化代码的覆盖率将相同,否则会令人担忧;)
例如,clang 覆盖机器人使用 -O3 -fprofile-instr-generate -fcoverage-mapping