Avoid marking tmp as DoNotEnregister in tmp=GT_CALL() where call returns a enregisterable struct in two return registers #5112
Labels
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
enhancement
Product code improvement that does NOT require public API changes/additions
optimization
os-linux
Linux OS (any supported distro)
os-mac-os-x
macOS aka OSX
tenet-performance
Performance related issue
Milestone
Right now codegenxarch.cpp is implemented with the assumption that the tmp to which struct returned in two registers is assigned does not live in a register. For example, when a call returns Vector3/4, we will have a tmp = call(), where tmp is of SIMD12/16 type and can be allocated a register. In this case it will lead to better code quality if codegen directly generates reg-to-reg moves instead of save to a temp on stack.
category:cq
theme:calling-convention
skill-level:intermediate
cost:small
The text was updated successfully, but these errors were encountered: