You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The user-defined operator case in trans::base::trans_assign_op passes an expr evaluating to the callee's address, rather than the callee address, to trans_call_inner. Since the callee is known, this should be the statically known callee address (as per a FIXME).
The text was updated successfully, but these errors were encountered:
This is much worse than this description makes it sound. If I'm reading the code correctly, what's actually happening here is that expr_x += expr_y results in expr_x being trans'd twice (e.g., foo().x += 3 would call foo() twice) if + is overloaded. The proper fix is to refactor the impl::trans_method_callee callee function to take a pre-evaluated self expression, I think, or perhaps have it be a shallow wrapper around a function which does.
The user-defined operator case in
trans::base::trans_assign_op
passes an expr evaluating to the callee's address, rather than the callee address, totrans_call_inner
. Since the callee is known, this should be the statically known callee address (as per a FIXME).The text was updated successfully, but these errors were encountered: