mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
DebugInfo: Remove DICompositeType mutation API
Change `DIBuilder` to mutate `MDCompositeTypeBase` directly, and remove the wrapping API in `DICompositeType`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234289 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
351071c069
commit
b135631d2e
@ -427,9 +427,6 @@ public:
|
||||
class DICompositeType : public DIDerivedType {
|
||||
friend class DIBuilder;
|
||||
|
||||
/// \brief Set the array of member DITypes.
|
||||
void setArraysHelper(MDNode *Elements, MDNode *TParams);
|
||||
|
||||
public:
|
||||
DICompositeType() = default;
|
||||
DICompositeType(const MDCompositeTypeBase *N) : DIDerivedType(N) {}
|
||||
@ -449,27 +446,11 @@ public:
|
||||
return DIArray(get()->getElements());
|
||||
}
|
||||
|
||||
private:
|
||||
template <typename T>
|
||||
void setArrays(DITypedArray<T> Elements, DIArray TParams = DIArray()) {
|
||||
assert(
|
||||
(!TParams || DbgNode->getNumOperands() == 8) &&
|
||||
"If you're setting the template parameters this should include a slot "
|
||||
"for that!");
|
||||
setArraysHelper(Elements, TParams);
|
||||
}
|
||||
|
||||
public:
|
||||
unsigned getRunTimeLang() const { return get()->getRuntimeLang(); }
|
||||
DITypeRef getContainingType() const {
|
||||
return DITypeRef::get(get()->getVTableHolder());
|
||||
}
|
||||
|
||||
private:
|
||||
/// \brief Set the containing type.
|
||||
void setContainingType(DICompositeType ContainingType);
|
||||
|
||||
public:
|
||||
DIArray getTemplateParams() const {
|
||||
return DIArray(get()->getTemplateParams());
|
||||
}
|
||||
|
@ -835,7 +835,11 @@ Instruction *DIBuilder::insertDbgValueIntrinsic(Value *V, uint64_t Offset,
|
||||
}
|
||||
|
||||
void DIBuilder::replaceVTableHolder(DICompositeType &T, DICompositeType VTableHolder) {
|
||||
T.setContainingType(VTableHolder);
|
||||
{
|
||||
TypedTrackingMDRef<MDCompositeTypeBase> N(T);
|
||||
N->replaceVTableHolder(MDTypeRef::get(VTableHolder));
|
||||
T = N.get();
|
||||
}
|
||||
|
||||
// If this didn't create a self-reference, just return.
|
||||
if (T != VTableHolder)
|
||||
@ -851,7 +855,14 @@ void DIBuilder::replaceVTableHolder(DICompositeType &T, DICompositeType VTableHo
|
||||
|
||||
void DIBuilder::replaceArrays(DICompositeType &T, DIArray Elements,
|
||||
DIArray TParams) {
|
||||
T.setArrays(Elements, TParams);
|
||||
{
|
||||
TypedTrackingMDRef<MDCompositeTypeBase> N(T);
|
||||
if (Elements)
|
||||
N->replaceElements(cast<MDTuple>(Elements.get()));
|
||||
if (TParams)
|
||||
N->replaceTemplateParams(cast<MDTuple>(TParams.get()));
|
||||
T = N.get();
|
||||
}
|
||||
|
||||
// If T isn't resolved, there's no problem.
|
||||
if (!T->isResolved())
|
||||
|
@ -125,23 +125,8 @@ static bool isDescriptorRef(const Metadata *MD) {
|
||||
}
|
||||
#endif
|
||||
|
||||
void DICompositeType::setArraysHelper(MDNode *Elements, MDNode *TParams) {
|
||||
TypedTrackingMDRef<MDCompositeTypeBase> N(get());
|
||||
if (Elements)
|
||||
N->replaceElements(cast<MDTuple>(Elements));
|
||||
if (TParams)
|
||||
N->replaceTemplateParams(cast<MDTuple>(TParams));
|
||||
DbgNode = N;
|
||||
}
|
||||
|
||||
DIScopeRef DIScope::getRef() const { return MDScopeRef::get(get()); }
|
||||
|
||||
void DICompositeType::setContainingType(DICompositeType ContainingType) {
|
||||
TypedTrackingMDRef<MDCompositeTypeBase> N(get());
|
||||
N->replaceVTableHolder(MDTypeRef::get(ContainingType));
|
||||
DbgNode = N;
|
||||
}
|
||||
|
||||
bool DIVariable::isInlinedFnArgument(const Function *CurFn) {
|
||||
assert(CurFn && "Invalid function");
|
||||
DISubprogram SP = dyn_cast<MDSubprogram>(getContext());
|
||||
|
Loading…
Reference in New Issue
Block a user