[PATCH] D41982: [mips] Reordering callseq* nodes to be linear

Aleksandar Beserminji via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 12 02:21:35 PST 2018


abeserminji created this revision.
abeserminji added reviewers: sdardis, petarj.
Herald added a subscriber: arichardson.

When calling a function and passing large argument by value, and when argument size is above certain threshold, memcpy is used to copy argument on stack instead of sequence of loads and stores. In that case callseq* nodes for memcpy are nested inside callseq* nodes for the called function. This patch corrects this behavior by moving callseq_start of the called function after arguments calculation to temporary registers, so that callseq* nodes in resulting DAG are linear.

This is a second try to fix this problem. Previously reverted here https://reviews.llvm.org/rL316215.


Repository:
  rL LLVM

https://reviews.llvm.org/D41982

Files:
  lib/Target/Mips/MipsISelLowering.cpp
  lib/Target/Mips/MipsISelLowering.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41982.129588.patch
Type: text/x-patch
Size: 5995 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180112/e7a55468/attachment.bin>


More information about the llvm-commits mailing list