[Bug fortran/104314] ICE in deferred_op_assign, at fortran/resolve.cc:11794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104314 anlauf at gcc dot gnu.org changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #5 from anlauf at gcc dot gnu.org --- Fixed on mainline. Closing. Thanks for the report!
[Bug fortran/104314] ICE in deferred_op_assign, at fortran/resolve.cc:11794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104314 --- Comment #4 from CVS Commits --- The master branch has been updated by Harald Anlauf : https://gcc.gnu.org/g:7bd4deb2a7c1394550610ab27507d1ed2af817c2 commit r13-2690-g7bd4deb2a7c1394550610ab27507d1ed2af817c2 Author: Harald Anlauf Date: Thu Sep 15 22:06:53 2022 +0200 Fortran: error recovery for bad deferred character length assignment [PR104314] gcc/fortran/ChangeLog: PR fortran/104314 * resolve.cc (deferred_op_assign): Do not try to generate temporary for deferred character length assignment if types do not agree. gcc/testsuite/ChangeLog: PR fortran/104314 * gfortran.dg/pr104314.f90: New test. Co-authored-by: Steven G. Kargl
[Bug fortran/104314] ICE in deferred_op_assign, at fortran/resolve.cc:11794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104314 anlauf at gcc dot gnu.org changed: What|Removed |Added CC||anlauf at gcc dot gnu.org --- Comment #3 from anlauf at gcc dot gnu.org --- (In reply to kargl from comment #1) > Untested patch. Yes, that works. Even shorter: diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index ca114750f65..3834f9a3f06 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -11803,6 +11803,7 @@ deferred_op_assign (gfc_code **code, gfc_namespace *ns) if (!((*code)->expr1->ts.type == BT_CHARACTER && (*code)->expr1->ts.deferred && (*code)->expr1->rank +&& (*code)->expr2->ts.type == BT_CHARACTER && (*code)->expr2->expr_type == EXPR_OP)) return false;
[Bug fortran/104314] ICE in deferred_op_assign, at fortran/resolve.cc:11794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104314 --- Comment #2 from Steve Kargl --- On Mon, Jan 31, 2022 at 08:14:39PM +, kargl at gcc dot gnu.org wrote: > > --- Comment #1 from kargl at gcc dot gnu.org --- > Untested patch. > Seems to pass regression testing.
[Bug fortran/104314] ICE in deferred_op_assign, at fortran/resolve.cc:11794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104314 kargl at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW CC||kargl at gcc dot gnu.org Priority|P3 |P4 Ever confirmed|0 |1 Last reconfirmed||2022-01-31 --- Comment #1 from kargl at gcc dot gnu.org --- Untested patch. diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 835a4783718..d18404da09d 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -11784,6 +11784,9 @@ deferred_op_assign (gfc_code **code, gfc_namespace *ns) if (gfc_expr_attr ((*code)->expr1).pointer) return false; + if ((*code)->expr1->ts.type != (*code)->expr2->ts.type) +return false; + tmp_expr = get_temp_from_expr ((*code)->expr1, ns); tmp_expr->where = (*code)->loc;