This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] Migrate pointers to members to the middle end
Ollie Wild wrote:
> On 8/8/07, Michael Matz <matz@suse.de> wrote:
Ollie, thanks for patiently trying out different approaches.
> I think the primary purpose of the middle end is to provide a
> representation which captures the semantics of a program at a
> sufficiently high level to enable efficient optimization. COMPLEX_CST
> and COMPLEX_TYPE are a good example. In theory, the middle end has
> enough information to optimize complex arithmetic based solely on the
> constituent operations on real and imaginary components, but it's
> easier to deal with the complex number as an atomic unit.
I agree.
When I discussed this with Ollie, my feeling was that, yes, it's
possible to express all this stuff in terms of GIMPLE (in fact, we
already do, aside from PTRMEM_CST itself!), but we're essentially
obfuscating information and then trying to get it back. Creating
RECORD_TYPE instances to represent pointers-to-member-functions and then
hoping that the middle end will scalarize the struct, fold all the tests
for virtual-ness, dereference the virtual table entry, etc. seems like a
lot of work to do de-virtualization. But, the information is in fact
there, so I guess we could go that way.
Michael and Danny have expressed opinions; does anyone else have one?
Thanks,
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713