Do not pass explicitly -O2 flag to compiler in Release build #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Just a proposal, but I thought it was easier to discuss with a proposal as opposed to an issue. The
add_compile_options($<$<CONFIG:Release>:-O2>)line adds the-O2on Release builds, but the Release builds on CMake already pass to the compiled the-O3flag. Passing also the-O2options results in both options passed to the compiled, see for example (extracted fromcompile_commands.json):{ "directory": "/home/traversaro/gemma.cpp/build", "command": "/usr/bin/c++ -DHWY_STATIC_DEFINE -DTOOLCHAIN_MISS_ASM_HWCAP_H -I/home/traversaro/gemma.cpp/. -I/home/traversaro/gemma.cpp/build/_deps/sentencepiece-src -I/home/traversaro/gemma.cpp/build/_deps/highway-src -O3 -DNDEBUG -O2 -std=gnu++17 -o CMakeFiles/libgemma.dir/gemma.cc.o -c /home/traversaro/gemma.cpp/gemma.cc", "file": "/home/traversaro/gemma.cpp/gemma.cc" },If instead for some reason you want to use
-O2, probably it is necessary to make sure that CMake do not pass-O3in the first place, for example tweakingCMAKE_CXX_FLAGS_RELEASEor similar.