Dear Tobias, > The following test case doesn't work; it should print "Overloaded" - and > does so with crayftn. But with your patch, it doesn't.
For some reason, I guess, the attribute defined_assign_comp is not getting passed along to type 'b'. > + build_assignment (gfc_exec_op op, gfc_expr *expr1, gfc_expr *expr2, + > gfc_component *comp1, gfc_component *comp2, locus loc) > > For comp1/comp2, I am wondering whether one shouldn't add a > gcc_assert ((comp1 && comp2) || (!comp1 && !comp2)); I guess that it will do no harm and might be advised if this function is called from elsewhere. > > > + get_temp_from_expr (gfc_expr *e, gfc_namespace *ns) > > Not that we make so much use of it, but its symbol could be a candidate for > attr.artificial. (I don't know whether it should.) I don't know either. I don't recall even noticing the artificial attribute. I will follow it up to see what use is made of it and see if it applies here. Presumably this couples directly to DECL_ARTIFICIAL? Thanks for the review. Paul PS I really, really want to get used to this PR! PPS I presume that the reason for two temporaries is clear to you?