svn commit: r317751 - head/contrib/llvm/lib/Target/ARM
Dimitry Andric
dim at FreeBSD.org
Wed May 3 16:12:45 UTC 2017
Author: dim
Date: Wed May 3 16:12:43 2017
New Revision: 317751
URL: https://svnweb.freebsd.org/changeset/base/317751
Log:
Pull in r301983 from upstream llvm trunk (by Tim Northover):
ARM: avoid handing a deleted node back to TableGen during ISel.
When we replaced the multiplicand the destination node might already
exist. When that happens the original gets CSEd and deleted. However,
it's actually used as the offset so nonsense is produced.
Should fix PR32726.
This fixes an assertion failure when building building www/firefox 53.0
for arm.
Reported by: Bob Prohaska
PR: 218782
MFC after: 3 days
Modified:
head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
Modified: head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
==============================================================================
--- head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Wed May 3 16:03:33 2017 (r317750)
+++ head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Wed May 3 16:12:43 2017 (r317751)
@@ -748,7 +748,9 @@ bool ARMDAGToDAGISel::SelectLdStSOReg(SD
unsigned PowerOfTwo = 0;
SDValue NewMulConst;
if (canExtractShiftFromMul(Offset, 31, PowerOfTwo, NewMulConst)) {
+ HandleSDNode Handle(Offset);
replaceDAGValue(Offset.getOperand(1), NewMulConst);
+ Offset = Handle.getValue();
ShAmt = PowerOfTwo;
ShOpcVal = ARM_AM::lsl;
}
@@ -1428,7 +1430,9 @@ bool ARMDAGToDAGISel::SelectT2AddrModeSo
unsigned PowerOfTwo = 0;
SDValue NewMulConst;
if (canExtractShiftFromMul(OffReg, 3, PowerOfTwo, NewMulConst)) {
+ HandleSDNode Handle(OffReg);
replaceDAGValue(OffReg.getOperand(1), NewMulConst);
+ OffReg = Handle.getValue();
ShAmt = PowerOfTwo;
}
}
More information about the svn-src-head
mailing list