From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14251 invoked by alias); 15 May 2003 14:10:29 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 14191 invoked from network); 15 May 2003 14:10:27 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (207.219.125.105) by sources.redhat.com with SMTP; 15 May 2003 14:10:27 -0000 Received: from localhost.toronto.redhat.com (tornado.toronto.redhat.com [172.16.14.228]) by touchme.toronto.redhat.com (Postfix) with ESMTP id 0A834800030; Thu, 15 May 2003 10:10:25 -0400 (EDT) Subject: Re: [tree-ssa] copy propagation and the abstraction penalty From: Diego Novillo To: Joe Buck Cc: "gcc@gcc.gnu.org" In-Reply-To: <20030514154455.A12416@synopsys.com> References: <20030514154455.A12416@synopsys.com> Content-Type: text/plain Organization: Red Hat Canada Message-Id: <1053007822.4382.137.camel@frodo.toronto.redhat.com> Mime-Version: 1.0 Date: Thu, 15 May 2003 14:10:00 -0000 Content-Transfer-Encoding: 7bit X-SW-Source: 2003-05/txt/msg01512.txt.bz2 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: { *this *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: { *this } Diego.