From: Reid Kleckner Date: Thu, 7 Sep 2017 22:46:24 +0000 (+0000) Subject: Move duplicate helpers from DbgValueInst / DbgDeclareInst to DbgInfoIntrinsic X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ccd20ac14dfe9a223ce0e440f0613af07614cbdb;p=llvm Move duplicate helpers from DbgValueInst / DbgDeclareInst to DbgInfoIntrinsic NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312754 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/IR/IntrinsicInst.h b/include/llvm/IR/IntrinsicInst.h index f58ee217a7c..eccb4080932 100644 --- a/include/llvm/IR/IntrinsicInst.h +++ b/include/llvm/IR/IntrinsicInst.h @@ -71,6 +71,22 @@ namespace llvm { /// variable's value or its address. Value *getVariableLocation(bool AllowNullOp = true) const; + DILocalVariable *getVariable() const { + return cast(getRawVariable()); + } + + DIExpression *getExpression() const { + return cast(getRawExpression()); + } + + Metadata *getRawVariable() const { + return cast(getArgOperand(1))->getMetadata(); + } + + Metadata *getRawExpression() const { + return cast(getArgOperand(2))->getMetadata(); + } + // Methods for support type inquiry through isa, cast, and dyn_cast: static bool classof(const IntrinsicInst *I) { switch (I->getIntrinsicID()) { @@ -90,22 +106,6 @@ namespace llvm { public: Value *getAddress() const { return getVariableLocation(); } - DILocalVariable *getVariable() const { - return cast(getRawVariable()); - } - - DIExpression *getExpression() const { - return cast(getRawExpression()); - } - - Metadata *getRawVariable() const { - return cast(getArgOperand(1))->getMetadata(); - } - - Metadata *getRawExpression() const { - return cast(getArgOperand(2))->getMetadata(); - } - // Methods for support type inquiry through isa, cast, and dyn_cast: static bool classof(const IntrinsicInst *I) { return I->getIntrinsicID() == Intrinsic::dbg_declare; @@ -122,22 +122,6 @@ namespace llvm { return getVariableLocation(/* AllowNullOp = */ false); } - DILocalVariable *getVariable() const { - return cast(getRawVariable()); - } - - DIExpression *getExpression() const { - return cast(getRawExpression()); - } - - Metadata *getRawVariable() const { - return cast(getArgOperand(1))->getMetadata(); - } - - Metadata *getRawExpression() const { - return cast(getArgOperand(2))->getMetadata(); - } - // Methods for support type inquiry through isa, cast, and dyn_cast: static bool classof(const IntrinsicInst *I) { return I->getIntrinsicID() == Intrinsic::dbg_value; diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index e62daeeb539..c875e302188 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -468,8 +468,7 @@ private: void visitUserOp2(Instruction &I) { visitUserOp1(I); } void visitIntrinsicCallSite(Intrinsic::ID ID, CallSite CS); void visitConstrainedFPIntrinsic(ConstrainedFPIntrinsic &FPI); - template - void visitDbgIntrinsic(StringRef Kind, DbgIntrinsicTy &DII); + void visitDbgIntrinsic(StringRef Kind, DbgInfoIntrinsic &DII); void visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI); void visitAtomicRMWInst(AtomicRMWInst &RMWI); void visitFenceInst(FenceInst &FI); @@ -4000,10 +3999,10 @@ void Verifier::visitIntrinsicCallSite(Intrinsic::ID ID, CallSite CS) { case Intrinsic::dbg_declare: // llvm.dbg.declare Assert(isa(CS.getArgOperand(0)), "invalid llvm.dbg.declare intrinsic call 1", CS); - visitDbgIntrinsic("declare", cast(*CS.getInstruction())); + visitDbgIntrinsic("declare", cast(*CS.getInstruction())); break; case Intrinsic::dbg_value: // llvm.dbg.value - visitDbgIntrinsic("value", cast(*CS.getInstruction())); + visitDbgIntrinsic("value", cast(*CS.getInstruction())); break; case Intrinsic::memcpy: case Intrinsic::memmove: @@ -4455,8 +4454,7 @@ void Verifier::visitConstrainedFPIntrinsic(ConstrainedFPIntrinsic &FPI) { "invalid exception behavior argument", &FPI); } -template -void Verifier::visitDbgIntrinsic(StringRef Kind, DbgIntrinsicTy &DII) { +void Verifier::visitDbgIntrinsic(StringRef Kind, DbgInfoIntrinsic &DII) { auto *MD = cast(DII.getArgOperand(0))->getMetadata(); AssertDI(isa(MD) || (isa(MD) && !cast(MD)->getNumOperands()), @@ -4519,16 +4517,8 @@ static uint64_t getVariableSize(const DIVariable &V) { } void Verifier::verifyFragmentExpression(const DbgInfoIntrinsic &I) { - DILocalVariable *V; - DIExpression *E; - if (auto *DVI = dyn_cast(&I)) { - V = dyn_cast_or_null(DVI->getRawVariable()); - E = dyn_cast_or_null(DVI->getRawExpression()); - } else { - auto *DDI = cast(&I); - V = dyn_cast_or_null(DDI->getRawVariable()); - E = dyn_cast_or_null(DDI->getRawExpression()); - } + DILocalVariable *V = dyn_cast_or_null(I.getRawVariable()); + DIExpression *E = dyn_cast_or_null(I.getRawExpression()); // We don't know whether this intrinsic verified correctly. if (!V || !E || !E->isValid()) @@ -4575,18 +4565,11 @@ void Verifier::verifyFnArgs(const DbgInfoIntrinsic &I) { if (!HasDebugInfo) return; - DILocalVariable *Var; - if (auto *DV = dyn_cast(&I)) { - // For performance reasons only check non-inlined ones. - if (DV->getDebugLoc()->getInlinedAt()) - return; - Var = DV->getVariable(); - } else { - auto *DD = cast(&I); - if (DD->getDebugLoc()->getInlinedAt()) - return; - Var = DD->getVariable(); - } + // For performance reasons only check non-inlined ones. + if (I.getDebugLoc()->getInlinedAt()) + return; + + DILocalVariable *Var = I.getVariable(); AssertDI(Var, "dbg intrinsic without variable"); unsigned ArgNo = Var->getArg();