diff options
author | Michelle McDaniel <adiaaida@gmail.com> | 2016-05-31 08:40:16 -0700 |
---|---|---|
committer | Michelle McDaniel <adiaaida@gmail.com> | 2016-06-22 14:05:58 -0700 |
commit | 9237cec8009c478e76c6193a5ea628fc8aaa3bf1 (patch) | |
tree | 45e631924ec019cb49b1dad9102c22b3d3a2a7ef /src/jit/lclvars.cpp | |
parent | 702b73a71b67992bad105c482f5641dfb84893e1 (diff) | |
download | coreclr-9237cec8009c478e76c6193a5ea628fc8aaa3bf1.tar.gz coreclr-9237cec8009c478e76c6193a5ea628fc8aaa3bf1.tar.bz2 coreclr-9237cec8009c478e76c6193a5ea628fc8aaa3bf1.zip |
Enable GT_CALL with long ret types for x86 RyuJIT
1) Enables genMultiRegCallStoreToLocal for x86 RyuJIT. Forces long return
types to be stored to the stack after returning from a call.
2) Update lvaPromoteLongVars to not promote a long if it is a multi reg
arg or ret.
3) Adds NYI for call arguments that are longs and contain adds or
subtracts. We are currently producing the wrong order of operations so
that we can push the argument immediately after performing the arithmetic.
We will do the hi adc/sbb before the carry bit has been set by doing the
lo operation.
4) Adds an NYI for morphing a node into a call node if the call will have
a long return type.
5) Moves the logic for forcing var = call() for calls with long return
types to lower::DecomposeNode().
Diffstat (limited to 'src/jit/lclvars.cpp')
-rw-r--r-- | src/jit/lclvars.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/jit/lclvars.cpp b/src/jit/lclvars.cpp index eae804a429..2d21856041 100644 --- a/src/jit/lclvars.cpp +++ b/src/jit/lclvars.cpp @@ -1747,7 +1747,7 @@ void Compiler::lvaPromoteLongVars() lclNum++) { LclVarDsc * varDsc = &lvaTable[lclNum]; - if(!varTypeIsLong(varDsc) || varDsc->lvDoNotEnregister || (varDsc->lvRefCnt == 0)) + if(!varTypeIsLong(varDsc) || varDsc->lvDoNotEnregister || varDsc->lvIsMultiRegArgOrRet || (varDsc->lvRefCnt == 0)) { continue; } |