[llvm] r185383 - Debug Info: clean up usage of Verify.
David Blaikie
dblaikie at gmail.com
Mon Jul 1 14:12:41 PDT 2013
On Mon, Jul 1, 2013 at 2:02 PM, Manman Ren <mren at apple.com> wrote:
> Author: mren
> Date: Mon Jul 1 16:02:01 2013
> New Revision: 185383
>
> URL: http://llvm.org/viewvc/llvm-project?rev=185383&view=rev
> Log:
> Debug Info: clean up usage of Verify.
>
> No functionality change. It should suffice to check the type of a debug info
> metadata, instead of calling Verify.
>
> Modified:
> llvm/trunk/lib/IR/DIBuilder.cpp
> llvm/trunk/lib/Transforms/Instrumentation/DebugIR.cpp
>
> Modified: llvm/trunk/lib/IR/DIBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=185383&r1=185382&r2=185383&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/DIBuilder.cpp (original)
> +++ llvm/trunk/lib/IR/DIBuilder.cpp Mon Jul 1 16:02:01 2013
> @@ -317,7 +317,7 @@ DIDerivedType DIBuilder::createMemberPoi
> /// createReferenceType - Create debugging information entry for a reference
> /// type.
> DIDerivedType DIBuilder::createReferenceType(unsigned Tag, DIType RTy) {
> - assert(RTy.Verify() && "Unable to create reference type");
> + assert(RTy.isType() && "Unable to create reference type");
> // References are encoded in DIDerivedType format.
> Value *Elts[] = {
> GetTagConstant(VMContext, Tag),
> @@ -338,7 +338,7 @@ DIDerivedType DIBuilder::createReference
> DIDerivedType DIBuilder::createTypedef(DIType Ty, StringRef Name, DIFile File,
> unsigned LineNo, DIDescriptor Context) {
> // typedefs are encoded in DIDerivedType format.
> - assert(Ty.Verify() && "Invalid typedef type!");
> + assert(Ty.isType() && "Invalid typedef type!");
> Value *Elts[] = {
> GetTagConstant(VMContext, dwarf::DW_TAG_typedef),
> File.getFileNode(),
> @@ -357,8 +357,8 @@ DIDerivedType DIBuilder::createTypedef(D
> /// createFriend - Create debugging information entry for a 'friend'.
> DIDerivedType DIBuilder::createFriend(DIType Ty, DIType FriendTy) {
> // typedefs are encoded in DIDerivedType format.
> - assert(Ty.Verify() && "Invalid type!");
> - assert(FriendTy.Verify() && "Invalid friend type!");
> + assert(Ty.isType() && "Invalid type!");
> + assert(FriendTy.isType() && "Invalid friend type!");
> Value *Elts[] = {
> GetTagConstant(VMContext, dwarf::DW_TAG_friend),
> NULL,
> @@ -378,7 +378,7 @@ DIDerivedType DIBuilder::createFriend(DI
> /// inheritance relationship between two types.
> DIDerivedType DIBuilder::createInheritance(
> DIType Ty, DIType BaseTy, uint64_t BaseOffset, unsigned Flags) {
> - assert(Ty.Verify() && "Unable to create inheritance");
> + assert(Ty.isType() && "Unable to create inheritance");
> // TAG_inheritance is encoded in DIDerivedType format.
> Value *Elts[] = {
> GetTagConstant(VMContext, dwarf::DW_TAG_inheritance),
> @@ -596,7 +596,7 @@ DICompositeType DIBuilder::createClassTy
> DIArray Elements,
> MDNode *VTableHolder,
> MDNode *TemplateParams) {
> - assert((!Context || Context.Verify()) &&
> + assert((!Context || Context.isScope() || Context.isType()) &&
> "createClassType should be called with a valid Context");
> // TAG_class_type is encoded in DICompositeType format.
> Value *Elts[] = {
> @@ -616,7 +616,8 @@ DICompositeType DIBuilder::createClassTy
> TemplateParams
> };
> DICompositeType R(MDNode::get(VMContext, Elts));
> - assert(R.Verify() && "createClassType should return a verifiable DIType");
> + assert(R.isCompositeType() &&
> + "createClassType should return a DICompositeType");
> return R;
> }
>
> @@ -648,7 +649,8 @@ DICompositeType DIBuilder::createStructT
> NULL,
> };
> DICompositeType R(MDNode::get(VMContext, Elts));
> - assert(R.Verify() && "createStructType should return a verifiable DIType");
> + assert(R.isCompositeType() &&
> + "createStructType should return a DICompositeType");
> return R;
> }
>
> @@ -861,8 +863,8 @@ DIType DIBuilder::createForwardDecl(unsi
> ConstantInt::get(Type::getInt32Ty(VMContext), RuntimeLang)
> };
> MDNode *Node = MDNode::getTemporary(VMContext, Elts);
> - assert(DIType(Node).Verify() &&
> - "createForwardDecl result should be verifiable");
> + assert(DIType(Node).isType() &&
> + "createForwardDecl result should be a DIType");
> return DIType(Node);
If you push DIType up to the "Node" declaration (so that Node is a
DIType instead of an MDNode *) you can avoid constructing two
temporary DITypes (one for the assert, one for the return).
> }
>
> @@ -953,9 +955,9 @@ DIVariable DIBuilder::createLocalVariabl
> bool AlwaysPreserve, unsigned Flags,
> unsigned ArgNo) {
> DIDescriptor Context(getNonCompileUnitScope(Scope));
> - assert((!Context || Context.Verify()) &&
> + assert((!Context || Context.isScope()) &&
> "createLocalVariable should be called with a valid Context");
> - assert(Ty.Verify() &&
> + assert(Ty.isType() &&
> "createLocalVariable should be called with a valid type");
> Value *Elts[] = {
> GetTagConstant(VMContext, Tag),
> @@ -976,8 +978,8 @@ DIVariable DIBuilder::createLocalVariabl
> NamedMDNode *FnLocals = getOrInsertFnSpecificMDNode(M, Fn);
> FnLocals->addOperand(Node);
> }
> - assert(DIVariable(Node).Verify() &&
> - "createLocalVariable should return a verifiable DIVariable");
> + assert(DIVariable(Node).isVariable() &&
> + "createLocalVariable should return a valid DIVariable");
> return DIVariable(Node);
Similarly here.
> }
>
> @@ -1046,7 +1048,7 @@ DISubprogram DIBuilder::createFunction(D
> if (isDefinition)
> AllSubprograms.push_back(Node);
> DISubprogram S(Node);
> - assert(S.Verify() && "createFunction should return a valid DISubprogram");
> + assert(S.isSubprogram() && "createFunction should return a valid DISubprogram");
> return S;
> }
>
> @@ -1094,7 +1096,7 @@ DISubprogram DIBuilder::createMethod(DID
> if (isDefinition)
> AllSubprograms.push_back(Node);
> DISubprogram S(Node);
> - assert(S.Verify() && "createMethod should return a valid DISubprogram");
> + assert(S.isSubprogram() && "createMethod should return a valid DISubprogram");
> return S;
> }
>
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/DebugIR.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/DebugIR.cpp?rev=185383&r1=185382&r2=185383&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/DebugIR.cpp (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/DebugIR.cpp Mon Jul 1 16:02:01 2013
> @@ -219,7 +219,7 @@ public:
> MDNode *Sub = Builder.createFunction(
> DICompileUnit(CUNode), F.getName(), MangledName, DIFile(FileNode), Line,
> Sig, Local, IsDefinition, ScopeLine, FuncFlags, IsOptimized, &F);
> - assert(DISubprogram(Sub).Verify());
> + assert(DISubprogram(Sub).isSubprogram());
And probably here (even better here - I'm pretty sure createFunction
returns a DISubprogram & this code is implicitly converting that back
to a raw MDNode * then explicitly converting it back to a DISubprogram
- that seems excessive/unnecessary)
> DEBUG(dbgs() << "create subprogram mdnode " << Sub << ": "
> << "\n");
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list