[llvm] r277135 - Cleanup TransferDbgValues
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 29 09:26:21 PDT 2016
Merged to 3.9 in r277164.
Thanks,
Hans
On Fri, Jul 29, 2016 at 4:49 AM, Nirav Dave via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: niravd
> Date: Fri Jul 29 06:49:32 2016
> New Revision: 277135
>
> URL: http://llvm.org/viewvc/llvm-project?rev=277135&view=rev
> Log:
> Cleanup TransferDbgValues
>
> [DAG] Check debug values for invalidation before transferring and mark
> old debug values invalid when transferring to another SDValue.
>
> This fixes PR28613.
>
> Reviewers: jyknight, hans, dblaikie, echristo
>
> Subscribers: yaron.keren, ismail, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D22858
>
> Modified:
> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=277135&r1=277134&r2=277135&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri Jul 29 06:49:32 2016
> @@ -6640,19 +6640,26 @@ void SelectionDAG::TransferDbgValues(SDV
> SDNode *FromNode = From.getNode();
> SDNode *ToNode = To.getNode();
> ArrayRef<SDDbgValue *> DVs = GetDbgValues(FromNode);
> + SmallVector<SDDbgValue *, 2> ClonedDVs;
> for (ArrayRef<SDDbgValue *>::iterator I = DVs.begin(), E = DVs.end();
> I != E; ++I) {
> SDDbgValue *Dbg = *I;
> // Only add Dbgvalues attached to same ResNo.
> if (Dbg->getKind() == SDDbgValue::SDNODE &&
> - Dbg->getResNo() == From.getResNo()) {
> + Dbg->getSDNode() == From.getNode() &&
> + Dbg->getResNo() == From.getResNo() && !Dbg->isInvalidated()) {
> + assert(FromNode != ToNode &&
> + "Should not transfer Debug Values intranode");
> SDDbgValue *Clone =
> getDbgValue(Dbg->getVariable(), Dbg->getExpression(), ToNode,
> To.getResNo(), Dbg->isIndirect(), Dbg->getOffset(),
> Dbg->getDebugLoc(), Dbg->getOrder());
> - AddDbgValue(Clone, ToNode, false);
> + ClonedDVs.push_back(Clone);
> + Dbg->setIsInvalidated();
> }
> }
> + for (SDDbgValue *I : ClonedDVs)
> + AddDbgValue(I, ToNode, false);
> }
>
> //===----------------------------------------------------------------------===//
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list