https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64374
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #10) > I see another issue. When we stream in > OPTIMIZATION_NODE/TARGET_OPTIONS_NODE, we don't use > build_optimization_node/build_target_option_node and thus we don't merge > identical nodes by hashing them together in between different streamed in > TUs (or does it happen somehow else)? If it doesn't happen, then it > unnecessarily slows down lto1, because it needs to reinitialize the backend > more often and switch in between different target options even when they are > effectively the same. > Though, of course, if we'd hash them together, we'd need to call some target > hook to resync the streamed in options with the global state before hashing > them together, because they can't be changed while they are in the hash > table. As discussed with Richard on IRC, this is likely non-issue - while the nodes won't be merged using the normal hash table, they will be merged through LTO tree merging.