Michael J Gruber <michael@xxxxxxxxx> writes: >> Can squash ever be true in this function? >> >> This function has two callsites: merge_trivial() and >> finish_automerge(). >> >> I think merge_trivial() will not be called under "--squash", which >> turns option_commit off and the only callsite of it is inside an >> else-if clause that requres option_commit to be true. You can do a >> similar deduction around the "automerge_was_ok" variable to see if >> finish_automerge() can be called when "--squash" is given; I suspect >> the answer may be no. > > I'll go without the if, after more testing. I was sort of expecting that tracing the control flow would give us the definite answer and that would be much better than any amount of testing. In any case, I wasn't even suggesting to remove "if". It might even be worth doing if (squash) BUG("the control must not reach here under --squash"); write_emrge_heads(...); if we know the control does not have to reach with "--squash" in today's code, so that future careless refactoring does not break this fix.