Fix handling of PutArgStk
authorCarol Eidt <carol.eidt@microsoft.com>
Tue, 10 Jan 2017 21:55:47 +0000 (13:55 -0800)
committerCarol Eidt <carol.eidt@microsoft.com>
Tue, 10 Jan 2017 21:55:47 +0000 (13:55 -0800)
commit8acbaf9c77a19ba833e5150b24c79449f31221fb
treed5eb18345da6ca89895fe0b3a1a92946d803c52e
parent01f8e7d49fb666c3feae2658eb623e7631b73ce2
Fix handling of PutArgStk

GT_PUTARG_STK doesn't produce a value, so it should have the GTK_NOVALUE flag set.
Although the dstCount was being set to zero by the parent call, localDefUse was also being set, causing a register to be allocated. Fixing this produces a number of improvements due to reuse of constant registers that were otherwise unnecessarily "overwritten" by the localDefUse.
Also on x86, GT_LONG shouldn't be used to pass a long, since GT_LONG should always be a value-producing node. Instead, use the existing GT_FIELD_LIST approach.
src/jit/codegenxarch.cpp
src/jit/gtlist.h
src/jit/lir.cpp
src/jit/lower.cpp
src/jit/lowerxarch.cpp
src/jit/rationalize.cpp