D.gnu - [Bug 162] New: GDC unable to de-virtualise method calls
- via D.gnu (28/28) Oct 26 2014 Date: Sun, 26 Oct 2014 10:37:29 +0000
Date: Sun, 26 Oct 2014 10:37:29 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://bugzilla.gdcproject.org/show_bug.cgi?id=162 Bug ID: 162 Summary: GDC unable to de-virtualise method calls Product: GDC Version: development Hardware: All OS: All Status: NEW Severity: enhancement Priority: Normal Component: gdc Assignee: ibuclaw gdcproject.org Reporter: ibuclaw gdcproject.org Currently we emit method calls as the following: *(c->__vptr + 40) (c, 1, 2, 3); Which translate directly into the following trees: indirect_ref(pointer_plus(component_ref(c, __vptr), 40)) GCC provides a more simplistic tree code called obj_type_ref, which represents a virtual method lookup, and given the binfo structure we already pass to the backed, this would give a chance for the optimiser passes to statically determine the dynamic type of the object and devirtualise the call. obj_type_ref(component_ref(c, __vptr), c, 40) -- You are receiving this mail because: You are watching all bug changes.
Oct 26 2014