[X86][Darwin] Emit compact-unwind for register-sized stack adjustments

For stack frames on the size of a register in x86, a code size optimization
emits "push rax/eax" instead of "sub" for stack allocation. For example:

  pushq %rax
  .cfi_def_cfa_offset 16

However, we are falling back to DWARF in this case because we cannot
encode %rax as a saved register.

This requirement is wrong, since we don't care about the contents of
%rax, it is the equivalent of a sub.

In order to specify that we care about the contents of %rax, we would
need a .cfi_offset %rax, <offset>.

It's also overzealous in the case where there are pushes for callee saved
registers followed by a "push rax/eax" instead of "sub", in which case we should
also be able to encode the callee saved regs and everything else using compact

Patch authored by Bruno Cardoso Lopes.

Differential Revision: https://reviews.llvm.org/D13793

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350623 91177308-0d34-0410-b5e6-96231b3b80d8
2 files changed