Hi Paul! > Gesendet: Freitag, 24. Oktober 2025 um 13:35 > Von: "Paul Richard Thomas" <[email protected]> > An: "Harald Anlauf" <[email protected]> > CC: [email protected], [email protected], [email protected] > Betreff: Re: Re: [Patch, fortran] PR122290 - PDT - gfortan rejects real > intrinsic in default initialization & generic binding > > Hi Harald, > > Many thanks for giving the patch a thorough going over. The attached > version fixes the "Invalid read of size 8" problem that you > identified. While I was about it, I checked all the PDT testcases > using MALLOC_PERTURB_, which I should have done a long time ago. > pdt_19/_42/_46/_50.f03 all have a problem of one kind or another. I > will take a quick look to see if I can find the problems, which are > almost certainly generated in trans-array.cc (structure_alloc_comps). > However, the PDT parts of this function will all have to change, when > I fix PR82649. This will likely be the last PDT PR that I tackle since > it involves a change of representation, rather than parse/resolution > fixes. > > > s/initailizers/initializers/ > > s/enities/entities/ > > > > Fixed. > > > > > ==8558== Invalid read of size 8 > > > > ==8558== at 0xB1EB36: get_kind(bt, gfc_expr*, char const*, int) > > > > (simplify.cc:133) > > > > ==8558== by 0xB31558: gfc_simplify_real(gfc_expr*, gfc_expr*) > > > > (simplify.cc:7547) > > > > ==8558== by 0xA6E149: do_simplify(gfc_intrinsic_sym*, gfc_expr*) > > > > (intrinsic.cc:4895) > > > > ==8558== by 0xA7A49A: gfc_intrinsic_func_interface(gfc_expr*, int) > > > > (intrinsic.cc:5298) > > > > ==8558== by 0xAEED5B: resolve_unknown_f(gfc_expr*) (resolve.cc:3106) > > > > ==8558== by 0xAEFCBE: resolve_function(gfc_expr*) (resolve.cc:3533) > > > > ==8558== by 0xAFAFE8: gfc_resolve_expr(gfc_expr*) (resolve.cc:8181) > > > > ==8558== by 0xB099C0: gfc_resolve_code(gfc_code*, gfc_namespace*) > > > > (resolve.cc:13878) > > > > ==8558== by 0xB18EDB: resolve_codes(gfc_namespace*) > > > > (resolve.cc:19897) > > > > ==8558== by 0xB18FAC: gfc_resolve(gfc_namespace*) (resolve.cc:19932) > > > > ==8558== by 0xADC576: resolve_all_program_units(gfc_namespace*) > > > > (parse.cc:7481) > > > > ==8558== by 0xADCD85: gfc_parse_file() (parse.cc:7741) > > > > > > > > Maybe this can be traced back to a code path where a variable > > > > is not suitably initialized` > > The fix of this problem required the move of the PDT kind conversion > from simplify.cc to primary.cc and taking the gfc_replace_expression > call to outside of the reference chain walk.
Nice! This indeed fixes the issue here, too. > As before, regtests on FC42/x86_64. OK for mainline? Yes, this is OK now. Thanks for the patch! Harald > Paul >
