On Mon, Nov 23, 2020 at 11:08:13AM -0700, Martin Sebor wrote: > > I don't think it would be significant complication, on the other side you > > avoid wasting compile time memory on that (GC one, which means it will be > > wasted until GC collection if there is one ever). Plus all the issues from > > having the same information in multiple different places. > > So just to make sure I understand correctly (and answer the question > I asked): unsharing the expression as in the proposed patch won't > cause any correctness issues. You just find rewriting the code to > use the existing SAVE_EXPRs instead preferable for the reasons above. > Please correct me if I misunderstood something.
I admit I haven't looked into detail what exactly you are doing with those expressions. If they ever result in code generation rather than just warnings, then if they lack SAVE_EXPRs by the time you unshare, it would be a wrong-code (evaluating the expression multiple times). If they are just compared (lexicographically?), it can work, I guess a question is if foo () in two expressions is really equal, but I guess it would mean just one invocation of the same function and so can be considered equal. Another thing is that one expression can call something and the other something else and just the user will know they will in that case do the same thing. A warning (but not error) is fine in that case though. Jakub