http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56718
Bug #: 56718
Summary: Early inlining prevents type based devirtualization
Classification: Unclassified
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: [email protected]
ReportedBy: [email protected]
Created attachment 29718
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29718
Testcase
The attached testcase runs 2.5 times faster (on my x86_64 desktop at
-O3) when early inlining is disabled. The reason is that while
inlining and IPA-CP can work out the type of the object in
checkGetElement and checkSetElement, early inlining cannot and after
it puts the virtual call into the same function with the definition of
the object, there is subsequently no mechanism to do the
devirtualization in such intraprocedural setting.