From patchwork Mon Feb 8 19:28:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 580485 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id D7F8F14018C for ; Tue, 9 Feb 2016 06:28:29 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=gwnkDdbm; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type :content-transfer-encoding; q=dns; s=default; b=nzMTTaEWgBgfcyPU m9YE7tGbXT8mSGlTiSO70bApEIvBYHM5k82/XmHFLijzHJoAUdf/wUIqU2hnVBuk EGx73Ebbm5P8bKYQ6/efb5TchIhyqha6G0jYKNYuySMFXjDp5kFyDzYM5w2NhNau AUDV80pboIzRKSIYigQ9jNFR0Ek= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type :content-transfer-encoding; s=default; bh=Q1C614ol/7K8oXnzWUl8EZ F1NVw=; b=gwnkDdbmlW+NFNDAqEuEu8kFGxePNWADl+VUVBkbfj8G3zoJAjBdzW ERg0G/CTKyhDxQstYrqNAc1HuyKyskX6TyCXoPkaB7cHy5JIl8Pw3/b7RFJhM1aO SbN+JhXFzeT9oapuhkLuhm6R1JdP6AV4qi/FKVGUvakeEvb/hBBB0= Received: (qmail 86254 invoked by alias); 8 Feb 2016 19:28:20 -0000 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 Received: (qmail 86235 invoked by uid 89); 8 Feb 2016 19:28:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=BAYES_00, FREEMAIL_FROM, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.3.2 spammy=Based, HContent-Transfer-Encoding:8bit X-Spam-User: qpsmtpd, 2 recipients X-HELO: mout.gmx.net Received: from mout.gmx.net (HELO mout.gmx.net) (212.227.17.21) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 08 Feb 2016 19:28:17 +0000 Received: from proton.at.home ([217.232.136.248]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0MKcdH-1aUmks2iYh-001wcD; Mon, 08 Feb 2016 20:28:13 +0100 Message-ID: <56B8EC47.4040908@gmx.de> Date: Mon, 08 Feb 2016 20:28:07 +0100 From: Harald Anlauf User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130329 Thunderbird/17.0.5 MIME-Version: 1.0 To: fortran@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [patch, fortran] PR56007 Remarkably bad error message with DO array=1, 2 X-UI-Out-Filterresults: notjunk:1; V01:K0:wll5/GhknPY=:q/WYEQNlZIXxPPKJFRuReD aR5jKglbK69ZyJMhUSQOw/p1erLiyuDUWXxEcqKk+y0QQKxP7Dvp8ynuurls6yuQ0U8L/cDD/ ZnNQRoPSPlAQXb0NFRcx55zD6782INJbR/4MPGo1/nM1Kc+0Zw3mNcS5p7w105z6K7X0/6pGs 6kcwbNWInYZOaU7aYK66ab9f0YgXBZ/xfVk9+mNsJ9F6kOY8lmZWpB49Ea5e68nv9G50TYB7B gTDwvZNTxvEjxr3jS3phJfQN5h7pSnSKKPWnCLxV7OiEv1N3La9ZiEGJHqs+NsIMsgxuSB79y 2CBZRclx8W5BBHmhKmn96vCQZ3/5XAq92im0S/BjWnzgBxGnXIBq9zF9TVy077zAyyWUqCLkH kO8L2E9UpRuaC1fsUYOMKqef13g6UrUBgpcb5qP7Vca/hlMK5u2cUWsDkhPLMa6UPwO7n3ZyA YifiYZxRNI0TuwvSTK2QTD/lx8K0z933ahul/6+jmN+HgARHvuA0IXxCvVS55zEk/bDd2pLPi y1AtSCZZj6W/l0Tcc53hn6lVFRw1szvpNmVMZ0nxmsO7xXrYeKjhdrILQJBCvMyfb/7maFPoz h19rmzWx/xmS2dY9TsibZmu4MEm0jvDnoY/veG5PwkKmPhyqVdoMyR4anGjk2JtMuk7+eZUPL fowGTeHY4STocvOwK5TkrJ977V6GjYQBf2tpt/nVLAaQcHI73kZ1/rFVUmUpwca0vXHC6QL3d t6bWUZedpAkmOvegtNdIigbQcDgKkGHfNOJJBRvdH34X6ULMXf9A6trtezGy0/3219BvvmnjP qHjU5+N Hi, the simple patch below rejects arrays as do loop index variable before another (confusing) error message is emitted. Two new testcases derived from the PR, plus adaption of one testcase that relies on the old error message. Whoever wants to take it... Harald 2016-02-08 Harald Anlauf PR fortran/56007 * match.c (gfc_match_iterator): Add diagnostic for array variable as do loop index. Index: gcc/fortran/match.c =================================================================== --- gcc/fortran/match.c (revision 233203) +++ gcc/fortran/match.c (working copy) @@ -877,6 +877,12 @@ if (m != MATCH_YES) return MATCH_NO; + if (var->symtree->n.sym->attr.dimension) + { + gfc_error ("Loop variable at %C cannot be an array"); + goto cleanup; + } + /* F2008, C617 & C565. */ if (var->symtree->n.sym->attr.codimension) { 2016-02-08 Harald Anlauf PR fortran/56007 * gfortran.dg/coarray_8.f90: Adjust error message. * gfortran.dg/pr56007.f90: New test. * gfortran.dg/pr56007.f: New test. Index: gcc/testsuite/gfortran.dg/coarray_8.f90 =================================================================== --- gcc/testsuite/gfortran.dg/coarray_8.f90 (revision 233203) +++ gcc/testsuite/gfortran.dg/coarray_8.f90 (working copy) @@ -146,7 +146,7 @@ subroutine tfgh() integer :: i(2) DATA i/(i, i=1,2)/ ! { dg-error "Expected PARAMETER symbol" } - do i = 1, 5 ! { dg-error "cannot be a sub-component" } + do i = 1, 5 ! { dg-error "cannot be an array" } end do ! { dg-error "Expecting END SUBROUTINE" } end subroutine tfgh Index: gcc/testsuite/gfortran.dg/pr56007.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr56007.f90 (revision 0) +++ gcc/testsuite/gfortran.dg/pr56007.f90 (revision 0) @@ -0,0 +1,11 @@ +! { dg-do compile } +! PR fortran/56007 +! Based on testcase by Tobias Schlüter + + integer iw1(90), doiw1(90) + do iw1=1,2 ! { dg-error "cannot be an array" } + end do ! { dg-error "Expecting END PROGRAM statement" } + do iw1(1)=1 ! { dg-error "Unclassifiable statement" } + do iw1=1 ! { dg-error "cannot be an array" } + end do ! { dg-error "Expecting END PROGRAM statement" } +END program Index: gcc/testsuite/gfortran.dg/pr56007.f =================================================================== --- gcc/testsuite/gfortran.dg/pr56007.f (revision 0) +++ gcc/testsuite/gfortran.dg/pr56007.f (revision 0) @@ -0,0 +1,10 @@ +! { dg-do compile } +! PR fortran/56007 +! Based on testcase by Tobias Schlüter + + integer iw1(90), doiw1(90) + do iw1(1)=1 + do iw1=1 + do iw1=1,2 ! { dg-error "cannot be an array" } + end do ! { dg-error "Expecting END PROGRAM statement" } + END