[Bug fortran/78443] [OOP] Incorrect behavior with non_overridable keyword
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Nov 21 17:33:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78443
--- Comment #2 from janus at gcc dot gnu.org ---
Indeed this behavior is a bug.
Looking at the dump generated with -fdump-tree-original, it seems that all
typebound-procedure calls are generated as they should be:
* The three calls in the main program are reduced to non-polymorphic calls:
test2 (&class.2, &C.3565);
test2 (&class.3, &C.3567);
test1 (&class.4, &C.3571);
* The calls to 'square' in the test procedures are performed polymorphically:
D.3553 = this->_vptr->square ((struct __class_types_P2_t *) this,
(real(kind=4) *) x);
D.3555 = this->_vptr->square ((struct __class_types_P1_t *) this,
(real(kind=4) *) x);
So, what goes wrong is probably the assignment of the TBPs in the vtab.
More information about the Gcc-bugs
mailing list