https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116292

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vehre at gcc dot gnu.org

--- Comment #7 from anlauf at gcc dot gnu.org ---
OK, this is weird:

Breakpoint 3, conv_intrinsic_move_alloc (code=<optimized out>)
    at ../../gcc-trunk/gcc/fortran/trans-intrinsic.cc:12769
12769             from_se.expr = gfc_get_symbol_decl (vtab);
(gdb) l
12764             gfc_symbol *vtab;
12765             from_tree = from_se.expr;
12766
12767             vtab = gfc_find_vtab (&from_expr->ts);
12768             gcc_assert (vtab);
12769             from_se.expr = gfc_get_symbol_decl (vtab);
12770           }
12771         gfc_add_block_to_block (&block, &from_se.pre);
12772
12773         to_se.want_pointer = 1;

The offending code here was added in r15-1704-gaa3599a10cab34:

commit aa3599a10cab34104c0b9bd6951c5f0c420795d8
Author: Andre Vehreschild <ve...@gcc.gnu.org>
Date:   Tue Jun 11 12:52:26 2024 +0200

    Add gfc_class_set_vptr.

    First step to adding a general assign all class type's data members
    routine.  Having a general routine prevents forgetting to tackle the
    edge cases, e.g. setting _len.

    gcc/fortran/ChangeLog:

            * trans-expr.cc (gfc_class_set_vptr): Add setting of _vptr
            member.
            * trans-intrinsic.cc (conv_intrinsic_move_alloc): First use
            of gfc_class_set_vptr and refactor very similar code.
            * trans.h (gfc_class_set_vptr): Declare the new function.


CC'ing Andre.

Reply via email to