From patchwork Sat Oct 13 09:25:37 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Glisse X-Patchwork-Id: 191288 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 2C72D2C0090 for ; Sat, 13 Oct 2012 20:25:48 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1350725149; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Date:From:To:Subject:In-Reply-To:Message-ID:References: User-Agent:MIME-Version:Content-Type:Mailing-List:Precedence: List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=hqwHCRbYgay5aYrzXxA3F1Z16ec=; b=bmT1SCE25MuivDb pM1xjZwSEIzF9O4SQaihC5imwsvSeLyCriiwmNCd0Fg3Nl/WtMwA7Dgg/713qiTg w9E1v2wI0acdO/LG3OCY9rryK3JNDC9pr4pb48BziOnJaWqdbs/I7ahtDzvFjS2A H359zDTe92oOyZnzmc8cb8Arfl7M= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Date:From:To:Subject:In-Reply-To:Message-ID:References:User-Agent:MIME-Version:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=sS4uvpfIMhBsNKPAcBD8Wu0be8sRK2NOvxwOUk5hjwUbdbr7Pu9uskzIVRlyJT MXkB1GaSaabu+gy00KECyx6woEQfOsQulBYspjBrCzMOg+HSeNjZDjq30seDQ7iP eWP+WoWuIx9xGFWSawrj8XjIvMSKMn8gBt39dWanBMaLM=; Received: (qmail 21968 invoked by alias); 13 Oct 2012 09:25:44 -0000 Received: (qmail 21954 invoked by uid 22791); 13 Oct 2012 09:25:43 -0000 X-SWARE-Spam-Status: No, hits=-8.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail4-relais-sop.national.inria.fr (HELO mail4-relais-sop.national.inria.fr) (192.134.164.105) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 13 Oct 2012 09:25:38 +0000 Received: from stedding.saclay.inria.fr ([193.55.250.194]) by mail4-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES128-SHA; 13 Oct 2012 11:25:37 +0200 Received: from glisse (helo=localhost) by stedding.saclay.inria.fr with local-esmtp (Exim 4.80) (envelope-from ) id 1TMxyT-0004FT-8R for gcc-patches@gcc.gnu.org; Sat, 13 Oct 2012 11:25:37 +0200 Date: Sat, 13 Oct 2012 11:25:37 +0200 (CEST) From: Marc Glisse To: gcc-patches@gcc.gnu.org Subject: Re: PR54915 (ssa-forwprop, vec_perm_expr) In-Reply-To: Message-ID: References: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org On Fri, 12 Oct 2012, Marc Glisse wrote: > Hello, > > apparently, in the optimization that recognizes that {v[1],v[0]} is a > VEC_PERM_EXPR, I forgot to check that v is a 2-element vector... (not that > there aren't things that could be done if v has a different size, just not > directly a VEC_PERM_EXPR, and not right now, priority is to fix the bug) > > Checking that v has the same type as the result seemed like the easiest way, > but there are many variations that could be slightly better or worse. > > bootstrap+testsuite ok. > > 2012-10-02 Marc Glisse > > PR tree-optimization/54915 > > gcc/ > * tree-ssa-forwprop.c (simplify_vector_constructor): Check > argument's type. > > gcc/testsuite/ > * gcc.dg/tree-ssa/pr54915.c: New testcase. This new version, with a slightly relaxed test, seems preferable and also passes testing. Index: testsuite/gcc.dg/tree-ssa/pr54915.c =================================================================== --- testsuite/gcc.dg/tree-ssa/pr54915.c (revision 0) +++ testsuite/gcc.dg/tree-ssa/pr54915.c (revision 0) @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +typedef double v2df __attribute__ ((__vector_size__ (16))); +typedef double v4df __attribute__ ((__vector_size__ (32))); + +void f (v2df *ret, v4df* xp) +{ + v4df x = *xp; + v2df xx = { x[2], x[3] }; + *ret = xx; +} Property changes on: testsuite/gcc.dg/tree-ssa/pr54915.c ___________________________________________________________________ Added: svn:eol-style + native Added: svn:keywords + Author Date Id Revision URL Index: tree-ssa-forwprop.c =================================================================== --- tree-ssa-forwprop.c (revision 192420) +++ tree-ssa-forwprop.c (working copy) @@ -2833,20 +2833,22 @@ simplify_vector_constructor (gimple_stmt ref = TREE_OPERAND (op1, 0); if (orig) { if (ref != orig) return false; } else { if (TREE_CODE (ref) != SSA_NAME) return false; + if (!useless_type_conversion_p (type, TREE_TYPE (ref))) + return false; orig = ref; } if (TREE_INT_CST_LOW (TREE_OPERAND (op1, 1)) != elem_size) return false; sel[i] = TREE_INT_CST_LOW (TREE_OPERAND (op1, 2)) / elem_size; if (sel[i] != i) maybe_ident = false; } if (i < nelts) return false;