[musttail] Don't forward AL on Win64
authorReid Kleckner <rnk@google.com>
Mon, 18 Nov 2019 23:31:37 +0000 (15:31 -0800)
committerReid Kleckner <rnk@google.com>
Wed, 20 Nov 2019 00:54:00 +0000 (16:54 -0800)
commit606a2bd6218e8378728b6c1e021e64bb57084a97
treedccb9878f3f8cb8e8b332d9ee63d910eb05033dc
parentbffdee8ef379126de3f2581214d89c1b29f440b7
[musttail] Don't forward AL on Win64

AL is only used for varargs on SysV platforms. Don't forward it on
Windows. This allows control flow guard to set up an extra hidden
parameter in RAX, as described in PR44049.

This also has the effect of freeing up RAX for use in virtual member
pointer thunks, which may also be a nice little code size improvement on
Win64.

Fixes PR44049

Reviewers: ajpaverd, efriedma, hans

Differential Revision: https://reviews.llvm.org/D70413
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/cfguard-checks.ll
llvm/test/CodeGen/X86/musttail-varargs.ll