diff options
author | Hans Wennborg <hans@hanshq.net> | 2019-04-03 07:41:58 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2019-04-03 07:41:58 +0000 |
commit | 94b867dc7c202162f587fd3345eccdb09bff2a77 (patch) | |
tree | 5c0983aa79877796bddf773ad597aae079a5182e /llvm/lib | |
parent | 2374bff376c6cf54fbea55c739a30968663a5cf1 (diff) | |
download | bcm5719-llvm-94b867dc7c202162f587fd3345eccdb09bff2a77.tar.gz bcm5719-llvm-94b867dc7c202162f587fd3345eccdb09bff2a77.zip |
Revert r357256 "[DAGCombine] Improve Lifetime node chains."
As it caused a pathological compile-time regressionin V8, see PR41352.
> Improve both start and end lifetime nodes chain dependencies.
>
> Reviewers: courbet
>
> Reviewed By: courbet
>
> Subscribers: hiraditya, llvm-commits
>
> Tags: #llvm
>
> Differential Revision: https://reviews.llvm.org/D59795
This also reverts the follow-up r357309:
> [DAGCombiner] Rewrite ImproveLifetimeNodeChain to avoid DAG loop.
>
> Avoid EXPENSIVE_CHECK failure. NFCI.
llvm-svn: 357563
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 15044d1f18d..e58e8353617 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -427,10 +427,6 @@ namespace { SDValue replaceStoreOfFPConstant(StoreSDNode *ST); SDValue visitSTORE(SDNode *N); - - SDValue ImproveLifetimeNodeChain(SDNode *N); - - SDValue visitLIFETIME_START(SDNode *N); SDValue visitLIFETIME_END(SDNode *N); SDValue visitINSERT_VECTOR_ELT(SDNode *N); SDValue visitEXTRACT_VECTOR_ELT(SDNode *N); @@ -1654,7 +1650,6 @@ SDValue DAGCombiner::visit(SDNode *N) { case ISD::MLOAD: return visitMLOAD(N); case ISD::MSCATTER: return visitMSCATTER(N); case ISD::MSTORE: return visitMSTORE(N); - case ISD::LIFETIME_START: return visitLIFETIME_START(N); case ISD::LIFETIME_END: return visitLIFETIME_END(N); case ISD::FP_TO_FP16: return visitFP_TO_FP16(N); case ISD::FP16_TO_FP: return visitFP16_TO_FP(N); @@ -15705,33 +15700,7 @@ SDValue DAGCombiner::visitSTORE(SDNode *N) { return ReduceLoadOpStoreWidth(N); } -SDValue DAGCombiner::ImproveLifetimeNodeChain(SDNode *N) { - auto Chain = N->getOperand(0); - auto NewChain = FindBetterChain(N, Chain); - if (NewChain != Chain) { - LifetimeSDNode *LN = cast<LifetimeSDNode>(N); - // Create New Node to prevent loop in CombineTo. - SDValue NewN = DAG.getLifetimeNode(N->getOpcode() == ISD::LIFETIME_START, - SDLoc(N), NewChain, LN->getFrameIndex(), - LN->hasOffset() ? LN->getSize() : -1, - LN->hasOffset() ? LN->getOffset() : -1); - AddToWorklist(NewN.getNode()); - auto TF = DAG.getNode(ISD::TokenFactor, SDLoc(N), MVT::Other, Chain, NewN); - return CombineTo(N, TF); - } - return SDValue(); -} - -SDValue DAGCombiner::visitLIFETIME_START(SDNode *N) { - if (SDValue V = ImproveLifetimeNodeChain(N)) - return V; - return SDValue(); -} - SDValue DAGCombiner::visitLIFETIME_END(SDNode *N) { - if (SDValue V = ImproveLifetimeNodeChain(N)) - return V; - const auto *LifetimeEnd = cast<LifetimeSDNode>(N); if (!LifetimeEnd->hasOffset()) return SDValue(); |