From: Tobias Burnus <Tobias_Burnus@mentor.com>
To: Harald Anlauf <anlauf@gmx.de>,
Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Cc: Harald Anlauf via Gcc-patches <gcc-patches@gcc.gnu.org>,
fortran <fortran@gcc.gnu.org>
Subject: Re: [PATCH] PR fortran/100950 - ICE in output_constructor_regular_field, at varasm.c:5514
Date: Mon, 21 Jun 2021 14:12:40 +0200 [thread overview]
Message-ID: <f5b54909-a79a-735d-d9b7-2e00a0c4f563@mentor.com> (raw)
In-Reply-To: <trinity-58c46611-3a76-4e85-93ab-314d0041369f-1623351132345@3c-app-gmx-bap45>
Hi Harald,
sorry for being way behind my review duties :-(
On 10.06.21 20:52, Harald Anlauf via Fortran wrote:
> +static bool
> +substring_has_constant_len (gfc_expr *e)
> +{
> + ptrdiff_t istart, iend;
> + size_t length;
> + bool equal_length = false;
> +
> + if (e->ts.type != BT_CHARACTER
> + || !e->ref
> + || e->ref->type != REF_SUBSTRING
Is there a reason why you do not handle:
type t
character(len=5) :: str1
character(len=:), allocatable :: str2
end type
type(t) :: x
allocate(x%str2, source="abd")
if (len (x%str)) /= 1) ...
if (len (x%str2(1:2) /= 2) ...
etc.
Namely: Search the last_ref = expr->ref->next->next ...?
and then check that lastref?
* * *
Slightly unrelated: I think the following does not violate
F2018's R916 / C923 – but is rejected, namely:
R916 type-param-inquiry is designator % type-param-name
the latter is 'len' or 'kind' for intrinsic types. And:
R901 designator is ...
or substring
But
character(len=5) :: str
print *, str(1:3)%len
end
fails with
2 | print *, str(1:3)%len
| 1
Error: Syntax error in PRINT statement at (1)
Assuming you don't want to handle it, can you open a new PR?
Thanks!
* * *
That's in so far related to your patch as last_ref would
then be the last ref before ref->next == NULL or
before ref->next->type == REF_INQUIRY
> + istart = gfc_mpz_get_hwi (e->ref->u.ss.start->value.integer);
> + iend = gfc_mpz_get_hwi (e->ref->u.ss.end->value.integer);
> + length = gfc_mpz_get_hwi (e->ref->u.ss.length->length->value.integer);
> +
> + if (istart <= iend)
> + {
> + if (istart < 1)
> + {
> + gfc_error ("Substring start index (%ld) at %L below 1",
> + (long) istart, &e->ref->u.ss.start->where);
As mentioned by Bernhard, you could use HOST_WIDE_INT_PRINT_DEC.
(It probably only matters on Windows which uses long == int = 32bit for
strings longer than INT_MAX.)
Thanks,
Tobias
-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstrasse 201, 80634 München Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Frank Thürauf
next prev parent reply other threads:[~2021-06-21 12:12 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-09 21:39 Harald Anlauf
2021-06-10 10:24 ` Bernhard Reutner-Fischer
2021-06-10 12:47 ` Bernhard Reutner-Fischer
2021-06-10 18:52 ` Harald Anlauf
2021-06-11 6:02 ` Bernhard Reutner-Fischer
2021-06-21 12:12 ` Tobias Burnus [this message]
2021-07-12 21:23 ` Harald Anlauf
2021-08-03 21:17 ` Harald Anlauf
2021-08-11 19:28 ` *PING* " Harald Anlauf
2021-08-18 10:22 ` Tobias Burnus
2021-08-18 21:01 ` Harald Anlauf
2021-08-19 7:52 ` Tobias Burnus
2021-08-19 19:11 ` Harald Anlauf
2021-08-20 0:21 ` H.J. Lu
2021-08-20 6:48 ` Harald Anlauf
2021-08-20 9:16 ` Jakub Jelinek
2021-08-20 9:45 ` Aw: " Harald Anlauf
2021-08-20 10:12 ` Jakub Jelinek
2021-08-20 10:53 ` Aw: " Harald Anlauf
2021-08-20 10:59 ` Jakub Jelinek
2021-08-20 11:43 ` [PATCH, committed] Fix bootstrap breakage caused by r12-3033 (PR fortran/100950 - ICE in output_constructor_regular_field, at varasm.c:5514) Harald Anlauf
2021-08-20 12:01 ` Aw: Re: Re: [PATCH] PR fortran/100950 - ICE in output_constructor_regular_field, at varasm.c:5514 Tobias Burnus
2021-08-20 12:17 ` Aw: " Harald Anlauf
2021-08-20 14:19 ` Tobias Burnus
2021-08-20 19:43 ` Harald Anlauf
2021-08-20 11:50 ` [Patch] c-format.c/Fortran: Support %wd / host-wide integer in gfc_error (Re: [PATCH] PR fortran/100950 - ICE in output_constructor_regular_field, at varasm.c:5514) Tobias Burnus
2021-08-20 11:56 ` Jakub Jelinek
2021-08-20 13:47 ` Tobias Burnus
2021-08-20 13:53 ` Jakub Jelinek
2021-08-20 9:29 ` [PATCH] PR fortran/100950 - ICE in output_constructor_regular_field, at varasm.c:5514 Tobias Burnus
2021-06-18 20:47 ` PING " Harald Anlauf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f5b54909-a79a-735d-d9b7-2e00a0c4f563@mentor.com \
--to=tobias_burnus@mentor.com \
--cc=anlauf@gmx.de \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=rep.dot.nop@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).