left-shift by one emits bad code

In getting this to reproduce I've somewhat managed to get an idea of
what's going on here.  Essentially what happens is that when you do
something like

  %output = shl i65 %input, 1

the code that gets emitted on amd64 looks like

  addq %output_lo, %output_lo
  addcq %output_hi, %output_hi

This is good, as it's a pretty compact code sequence.  The problem is
that LLVM doesn't appear to be tracking some sort of register clobbers
correctly and is not regenerating the correct sequence between
function calls.

I've constructed the smallest example I could come up with that
properly tests this.