This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: vtable optimization (was Re: TREE_UNCHANGING?)
Jason Merrill <jason@redhat.com> writes:
| Another tangent: if we know the static type of the object, we can do even
^^^^^^^^^^^
Hmm, did you mean "dynamic type"?
| better: we can skip the vtable lookup entirely and call the function
| directly. There is some simple code in the C++ frontend to handle this,
| mostly in fixed_type_or_null; a more C++-aware optimizer could track the
| static type information as well as the alias set, so that we could perform
| this optimization for code like
|
| A a;
| A *ap = &a;
| ...
| ap->f();
|
| as well as the simpler
|
| A a;
| ...
| a.f();
That requires some kind of value propagation applyed to pointers.
That is a valuable optimization to consider.
| This stuff is probably better suited for an AST-level optimization pass.
I completely agree with your observation.
-- Gaby