<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>