summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2018-03-17 20:08:48 +0000
committerMartin Storsjo <martin@martin.st>2018-03-17 20:08:48 +0000
commit36d6419cc55dd782e2c727698bdff82a8bf6be35 (patch)
tree83e65eb8d981dad6d727a5733e36bebd86a78ca6
parent5f0ab71b623fc5ff5734b7e95ae1d432acddba05 (diff)
downloadbcm5719-llvm-36d6419cc55dd782e2c727698bdff82a8bf6be35.tar.gz
bcm5719-llvm-36d6419cc55dd782e2c727698bdff82a8bf6be35.zip
[AArch64] Skip an unnecessary getCopyToReg in DYNAMIC_STACKALLOC
Differential Revision: https://reviews.llvm.org/D44586 llvm-svn: 327779
-rw-r--r--llvm/lib/Target/AArch64/AArch64ISelLowering.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index be14561973d..43b2b1cc46b 100644
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -7527,13 +7527,10 @@ AArch64TargetLowering::LowerDYNAMIC_STACKALLOC(SDValue Op,
SDValue SP = DAG.getCopyFromReg(Chain, dl, AArch64::SP, MVT::i64);
Chain = SP.getValue(1);
SP = DAG.getNode(ISD::SUB, dl, MVT::i64, SP, Size);
- Chain = DAG.getCopyToReg(Chain, dl, AArch64::SP, SP);
-
- if (Align) {
+ if (Align)
SP = DAG.getNode(ISD::AND, dl, VT, SP.getValue(0),
DAG.getConstant(-(uint64_t)Align, dl, VT));
- Chain = DAG.getCopyToReg(Chain, dl, AArch64::SP, SP);
- }
+ Chain = DAG.getCopyToReg(Chain, dl, AArch64::SP, SP);
Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(0, dl, true),
DAG.getIntPtrConstant(0, dl, true), SDValue(), dl);
OpenPOWER on IntegriCloud