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)