Generating vptr assumption loads for better devirtualization.
More here: http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html
Paths
| Differential D11859
Generating vptr assume loads ClosedPublic Authored by Prazek on Aug 7 2015, 6:51 PM.
Details Summary Generating vptr assumption loads for better devirtualization. More here: http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html
Diff Detail Event TimelinePrazek updated this object. Comment Actions Some first round review comments.
nwilson added inline comments.
hfinkel added inline comments.
Prazek marked an inline comment as done. Comment Actions Mostly LGTM. Are you going to emit assumptions for vbptrs in a separate patch?
Comment Actions
I wasn't planning to. I am focusing now on upgrading GVN for using new invariant.barrier metadata. Comment Actions
I won't argue with prioritizing Itanium over MS work, if that's your motivation, because that's obviously your call to make, and certainly that's how I would weigh things if I were doing this work. If you're interested in both, though, I would guess that vbptr assumptions would be particularly valuable — constructing objects and immediately converting them to a base class is pretty common in a lot of idioms. Prazek added inline comments.
Comment Actions
It just wasn't in our plans. Main target was to devirtualize function calls much better, and I think that finishing the work from proposed paper will be much more valuable.
Comment Actions Just a couple tweaks and then LGTM.
Prazek marked 2 inline comments as done. rsmith edited edge metadata. Comment ActionsLGTM
This revision is now accepted and ready to land.Aug 17 2015, 7:24 PM
Revision Contents
Diff 32363 lib/CodeGen/CGCXXABI.h
lib/CodeGen/CGCall.cpp
lib/CodeGen/CGClass.cpp
lib/CodeGen/CodeGenFunction.h
lib/CodeGen/ItaniumCXXABI.cpp
lib/CodeGen/MicrosoftCXXABI.cpp
test/CodeGen/available-externally-hidden.cpp
test/CodeGenCXX/ctor-globalopt.cpp
test/CodeGenCXX/template-instantiation.cpp
test/CodeGenCXX/thunks.cpp
test/CodeGenCXX/virtual-base-ctor.cpp
test/CodeGenCXX/vtable-assume-load.cpp
test/CodeGenCXX/vtable-available-externally.cpp
|
Typo Initilize -> Initialize