From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 60CC13858413; Fri, 12 Nov 2021 20:18:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 60CC13858413 Received: by mail-wm1-x332.google.com with SMTP id n33-20020a05600c502100b0032fb900951eso5556275wmr.4; Fri, 12 Nov 2021 12:18:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5kY6Y2acubc509B6agsLdd++2HxxxIO3pQIJ16m/Gaw=; b=tqUWryVlru9AbzvTuDUJGt4NbgdFiRVZgjies8JDIbG+z7psLZknQBTX1dluC+GQhM VsJh+oTxq6GC9M+Daydt0gsKLRYASygy+19bNzzgiIChbRrg0TccEXspc4H4f4QxSTpK oIIhw4502KutX9AzRdl9jIZWCcisHTZ/T0bdSLc4kMiJOHEy0LvbutslNW5WFWu9AoFe +55r4JfY9eRc9VRXnPttBRdMn744hPYeGIieONsu6215vw4uzqdaieczXhdB0Kjmg+E6 7XzX7ue9e1e8GTk9pWXa9rQsxE0OAfzBZF9DsWiKQEiA14G5M+N6BgaFpnmt+y7yFPGf nP7Q== X-Gm-Message-State: AOAM533s4wDB4m+Zo8sWAIIouPh8EnpAQcFYGNH6dXzcEQq2LI/2JDJv GFE4fc3Sqv6l+wgPZFbqkuY= X-Google-Smtp-Source: ABdhPJx2Ad5q9NYACngrYGeQae9BW8ZyzBVTb4Hg1NIqXP2Fk+7gK7wwXmJdQg3S2/Z6fwjFhr6pnw== X-Received: by 2002:a7b:c764:: with SMTP id x4mr38343814wmk.78.1636748335288; Fri, 12 Nov 2021 12:18:55 -0800 (PST) Received: from nbbrfq (dynamic-2bq7di4u2lfl4qjka9-pd01.res.v6.highway.a1.net. [2001:871:227:33a8:f6a3:c58c:7641:e771]) by smtp.gmail.com with ESMTPSA id u2sm7696937wrs.17.2021.11.12.12.18.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Nov 2021 12:18:55 -0800 (PST) Date: Fri, 12 Nov 2021 21:18:52 +0100 From: Bernhard Reutner-Fischer To: Harald Anlauf via Fortran Cc: rep.dot.nop@gmail.com, Harald Anlauf , gcc-patches Subject: Re: [PATCH] PR fortran/102368 - Failure to compile program using the C_SIZEOF function in ISO_C_BINDING Message-ID: <20211112211852.44dec86a@nbbrfq> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2021 20:18:58 -0000 On Fri, 12 Nov 2021 18:39:48 +0100 Harald Anlauf via Fortran wrote: Sounds plausible. Nits: > diff --git a/gcc/testsuite/gfortran.dg/c_sizeof_7.f90 b/gcc/testsuite/gfortran.dg/c_sizeof_7.f90 > new file mode 100644 > index 00000000000..3cfa3371f72 > --- /dev/null > +++ b/gcc/testsuite/gfortran.dg/c_sizeof_7.f90 [I'd name this .f08, no?] > @@ -0,0 +1,13 @@ > +! { dg-do compile } > +! { dg-options "-std=f2008 -fdump-tree-original" } [and drop the -std] > +! { dg-final { scan-tree-dump-times "_gfortran_stop_numeric" 0 "original" } } [ ...-times 0 == scan-tree-dump-not ] > +! PR fortran/102368 > + > +program main > + use, intrinsic :: iso_c_binding > + implicit none > + character(kind=c_char, len=*), parameter :: a = 'abc' > + character(kind=c_char, len=8) :: b character(kind=c_char, len=-42) :: c ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=-0) :: d ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=0) :: e ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=+0) :: f ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=0.0d) :: g ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=3.) :: h ! { dg-error "positive integer greater than 0" } character(kind=c_char, len=.031415e2) :: i ! { dg-error "positive integer greater than 0" } ... are caught elsewhere if one assumes that len should be a positive int > 0 (didn't look) Also did not look if character(kind=c_char, len=SELECTED_REAL_KIND(10)) :: j ! is that constant? Should it be? > + if (c_sizeof (a) /= 3) stop 1 > + if (c_sizeof (b) /= 8) stop 2 indeed. cheers, > +end program main > -- > 2.26.2 >