From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29219 invoked by alias); 11 Mar 2004 22:38:31 -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 29211 invoked from network); 11 Mar 2004 22:38:31 -0000 Received: from unknown (HELO igw2.watson.ibm.com) (129.34.20.6) by sources.redhat.com with SMTP; 11 Mar 2004 22:38:31 -0000 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i2BMcRi167790; Thu, 11 Mar 2004 17:38:28 -0500 Received: from makai.watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i2BMcRP176316; Thu, 11 Mar 2004 17:38:27 -0500 Received: from makai.watson.ibm.com (localhost [127.0.0.1]) by makai.watson.ibm.com (AIX5.1/8.11.6p2/8.11.0/03-06-2002) with ESMTP id i2BMcOT29246; Thu, 11 Mar 2004 17:38:24 -0500 Message-Id: <200403112238.i2BMcOT29246@makai.watson.ibm.com> To: Dorit Naishlos cc: Dale Johannesen , gcc@gcc.gnu.org Subject: Re: rs6000.md/altivec.md problem in setting of vector registers In-Reply-To: Message from Dorit Naishlos of "Fri, 05 Mar 2004 02:09:02 +0200." References: Date: Thu, 11 Mar 2004 22:38:00 -0000 From: David Edelsohn X-SW-Source: 2004-03/txt/msg00549.txt.bz2 >>>>> Dorit Naishlos writes: Dorit> Thanks, this indeed looks like the right direction, and it seems to support Dorit> the original suspicion that there is a problem with the "insvsi" pattern of Dorit> the insns that are used to initialize the va pseudo: I think the problems with register allocation are a byproduct of the earlier decision by GCC to use a bitfield to initialize the value. Because the initializer is an argument to the function, GCC chooses the CONSTRUCTOR path to materialize it. The comment in expand_expr_real() expresses it as well as anything: FIXME: Avoid trying to fill vector constructors piece-meal. Output them with output_constant_def below unless we're sure they're zeros. This should go away when vector initializers are treated like VECTOR_CST instead of arrays. GCC commits to an poor instruction selection choice and it's downhill from there. It probably would be better to fix vector initialization, or at least improve the current hack, instead of trying to change register allocator behavior. David