On Mon, Jan 8, 2018 at 11:48 PM, Thomas Koenig <tkoe...@netcologne.de> wrote: > Hi Janne, > >> If I understand it correctly, in the library the back argument is >> always a LOGICAL(kind=4). But in the frontend, the back argument is >> coerced to gfc_default_logical_kind. So this doesn't work if one uses >> the -fdefault-integer-8 option, because then gfc_default_logical_kind >> will be 8. >> >> I suggest you create a constant "gfc_logical4_kind" and use that in >> the frontend. > > > Implemented in the version below. (I discussed briefly with myself > if it would make sense to create a global variable to hold the value > of 4, then decided against that, hence the macro). I also added > a new test case with -fdefault-integer-8.
Thanks, good enough for me. > OK for trunk? In iresolve.c your patch adds code like + if (back->ts.kind != gfc_logical_4_kind) + { + gfc_typespec ts; + gfc_clear_ts (&ts); + ts.type = BT_LOGICAL; + ts.kind = gfc_default_logical_kind; + gfc_convert_type_warn (back, &ts, 2, 0); + } in two places. Presumably the ts.kind assignment should be gfc_logical_4_kind, no? Secondly, since the back argument is always present (you always set it to .false., as there is no need in the library to distinguish between a non-present and a .false. argument in this case), I think it would make more sense to pass it by value than a pointer to it. Sorry for missing this the first time around. -- Janne Blomqvist