Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 May 2017 11:18:37 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r317881 - stable/11/contrib/llvm/lib/Target/ARM
Message-ID:  <201705061118.v46BIbwx011571@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat May  6 11:18:36 2017
New Revision: 317881
URL: https://svnweb.freebsd.org/changeset/base/317881

Log:
  MFC r317751:
  
  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

Modified:
  stable/11/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
==============================================================================
--- stable/11/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp	Sat May  6 11:13:33 2017	(r317880)
+++ stable/11/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp	Sat May  6 11:18:36 2017	(r317881)
@@ -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;
     }
   }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705061118.v46BIbwx011571>