[PATCH] D36352: [LCG] Switch one of the update methods for the LazyCallGraph to support limited batch updates.

Sean Silva via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 5 21:18:10 PDT 2017


silvas added a comment.

Sorry, to be clear, the entire RefSCC is something like:

for each message Foo:
`_ZN3FooC2Ev` --(ref through vtable)-> `_ZNK3Foo11GetMetadataEv` --> `_ZN12_GLOBAL__N_130protobuf_AssignDescriptorsOnceEv` --ref-> `_Z31protobuf_AssignDesc_foo_2eprotov` --> `_Z28protobuf_AddDesc_foo_2eprotov` --> `_ZN3FooC2Ev` (and all the other C2 constructors)

Additionally, to make the RefSCC even larger, when message Foo contains a Message Baz, then `Foo::MergeFrom` and `Foo::MergePartialFromCodedStream` end up referencing `_ZN3FooC2Ev` because they `new` a Baz object via the `mutable_*` methods (to make things even worse they also directly call `Baz::{MergeFrom,MergePartialFromCodedStream}`. So all the MergeFrom/MergePartialFromCodedStream end up in the RefSCC as well.


https://reviews.llvm.org/D36352





More information about the llvm-commits mailing list