From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 92763 invoked by alias); 20 Jul 2018 21:38:04 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 92741 invoked by uid 89); 20 Jul 2018 21:38:03 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-8.3 required=5.0 tests=AWL,BAYES_40,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=impure, mandate, sk:ffronte, became X-HELO: mail-yb0-f172.google.com Received: from mail-yb0-f172.google.com (HELO mail-yb0-f172.google.com) (209.85.213.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 20 Jul 2018 21:38:02 +0000 Received: by mail-yb0-f172.google.com with SMTP id y11-v6so5168306ybm.7; Fri, 20 Jul 2018 14:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to; bh=VFWzLtfL5Sm6YLbe/dGpQU7mP5zPv8Myln2aMFvLv4g=; b=iudwfPAccU+Z+8WYjxU/sEsEiD9FuzOD0kDkzMFfPbyL8vroCOJoHKbRJrGeWT5xLW 3xxTAjyd6Nw2mZkW7mdjp6Mzpc0as6Qi+i5bEGR5+QF9YxIpFuoYdc4/uUwsH88wcsd/ P03xNZ5pSnoCQjSlw73uQqgLXYGwjxQaZP0CDo5AYf+A09ZlFsB2t/YrNeoNWHSYhSa0 Qe/hFcdtuyiCwElU6R5J5ztl7pfRSgwTf3iBSfzc2J6jmuIwN6bBXfDxDxmItUdSmLuN +zFxwYJBdoRI8DkZEQwBK1V1GUgO9KNtMikTPkbQrd5vDtfB4WA1/TLxSjFQ5+9sDc3Y fz+g== MIME-Version: 1.0 Sender: jaydub66@gmail.com Received: by 2002:a0d:ea0c:0:0:0:0:0 with HTTP; Fri, 20 Jul 2018 14:37:59 -0700 (PDT) From: Janus Weil Date: Fri, 20 Jul 2018 21:38:00 -0000 Message-ID: Subject: [Patch, Fortran] PR 57160: short-circuit IF only with -ffrontend-optimize To: gfortran , gcc-patches Content-Type: multipart/mixed; boundary="0000000000001aed8e0571751c02" X-IsSubscribed: yes X-SW-Source: 2018-07/txt/msg00086.txt.bz2 --0000000000001aed8e0571751c02 Content-Type: text/plain; charset="UTF-8" Content-length: 1919 Hi all, here is a follow-up patch to my recent commit for PR 85599, also dealing with the short-circuiting of logical operators. In the course of the extensive discussion of that PR it became clear that the Fortran standard allows the short-circuiting of .AND. and .OR. operators, but does not mandate it. gfortran currently does short-circuiting, and after my patch for PR 85599 warns about cases where this might remove an impure function call (which potentially can change results). Now, this PR (57160) is about code which relies on the short-circuiting behavior. Since short-circuiting is not guaranteed by the standard, such code is invalid. Generating a warning or an error at compile-time is a bit harder here, though, since there are multiple variations of such a situation, e.g.: * ASSOCIATED(p) .AND. p%T * ALLOCATED(a) .AND. a%T * i PR fortran/57160 * trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only with -ffrontend-optimize. Without that flag, make sure that both operands are evaluated. 2018-07-20 Janus Weil PR fortran/57160 * gfortran.dg/actual_pointer_function_1.f90: Fix invalid test case. --0000000000001aed8e0571751c02 Content-Type: text/x-patch; charset="US-ASCII"; name="pr57160.diff" Content-Disposition: attachment; filename="pr57160.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jjui1zgz0 Content-length: 1733 SW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1leHByLmMJKHJldmlz aW9uIDI2MjkwOCkKKysrIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwkod29y a2luZyBjb3B5KQpAQCAtMzM0OCwxMiArMzM0OCwxMiBAQCBnZmNfY29udl9l eHByX29wIChnZmNfc2UgKiBzZSwgZ2ZjX2V4cHIgKiBleHByKQogICAgICAg cmV0dXJuOwogCiAgICAgY2FzZSBJTlRSSU5TSUNfQU5EOgotICAgICAgY29k ZSA9IFRSVVRIX0FORElGX0VYUFI7CisgICAgICBjb2RlID0gZmxhZ19mcm9u dGVuZF9vcHRpbWl6ZSA/IFRSVVRIX0FORElGX0VYUFIgOiBUUlVUSF9BTkRf RVhQUjsKICAgICAgIGxvcCA9IDE7CiAgICAgICBicmVhazsKIAogICAgIGNh c2UgSU5UUklOU0lDX09SOgotICAgICAgY29kZSA9IFRSVVRIX09SSUZfRVhQ UjsKKyAgICAgIGNvZGUgPSBmbGFnX2Zyb250ZW5kX29wdGltaXplID8gVFJV VEhfT1JJRl9FWFBSIDogVFJVVEhfT1JfRVhQUjsKICAgICAgIGxvcCA9IDE7 CiAgICAgICBicmVhazsKIApJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9hY3R1YWxfcG9pbnRlcl9mdW5jdGlvbl8xLmY5MAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2Fj dHVhbF9wb2ludGVyX2Z1bmN0aW9uXzEuZjkwCShyZXZpc2lvbiAyNjI5MDgp CisrKyBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2FjdHVhbF9wb2ludGVy X2Z1bmN0aW9uXzEuZjkwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNywx MSBAQCBDT05UQUlOUwogDQogICBsb2dpY2FsIGZ1bmN0aW9uIGNwX2xvZ2dl cl9sb2cobG9nZ2VyKQ0KICAgICBUWVBFKGNwX2xvZ2dlcl90eXBlKSwgUE9J TlRFUiA6OmxvZ2dlcg0KLSAgICBjcF9sb2dnZXJfbG9nID0gYXNzb2NpYXRl ZCAobG9nZ2VyKSAuYW5kLiAobG9nZ2VyJWEgLmVxLiA0MikNCisgICAgaWYg KGFzc29jaWF0ZWQgKGxvZ2dlcikpIHRoZW4NCisgICAgICBjcF9sb2dnZXJf bG9nID0gKGxvZ2dlciVhIC5lcS4gNDIpDQorICAgIGVsc2UNCisgICAgICBj cF9sb2dnZXJfbG9nID0gLmZhbHNlLg0KKyAgICBlbmQgaWYNCiAgIEVORCBm dW5jdGlvbg0KIA0KICAgRlVOQ1RJT04gY3BfZ2V0X2RlZmF1bHRfbG9nZ2Vy KHYpIFJFU1VMVChyZXMpDQo= --0000000000001aed8e0571751c02--