From patchwork Mon Aug 23 21:38:03 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mikael Morin X-Patchwork-Id: 62502 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 233F1B6F0E for ; Tue, 24 Aug 2010 03:39:15 +1000 (EST) Received: (qmail 31371 invoked by alias); 23 Aug 2010 17:39:13 -0000 Received: (qmail 31356 invoked by uid 22791); 23 Aug 2010 17:39:12 -0000 X-SWARE-Spam-Status: No, hits=3.6 required=5.0 tests=AWL, BAYES_00, DATE_IN_FUTURE_03_06, RCVD_IN_DNSWL_NONE, RCVD_IN_JMF_BL, SPF_NEUTRAL, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp22.services.sfr.fr (HELO smtp22.services.sfr.fr) (93.17.128.11) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 23 Aug 2010 17:39:08 +0000 Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf2206.sfr.fr (SMTP Server) with ESMTP id 212A37000095; Mon, 23 Aug 2010 19:39:05 +0200 (CEST) Received: from gimli.local (7.123.193-77.rev.gaoland.net [77.193.123.7]) by msfrf2206.sfr.fr (SMTP Server) with ESMTP id 22960700009A; Mon, 23 Aug 2010 19:39:00 +0200 (CEST) X-SFR-UUID: 20100823173901141.22960700009A@msfrf2206.sfr.fr Message-ID: <4C72EA3B.4080605@sfr.fr> Date: Mon, 23 Aug 2010 23:38:03 +0200 From: Mikael Morin User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; fr-FR; rv:1.9.1.11) Gecko/20100725 Thunderbird/3.0.6 MIME-Version: 1.0 To: "fortran@gcc.gnu.org" , gcc-patches Subject: [Patch, fortran] PR45380 ICE in gfc_conv_intrinsic_any_all 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 Hello, I plan to commit the following patch under the obvious rule once the regression tests finish. Mikael 2010-08-23 Mikael Morin PR fortran/45380 * frontend-passes.c (optimize_equality): Don't optimize array equality Index: frontend-passes.c =================================================================== --- frontend-passes.c (révision 163469) +++ frontend-passes.c (copie de travail) @@ -399,6 +399,13 @@ optimize_equality (gfc_expr *e, bool equal) return true; } + /* An expression of type EXPR_CONSTANT is only valid for scalars. */ + /* TODO: A scalar constant may be acceptable in some cases (the scalarizer + handles them well). However, there are also cases that need a non-scalar + argument. For example the any intrinsic. See PR 45380. */ + if (e->rank > 0) + return false; + /* Check for direct comparison between identical variables. Don't compare REAL or COMPLEX because of NaN checks. */ if (op1->expr_type == EXPR_VARIABLE