<div dir="ltr"><div dir="ltr">Hello Nirav,<br><br>This commit broke tests on the next builder:<br><a href="http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/16678">http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/16678</a><br>. . .<br>Failing Tests (3):<br>    LLVM :: CodeGen/X86/StackColoring.ll<br>    LLVM :: CodeGen/X86/unwindraise.ll<br>    LLVM :: DebugInfo/COFF/lexicalblock.ll<br><br>Please have a look?<br><br>Thanks<br><br>Galina<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 29, 2019 at 7:08 AM Nirav Dave via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: niravd<br>
Date: Fri Mar 29 07:09:47 2019<br>
New Revision: 357256<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=357256&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=357256&view=rev</a><br>
Log:<br>
[DAGCombine] Improve Lifetime node chains.<br>
<br>
Improve both start and end lifetime nodes chain dependencies.<br>
<br>
Reviewers: courbet<br>
<br>
Reviewed By: courbet<br>
<br>
Subscribers: hiraditya, llvm-commits<br>
<br>
Tags: #llvm<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D59795" rel="noreferrer" target="_blank">https://reviews.llvm.org/D59795</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
    llvm/trunk/test/CodeGen/X86/swap.ll<br>
    llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll<br>
<br>
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=357256&r1=357255&r2=357256&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=357256&r1=357255&r2=357256&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Fri Mar 29 07:09:47 2019<br>
@@ -384,6 +384,10 @@ namespace {<br>
     SDValue replaceStoreOfFPConstant(StoreSDNode *ST);<br>
<br>
     SDValue visitSTORE(SDNode *N);<br>
+<br>
+    SDValue ImproveLifetimeNodeChain(SDNode *N);<br>
+<br>
+    SDValue visitLIFETIME_START(SDNode *N);<br>
     SDValue visitLIFETIME_END(SDNode *N);<br>
     SDValue visitINSERT_VECTOR_ELT(SDNode *N);<br>
     SDValue visitEXTRACT_VECTOR_ELT(SDNode *N);<br>
@@ -1604,6 +1608,7 @@ SDValue DAGCombiner::visit(SDNode *N) {<br>
   case ISD::MLOAD:              return visitMLOAD(N);<br>
   case ISD::MSCATTER:           return visitMSCATTER(N);<br>
   case ISD::MSTORE:             return visitMSTORE(N);<br>
+  case ISD::LIFETIME_START:     return visitLIFETIME_START(N);<br>
   case ISD::LIFETIME_END:       return visitLIFETIME_END(N);<br>
   case ISD::FP_TO_FP16:         return visitFP_TO_FP16(N);<br>
   case ISD::FP16_TO_FP:         return visitFP16_TO_FP(N);<br>
@@ -15654,7 +15659,32 @@ SDValue DAGCombiner::visitSTORE(SDNode *<br>
   return ReduceLoadOpStoreWidth(N);<br>
 }<br>
<br>
+SDValue DAGCombiner::ImproveLifetimeNodeChain(SDNode *N) {<br>
+  auto Chain = N->getOperand(0);<br>
+  auto NewChain = FindBetterChain(N, Chain);<br>
+  if (NewChain != Chain) {<br>
+    SDNode *N2 = DAG.UpdateNodeOperands(N, NewChain, N->getOperand(1));<br>
+    // Make sure users of new N still depend on Chain<br>
+    auto TF = DAG.getNode(ISD::TokenFactor, SDLoc(N2), MVT::Other, Chain,<br>
+                          SDValue(N2, 0));<br>
+    DAG.ReplaceAllUsesOfValueWith(SDValue(N2, 0), TF);<br>
+    AddToWorklist(DAG.UpdateNodeOperands(TF.getNode(), Chain, SDValue(N2, 0)));<br>
+    AddToWorklist(N2);<br>
+    return SDValue(N, 0);<br>
+  }<br>
+  return SDValue();<br>
+}<br>
+<br>
+SDValue DAGCombiner::visitLIFETIME_START(SDNode *N) {<br>
+  if (SDValue V = ImproveLifetimeNodeChain(N))<br>
+    return V;<br>
+  return SDValue();<br>
+}<br>
+<br>
 SDValue DAGCombiner::visitLIFETIME_END(SDNode *N) {<br>
+  if (SDValue V = ImproveLifetimeNodeChain(N))<br>
+    return V;<br>
+<br>
   const auto *LifetimeEnd = cast<LifetimeSDNode>(N);<br>
   if (!LifetimeEnd->hasOffset())<br>
     return SDValue();<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/swap.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/swap.ll?rev=357256&r1=357255&r2=357256&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/swap.ll?rev=357256&r1=357255&r2=357256&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/swap.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/swap.ll Fri Mar 29 07:09:47 2019<br>
@@ -94,7 +94,6 @@ define dso_local void @twoallocs(i8* noc<br>
 ; AA-LABEL: twoallocs:<br>
 ; AA:       # %bb.0: # %entry<br>
 ; AA-NEXT:    vmovups (%rdi), %xmm0<br>
-; AA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)<br>
 ; AA-NEXT:    vmovups %xmm0, (%rsi)<br>
 ; AA-NEXT:    retq<br>
 entry:<br>
@@ -125,7 +124,6 @@ define dso_local void @onealloc_readback<br>
 ; AA-LABEL: onealloc_readback_1:<br>
 ; AA:       # %bb.0: # %entry<br>
 ; AA-NEXT:    vmovups (%rsi), %xmm0<br>
-; AA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)<br>
 ; AA-NEXT:    vmovups %xmm0, (%rdi)<br>
 ; AA-NEXT:    retq<br>
 entry:<br>
@@ -155,7 +153,6 @@ define dso_local void @onealloc_readback<br>
 ; AA-LABEL: onealloc_readback_2:<br>
 ; AA:       # %bb.0: # %entry<br>
 ; AA-NEXT:    vmovups (%rsi), %xmm0<br>
-; AA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)<br>
 ; AA-NEXT:    vmovups %xmm0, (%rdi)<br>
 ; AA-NEXT:    retq<br>
 entry:<br>
<br>
Modified: llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll?rev=357256&r1=357255&r2=357256&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll?rev=357256&r1=357255&r2=357256&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll (original)<br>
+++ llvm/trunk/test/DebugInfo/COFF/lexicalblock.ll Fri Mar 29 07:09:47 2019<br>
@@ -80,19 +80,6 @@<br>
 ; CHECK: ScopeEndSym {<br>
 ; CHECK:   Kind: S_END {{.*}}<br>
 ; CHECK: }<br>
-; CHECK: BlockSym {<br>
-; CHECK:   Kind: S_BLOCK32 {{.*}}<br>
-; CHECK:   BlockName: <br>
-; CHECK: }<br>
-; CHECK: ScopeEndSym {<br>
-; CHECK: }<br>
-; CHECK: BlockSym {<br>
-; CHECK:   Kind: S_BLOCK32 {{.*}}<br>
-; CHECK:   BlockName: <br>
-; CHECK: }<br>
-; CHECK: ScopeEndSym {<br>
-; CHECK:   Kind: S_END {{.*}}<br>
-; CHECK: }<br>
 ; CHECK: ProcEnd {<br>
 ; CHECK: }<br>
 ;<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>