Forward-substitute long calls on 32 bit targets#74502
Forward-substitute long calls on 32 bit targets#74502AndyAyersMS merged 1 commit intodotnet:mainfrom
Conversation
The multi-reg restrictions do not apply to them.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThe multi-reg restrictions do not apply to them.
|
| #if defined(TARGET_X86) || defined(TARGET_ARM) | ||
| if (fwdSubNode->TypeGet() == TYP_LONG) | ||
| { | ||
| JITDUMP(" TYP_LONG fwd sub node, target is x86/arm\n"); | ||
| return false; | ||
| } | ||
| #endif // defined(TARGET_X86) || defined(TARGET_ARM) | ||
|
|
There was a problem hiding this comment.
Just a question. Why do we delete this code that skips TYP_LONG forward substitute node on x86 and arm target?
There was a problem hiding this comment.
It should not be necessary.
The restriction on substituting multi-reg nodes stems from the fact the backend (LSRA and codegen) can only handle a few select forms of uses for them:
STORE_LCL_VAR(multi-reg node)RETURN(matching multi-reg call | LCL_VAR)
For structs, these restrictions are enforced by the frontend (mainly importer). For LONGs - by decomposition, which means we don't need to worry about them here.
|
@dotnet/jit-contrib |
|
Thanks again for all your hard work. |
The multi-reg restrictions do not apply to them.
Diffs - a few improvements as expected.