Refactor register arg handling in TreeNodeInfoInit.
authorPat Gavlin <pagavlin@microsoft.com>
Sat, 25 Feb 2017 01:16:35 +0000 (17:16 -0800)
committerPat Gavlin <pagavlin@microsoft.com>
Sat, 25 Feb 2017 18:06:37 +0000 (10:06 -0800)
commit9c78ae86ebd9f51b947238b0eb42ec7508435de5
treeb1b341b45f079bb1797ee58b55a629f3a4425fc5
parentbbe70b4f5941063594b9c34545df6fd89db1aeba
Refactor register arg handling in TreeNodeInfoInit.

The handling for outgoing register arguments in TreeNodeInfoInitCall was
unnecessarily complex and difficult to follow. In particular, the processing
of FIELD_LIST arguments performed a fair amount of unnecessary work,
contained code to deal with impossible IR patterns, and did not share any
code for handling the component PUTARG_REG nodes with the normal PUTARG_REG
case. This changes resolves all three of these issues and fixes an ordering
issue in lowering that was causing PInvoke prologs to remain unlowered.

Commit migrated from https://github.com/dotnet/coreclr/commit/8fdca7af58ae0e84400f2c2ba79276a819566e1d
src/coreclr/src/jit/lower.cpp
src/coreclr/src/jit/lower.h
src/coreclr/src/jit/lsraarm.cpp
src/coreclr/src/jit/lsraarm64.cpp
src/coreclr/src/jit/lsraxarch.cpp