This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: [PATCH] Use the middle-end boolean_type_node
- From: Steve Kargl <sgk at troutmask dot apl dot washington dot edu>
- To: Janne Blomqvist <blomqvist dot janne at gmail dot com>
- Cc: Fortran List <fortran at gcc dot gnu dot org>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 20 Dec 2016 06:59:11 -0800
- Subject: Re: [PATCH] Use the middle-end boolean_type_node
- Authentication-results: sourceware.org; auth=none
- References: <1481662749-31499-1-git-send-email-blomqvist.janne@gmail.com> <CAO9iq9HHnykJFi2YKO9SOOH+SRa8Kau=itRo8O3k2tG285Rcbg@mail.gmail.com>
Thought I gave an 'ok', but apparently never sent email.
Sorry about that. Yes, ok to commit.
--
steve
On Tue, Dec 20, 2016 at 04:56:51PM +0200, Janne Blomqvist wrote:
> PING!
>
> On Tue, Dec 13, 2016 at 10:59 PM, Janne Blomqvist
> <blomqvist.janne@gmail.com> wrote:
> > Use the boolean_type_node setup by the middle-end instead of
> > redefining it. boolean_type_node is not used in GFortran for any
> > ABI-visible stuff, only internally as the type of boolean
> > expressions. There appears to be one exception to this, namely the
> > caf_get* and caf_send* calls which have boolean_type_node
> > arguments. However, on the library side they seem to use C _Bool, so I
> > suspect this might be a case of a argument mismatch that hasn't
> > affected anything so far.
> >
> > The practical effect of this is that the size of such variables will
> > be the same as a C _Bool or C++ bool, that is, on most targets a
> > single byte. Previously we redefined boolean_type_node to be a Fortran
> > default logical kind sized variable, that is 4 or 8 bytes depending on
> > compile options. This might enable slightly more compact code, in case
> > the optimizer determines that the result of such a generated
> > comparison expression needs to be stored in some temporary location
> > rather than being used immediately.
> >
> > Regression tested on x86_64-pc-linux-gnu, Ok for trunk?
> >
> > 2016-12-13 Janne Blomqvist <jb@gcc.gnu.org>
> >
> > * trans-types.c (gfc_init_types): Don't redefine boolean type node.
> > ---
> > gcc/fortran/trans-types.c | 4 ----
> > 1 file changed, 4 deletions(-)
> >
> > diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
> > index 354308f..e8dafa0 100644
> > --- a/gcc/fortran/trans-types.c
> > +++ b/gcc/fortran/trans-types.c
> > @@ -961,10 +961,6 @@ gfc_init_types (void)
> > wi::mask (n, UNSIGNED,
> > TYPE_PRECISION (size_type_node)));
> >
> > - boolean_type_node = gfc_get_logical_type (gfc_default_logical_kind);
> > - boolean_true_node = build_int_cst (boolean_type_node, 1);
> > - boolean_false_node = build_int_cst (boolean_type_node, 0);
> > -
> > /* ??? Shouldn't this be based on gfc_index_integer_kind or so? */
> > gfc_charlen_int_kind = 4;
> > gfc_charlen_type_node = gfc_get_int_type (gfc_charlen_int_kind);
> > --
> > 2.7.4
> >
>
>
>
> --
> Janne Blomqvist
--
Steve