This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] copy propagation and the abstraction penalty
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Joe Buck <jbuck at synopsys dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: 15 May 2003 10:10:22 -0400
- Subject: Re: [tree-ssa] copy propagation and the abstraction penalty
- Organization: Red Hat Canada
- References: <20030514154455.A12416@synopsys.com>
On Wed, 2003-05-14 at 18:44, Joe Buck wrote:
> If we could do this alone, we would greatly improve C++ performance, especially
> on things like the Boost graph library. It seems that we have most of what we
> need in place, right?
>
There's a few bits still missing, but we should be getting there. In
this particular testcase I see:
* Structures. We only build enough SSA links to prove liveness.
Two alternatives to dealing with this is using ESSA from the
SSAPRE engine and/or rely on a scalarization pass.
* Aliasing. Our default type-based aliasing mechanism gets all
tangled up (it's really naive):
Alias information for complex addone(const complex&): 1 sets
Alias set #0:
Tag: *this, may aliases: *this, may alias global memory, call clobbered
Aliases objects: { <UV2150> *this <UV2770> *arg *b *this }
* The long term plan is to use PTA, which disambiguates this
program just fine. PTA still needs some work before we can
enable it by default. I'm also wondering if we could change the
may-alias between this and UV2150 to a must-alias, which would
completely free this program from aliasing problems:
Alias information for complex addone(const complex&): 1 sets
Alias set #0:
Tag: *this, may aliases: *this, .GLOBAL_VAR, call clobbered
Aliases objects: { <UV2150> *this }
Diego.