This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]