[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