public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Paul Richard Thomas <paul.richard.thomas@gmail.com>
To: "fortran@gcc.gnu.org" <fortran@gcc.gnu.org>,
	gcc-patches <gcc-patches@gcc.gnu.org>
Subject: Re: [Patch, fortran] PRs 82605, 82606 and 82622 - PDT problems
Date: Fri, 01 Dec 2017 17:15:00 -0000	[thread overview]
Message-ID: <CAGkQGiL_UrX4bzvjmZbtN+TcqvWoEYB9ZSQcB4hm0CMrq=ifMA@mail.gmail.com> (raw)
In-Reply-To: <CAGkQGiLFa7Wc_wwuehs6b2XzEGKj-coRV15+p+CJXK9Ab-ap9Q@mail.gmail.com>

It turned out that I couldn't stop and so fixed a number of other
bugs. All are minor tweaks, well hidden behind the pdt attributes.

Committed as r255311.

Paul

2017-12-01  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/82605
    * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL.
    (resolve_pdt): Correct typo in prior comment. Emit an error if
    any parameters are deferred and the object is neither pointer
    nor allocatable.

    PR fortran/82606
    * decl.c (gfc_get_pdt_instance): Continue if the parameter sym
    is not present or has no name. Select the parameter by name
    of component, rather than component order. Remove all the other
    manipulations of 'tail' when building the pdt instance.
    (gfc_match_formal_arglist): Emit and error if a star is picked
    up in a PDT decl parameter list.

    PR fortran/82622
    * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an
    info->end, use it rather than falling through to
    gcc_unreachable.
    (structure_alloc_comps): Check that param->name is non-null
    before comparing with the component name.
    * trans-decl.c (gfc_get_symbol_decl): Do not use the static
    initializer for PDT symbols.
    (gfc_init_default_dt): Do nothing for PDT symbols.
    * trans-io.c (transfer_array_component): Parameterized array
    components use the descriptor ubound since the shape is not
    available.

    PR fortran/82719
    PR fortran/82720
    * trans-expr.c (gfc_conv_component_ref): Do not use the charlen
    backend_decl of pdt strings. Use the hidden component instead.
    * trans-io.c (transfer_expr): Do not do IO on "hidden" string
    lengths. Use the hidden string length for pdt string transfers
    by adding it to the se structure. When finished nullify the
    se string length.

    PR fortran/82866
    * decl.c (gfc_match_formal_arglist): If a name is not found or
    star is found, while reading a type parameter list, emit an
    immediate error.
    (gfc_match_derived_decl): On reading a PDT parameter list, on
    failure to match call gfc_error_recovery.

    PR fortran/82978
    * decl.c (build_struct): Character kind defaults to 1, so use
    kind_expr whatever is the set value.
    (gfc_get_pdt_instance): Ditto.
    * trans-array.c (structure_alloc_comps): Copy the expression
    for the PDT string length before parameter substitution. Use
    this expression for evaluation and free it after use.

2017-12-01  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/82605
    * gfortran.dg/pdt_4.f03 : Incorporate the new error.

    PR fortran/82606
    * gfortran.dg/pdt_19.f03 : New test.
    * gfortran.dg/pdt_21.f03 : New test.

    PR fortran/82622
    * gfortran.dg/pdt_20.f03 : New test.
    * gfortran.dg/pdt_22.f03 : New test.

    PR fortran/82719
    PR fortran/82720
    * gfortran.dg/pdt_23.f03 : New test.

    PR fortran/82866
    * gfortran.dg/pdt_24.f03 : New test.

    PR fortran/82978
    * gfortran.dg/pdt_10.f03 : Correct for error in coding the for
    kind 4 component and change the kind check appropriately.
    * gfortran.dg/pdt_25.f03 : New test.


On 30 November 2017 at 12:47, Paul Richard Thomas
<paul.richard.thomas@gmail.com> wrote:
> This patch fixes the above PRs and the additional problems in comment
> #1 of both 82606 and 82622.
>
> For the main part, the patch consists of 'obvious' tweaks to the PDT
> machinery. The exception to this is the chunk in
> trans-array.c(set_loop_bounds), which is needed to handle
> parameterized array components coming from trans-io.c. This is safe
> because the code would have fallen through to gcc_unreachable
> otherwise. If the info->end is present then this can be used.
>
> Bootstrapped and regtested on FC23/x86_64 - OK for trunk?
>
> I will commit tomorrow morning if there are no complaints in the meantime.
>
> Regards
>
> Paul
>
> 2017-11-30  Paul Thomas  <pault@gcc.gnu.org>
>
>     PR fortran/82605
>     * resolve.c (get_pdt_constructor): Initialize 'cons' to NULL.
>     (resolve_pdt): Correct typo in prior comment. Emit an error if
>     any parameters are deferred and the object is neither pointer
>     nor allocatable.
>
>     PR fortran/82606
>     * decl.c (gfc_get_pdt_instance): Continue if the parameter sym
>     is not present or has no name. Select the parameter by name
>     of component, rather than component order. Remove all the other
>     manipulations of 'tail' when building the pdt instance.
>     (gfc_match_formal_arglist): Emit and error if a star is picked
>     up in a PDT decl parameter list.
>
>     PR fortran/82622
>     * trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an
>     info->end, use it rather than falling through to
>     gcc_unreachable.
>     (structure_alloc_comps): Check that param->name is non-null
>     before comparing with the component name.
>     * trans-decl.c (gfc_get_symbol_decl): Do not use the static
>     initializer for PDT symbols.
>     (gfc_init_default_dt): Do nothing for PDT symbols.
>     * trans-io.c (transfer_array_component): Parameterized array
>     components use the descriptor ubound since the shape is not
>     available.
>
> 2017-11-30  Paul Thomas  <pault@gcc.gnu.org>
>
>     PR fortran/82605
>     * gfortran.dg/pdt_4.f03 : Incorporate the new error.
>
>     PR fortran/82606
>     * gfortran.dg/pdt_19.f03 : New test.
>     * gfortran.dg/pdt_21.f03 : New test.
>
>     PR fortran/82622
>     * gfortran.dg/pdt_20.f03 : New test.
>     * gfortran.dg/pdt_22.f03 : New test.



-- 
"If you can't explain it simply, you don't understand it well enough"
- Albert Einstein

      reply	other threads:[~2017-12-01 17:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-30 13:10 Paul Richard Thomas
2017-12-01 17:15 ` Paul Richard Thomas [this message]

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='CAGkQGiL_UrX4bzvjmZbtN+TcqvWoEYB9ZSQcB4hm0CMrq=ifMA@mail.gmail.com' \
    --to=paul.richard.thomas@gmail.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    /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).