dblaikie added a comment.

(maybe relevant: For what it's worth: I originally implemented inline function 
homing in modules codegen for Clang Header Modules - the results I got for 
object file size in an -O0 build were marginal - a /slight/ win in object file 
size, but not as much as we might've expected. Part of the reason might be that 
there can be inline functions that are never called, or at higher optimization 
levels, inline functions that always get inlined (via "available externally" 
definitions) - in that case, providing "homed" definitions creates inline 
function definitions that are unused during linking/a waste of space. It's 
possible the workload I was dealing with (common Google internal programs) 
skewed compared to broader C++ code - for instance heavy use of protobufs could 
be leading to a lot of generated code/inline functions that are mostly unused. 
I didn't iterate further to tweak/implement heuristics about which inline 
functions should be homed. I'm not sure if Richard Smith made a choice about 
not homing inline functions in C++20 modules because of these results, or for 
other reasons, or just as a consequence of the implementation - but given we 
had the logic in Clang to do inline function homing for Clang Header Modules, 
I'm guessing it was an intentional choice to not use that functionality in 
C++20 modules when they have to have an object file anyway)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D119409/new/

https://reviews.llvm.org/D119409

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to