From patchwork Wed Dec 1 10:13:05 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ira Rosen X-Patchwork-Id: 73778 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 2EED8B70A7 for ; Wed, 1 Dec 2010 21:13:23 +1100 (EST) Received: (qmail 7828 invoked by alias); 1 Dec 2010 10:13:19 -0000 Received: (qmail 7796 invoked by uid 22791); 1 Dec 2010 10:13:17 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL, BAYES_00, MAY_BE_FORGED, TW_TM, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mtagate2.uk.ibm.com (HELO mtagate2.uk.ibm.com) (194.196.100.162) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 01 Dec 2010 10:13:12 +0000 Received: from d06nrmr1806.portsmouth.uk.ibm.com (d06nrmr1806.portsmouth.uk.ibm.com [9.149.39.193]) by mtagate2.uk.ibm.com (8.13.1/8.13.1) with ESMTP id oB1AD9ai022859 for ; Wed, 1 Dec 2010 10:13:09 GMT Received: from d06av02.portsmouth.uk.ibm.com (d06av02.portsmouth.uk.ibm.com [9.149.37.228]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id oB1ADCD32461732 for ; Wed, 1 Dec 2010 10:13:12 GMT Received: from d06av02.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id oB1AD9Tc015699 for ; Wed, 1 Dec 2010 03:13:09 -0700 Received: from d12mc102.megacenter.de.ibm.com (d12nrml1506.megacenter.de.ibm.com [9.149.164.56] (may be forged)) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id oB1AD9bX015691 for ; Wed, 1 Dec 2010 03:13:09 -0700 Subject: [patch] Fix PR tree-optimization/46663 X-KeepSent: 729B076B:F629CF9D-C22577EC:00369AE5; type=4; name=$KeepSent To: gcc-patches@gcc.gnu.org Message-ID: From: Ira Rosen Date: Wed, 1 Dec 2010 12:13:05 +0200 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII X-IsSubscribed: yes 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 Hi, This patch adds a check that FUNCTION_DECL exists for the call in vectorizer power pattern recognition. I am testing the patch for trunk on x86_64-suse-linux now. The problem goes back to 4.0, how far back should I backport this fix? Thanks, Ira ChangeLog: PR tree-optimization/46663 * tree-vect-patterns.c (vect_recog_pow_pattern): Check that FUNCTION_DECL exists. testsuite/ChangeLog: PR tree-optimization/46663 * gcc.dg/vect/pr46663.c: New test. Index: testsuite/gcc.dg/vect/pr46663.c =================================================================== --- testsuite/gcc.dg/vect/pr46663.c (revision 0) +++ testsuite/gcc.dg/vect/pr46663.c (revision 0) @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O -ftree-vectorize -fdump-tree-vect-details -fexceptions" } */ + +typedef __attribute__ ((const)) int (*bart) (void); + +int foo (bart bar, int m) +{ + int i, j = 0; + for (i = 0; i < m; i++) + j += bar(); + return j; +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ Index: tree-vect-patterns.c =================================================================== --- tree-vect-patterns.c (revision 167324) +++ tree-vect-patterns.c (working copy) @@ -472,6 +472,9 @@ vect_recog_pow_pattern (gimple last_stmt return NULL; fn = gimple_call_fndecl (last_stmt); + if (fn == NULL_TREE) + return NULL; + switch (DECL_FUNCTION_CODE (fn)) { case BUILT_IN_POWIF: