Refactor the tablegen DAGISelEmitter code for outputing calls to
authorDan Gohman <gohman@apple.com>
Mon, 7 Jul 2008 21:00:17 +0000 (21:00 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 7 Jul 2008 21:00:17 +0000 (21:00 +0000)
commit95d110920e4ce9ded59934a432327a5343b1069d
treebc03b475cfc8ff11039e6aabf494d8c885666201
parent667a68b96aad48c053d6678ee5cb6d440072e81a
Refactor the tablegen DAGISelEmitter code for outputing calls to
getTargetNode and SelectNodeTo to reduce duplication, and to
make some of the getTargetNode code available to SelectNodeTo.
Use SelectNodeTo instead of getTargetNode in several new
interesting cases, as it mutates nodes in place instead of
creating new ones.

This triggers some scheduling behavior differences due to nodes
being presented to the scheduler in a different order. Some of the
arbitrary scheduling decisions it makes are now arbitrarily made
differently. This is visible in CodeGen/PowerPC/LargeAbsoluteAddr.ll,
where a trivial scheduling difference led to a trivial register
allocation difference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53203 91177308-0d34-0410-b5e6-96231b3b80d8
test/CodeGen/PowerPC/LargeAbsoluteAddr.ll
utils/TableGen/DAGISelEmitter.cpp