diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/IR/DIBuilder.cpp | 18 | ||||
-rw-r--r-- | llvm/lib/IR/DebugInfo.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/IR/DebugInfoMetadata.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/IR/Verifier.cpp | 6 |
5 files changed, 16 insertions, 23 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 7d0424a43b3..777065107dc 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -970,7 +970,7 @@ static void WriteMDSubprogram(const MDSubprogram *N, Record.push_back(N->getVirtualIndex()); Record.push_back(N->getFlags()); Record.push_back(N->isOptimized()); - Record.push_back(VE.getMetadataOrNullID(N->getFunction())); + Record.push_back(VE.getMetadataOrNullID(N->getRawFunction())); Record.push_back(VE.getMetadataOrNullID(N->getTemplateParams().get())); Record.push_back(VE.getMetadataOrNullID(N->getDeclaration())); Record.push_back(VE.getMetadataOrNullID(N->getVariables().get())); @@ -1064,7 +1064,7 @@ static void WriteMDGlobalVariable(const MDGlobalVariable *N, Record.push_back(VE.getMetadataOrNullID(N->getType())); Record.push_back(N->isLocalToUnit()); Record.push_back(N->isDefinition()); - Record.push_back(VE.getMetadataOrNullID(N->getVariable())); + Record.push_back(VE.getMetadataOrNullID(N->getRawVariable())); Record.push_back(VE.getMetadataOrNullID(N->getStaticDataMemberDeclaration())); Stream.EmitRecord(bitc::METADATA_GLOBAL_VAR, Record, Abbrev); diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index f3b4997efb7..464dac5a25d 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -594,8 +594,8 @@ DIGlobalVariable DIBuilder::createGlobalVariable( auto *N = MDGlobalVariable::get( VMContext, cast_or_null<MDScope>(Context.get()), Name, LinkageName, F, - LineNumber, MDTypeRef::get(Ty), isLocalToUnit, true, - getConstantOrNull(Val), cast_or_null<MDDerivedType>(Decl)); + LineNumber, MDTypeRef::get(Ty), isLocalToUnit, true, Val, + cast_or_null<MDDerivedType>(Decl)); AllGVs.push_back(N); return N; } @@ -608,7 +608,7 @@ DIGlobalVariable DIBuilder::createTempGlobalVariableFwdDecl( return MDGlobalVariable::getTemporary( VMContext, cast_or_null<MDScope>(Context.get()), Name, LinkageName, - F, LineNumber, MDTypeRef::get(Ty), isLocalToUnit, false, getConstantOrNull(Val), + F, LineNumber, MDTypeRef::get(Ty), isLocalToUnit, false, Val, cast_or_null<MDDerivedType>(Decl)).release(); } @@ -681,7 +681,7 @@ DISubprogram DIBuilder::createFunction(DIDescriptor Context, StringRef Name, VMContext, MDScopeRef::get(DIScope(getNonCompileUnitScope(Context))), Name, LinkageName, File.get(), LineNo, cast_or_null<MDSubroutineType>(Ty.get()), isLocalToUnit, isDefinition, - ScopeLine, nullptr, 0, 0, Flags, isOptimized, getConstantOrNull(Fn), + ScopeLine, nullptr, 0, 0, Flags, isOptimized, Fn, cast_or_null<MDTuple>(TParams), cast_or_null<MDSubprogram>(Decl), MDTuple::getTemporary(VMContext, None).release()); @@ -704,10 +704,9 @@ DIBuilder::createTempFunctionFwdDecl(DIDescriptor Context, StringRef Name, MDScopeRef::get(DIScope(getNonCompileUnitScope(Context))), Name, LinkageName, File.get(), LineNo, cast_or_null<MDSubroutineType>(Ty.get()), isLocalToUnit, - isDefinition, ScopeLine, nullptr, 0, 0, Flags, isOptimized, - getConstantOrNull(Fn), cast_or_null<MDTuple>(TParams), - cast_or_null<MDSubprogram>(Decl), nullptr) - .release(); + isDefinition, ScopeLine, nullptr, 0, 0, Flags, isOptimized, Fn, + cast_or_null<MDTuple>(TParams), cast_or_null<MDSubprogram>(Decl), + nullptr).release(); } DISubprogram DIBuilder::createMethod(DIDescriptor Context, StringRef Name, @@ -728,8 +727,7 @@ DISubprogram DIBuilder::createMethod(DIDescriptor Context, StringRef Name, VMContext, MDScopeRef::get(cast<MDScope>(Context)), Name, LinkageName, F.get(), LineNo, cast_or_null<MDSubroutineType>(Ty.get()), isLocalToUnit, isDefinition, LineNo, MDTypeRef::get(VTableHolder), VK, VIndex, Flags, - isOptimized, getConstantOrNull(Fn), cast_or_null<MDTuple>(TParam), - nullptr, nullptr); + isOptimized, Fn, cast_or_null<MDTuple>(TParam), nullptr, nullptr); if (isDefinition) AllSubprograms.push_back(SP); diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index 19b799e0892..7797a026211 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -49,12 +49,6 @@ bool DIVariable::isInlinedFnArgument(const Function *CurFn) { return !SP.describes(CurFn); } -Function *DISubprogram::getFunction() const { - if (auto *C = dyn_cast_or_null<ConstantAsMetadata>(get()->getFunction())) - return dyn_cast<Function>(C->getValue()); - return nullptr; -} - bool DISubprogram::describes(const Function *F) { assert(F && "Invalid function"); if (F == getFunction()) diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp index e98be8ed6e7..72126cc5fb2 100644 --- a/llvm/lib/IR/DebugInfoMetadata.cpp +++ b/llvm/lib/IR/DebugInfoMetadata.cpp @@ -343,6 +343,11 @@ MDSubprogram *MDSubprogram::getImpl( Ops); } +Function *MDSubprogram::getFunction() const { + // FIXME: Should this be looking through bitcasts? + return dyn_cast_or_null<Function>(getFunctionConstant()); +} + void MDSubprogram::replaceFunction(Function *F) { replaceFunction(F ? ConstantAsMetadata::get(F) : static_cast<ConstantAsMetadata *>(nullptr)); diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 30fd7fd2099..a8eef378dce 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -964,11 +964,7 @@ void Verifier::visitMDSubprogram(const MDSubprogram &N) { Assert(!hasConflictingReferenceFlags(N.getFlags()), "invalid reference flags", &N); - if (!N.getFunction()) - return; - - // FIXME: Should this be looking through bitcasts? - auto *F = dyn_cast<Function>(N.getFunction()->getValue()); + auto *F = N.getFunction(); if (!F) return; |