mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Revert "Turn DISubprogram into a variable-length node."
This reverts commit r301498 while investigating bot breakage. llvm-svn: 301499
This commit is contained in:
parent
800e36b695
commit
b8a51e4581
@ -1614,7 +1614,11 @@ public:
|
|||||||
DIScopeRef getScope() const { return DIScopeRef(getRawScope()); }
|
DIScopeRef getScope() const { return DIScopeRef(getRawScope()); }
|
||||||
|
|
||||||
StringRef getName() const { return getStringOperand(2); }
|
StringRef getName() const { return getStringOperand(2); }
|
||||||
StringRef getLinkageName() const { return getStringOperand(3); }
|
StringRef getDisplayName() const { return getStringOperand(3); }
|
||||||
|
StringRef getLinkageName() const { return getStringOperand(4); }
|
||||||
|
|
||||||
|
MDString *getRawName() const { return getOperandAs<MDString>(2); }
|
||||||
|
MDString *getRawLinkageName() const { return getOperandAs<MDString>(4); }
|
||||||
|
|
||||||
DISubroutineType *getType() const {
|
DISubroutineType *getType() const {
|
||||||
return cast_or_null<DISubroutineType>(getRawType());
|
return cast_or_null<DISubroutineType>(getRawType());
|
||||||
@ -1626,7 +1630,7 @@ public:
|
|||||||
DICompileUnit *getUnit() const {
|
DICompileUnit *getUnit() const {
|
||||||
return cast_or_null<DICompileUnit>(getRawUnit());
|
return cast_or_null<DICompileUnit>(getRawUnit());
|
||||||
}
|
}
|
||||||
void replaceUnit(DICompileUnit *CU) { replaceOperandWith(5, CU); }
|
void replaceUnit(DICompileUnit *CU) { replaceOperandWith(7, CU); }
|
||||||
DITemplateParameterArray getTemplateParams() const {
|
DITemplateParameterArray getTemplateParams() const {
|
||||||
return cast_or_null<MDTuple>(getRawTemplateParams());
|
return cast_or_null<MDTuple>(getRawTemplateParams());
|
||||||
}
|
}
|
||||||
@ -1641,21 +1645,13 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Metadata *getRawScope() const { return getOperand(1); }
|
Metadata *getRawScope() const { return getOperand(1); }
|
||||||
MDString *getRawName() const { return getOperandAs<MDString>(2); }
|
Metadata *getRawType() const { return getOperand(5); }
|
||||||
MDString *getRawLinkageName() const { return getOperandAs<MDString>(3); }
|
Metadata *getRawContainingType() const { return getOperand(6); }
|
||||||
Metadata *getRawType() const { return getOperand(4); }
|
Metadata *getRawUnit() const { return getOperand(7); }
|
||||||
Metadata *getRawUnit() const { return getOperand(5); }
|
Metadata *getRawTemplateParams() const { return getOperand(8); }
|
||||||
Metadata *getRawDeclaration() const { return getOperand(6); }
|
Metadata *getRawDeclaration() const { return getOperand(9); }
|
||||||
Metadata *getRawVariables() const { return getOperand(7); }
|
Metadata *getRawVariables() const { return getOperand(10); }
|
||||||
Metadata *getRawContainingType() const {
|
Metadata *getRawThrownTypes() const { return getOperand(11); }
|
||||||
return getNumOperands() > 8 ? getOperand(8) : nullptr;
|
|
||||||
}
|
|
||||||
Metadata *getRawTemplateParams() const {
|
|
||||||
return getNumOperands() > 9 ? getOperand(9) : nullptr;
|
|
||||||
}
|
|
||||||
Metadata *getRawThrownTypes() const {
|
|
||||||
return getNumOperands() > 10 ? getOperand(10) : nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if this subprogram describes the given function.
|
/// Check if this subprogram describes the given function.
|
||||||
///
|
///
|
||||||
|
@ -474,8 +474,8 @@ class MetadataLoader::MetadataLoaderImpl {
|
|||||||
for (auto CU_SP : CUSubprograms)
|
for (auto CU_SP : CUSubprograms)
|
||||||
if (auto *SPs = dyn_cast_or_null<MDTuple>(CU_SP.second))
|
if (auto *SPs = dyn_cast_or_null<MDTuple>(CU_SP.second))
|
||||||
for (auto &Op : SPs->operands())
|
for (auto &Op : SPs->operands())
|
||||||
if (auto *SP = dyn_cast_or_null<DISubprogram>(Op))
|
if (auto *SP = dyn_cast_or_null<MDNode>(Op))
|
||||||
SP->replaceUnit(CU_SP.first);
|
SP->replaceOperandWith(7, CU_SP.first);
|
||||||
CUSubprograms.clear();
|
CUSubprograms.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -820,7 +820,7 @@ static bool emitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) {
|
|||||||
|
|
||||||
const DILocalVariable *V = MI->getDebugVariable();
|
const DILocalVariable *V = MI->getDebugVariable();
|
||||||
if (auto *SP = dyn_cast<DISubprogram>(V->getScope())) {
|
if (auto *SP = dyn_cast<DISubprogram>(V->getScope())) {
|
||||||
StringRef Name = SP->getName();
|
StringRef Name = SP->getDisplayName();
|
||||||
if (!Name.empty())
|
if (!Name.empty())
|
||||||
OS << Name << ":";
|
OS << Name << ":";
|
||||||
}
|
}
|
||||||
|
@ -237,7 +237,7 @@ TypeIndex CodeViewDebug::getFuncIdForSubprogram(const DISubprogram *SP) {
|
|||||||
|
|
||||||
// The display name includes function template arguments. Drop them to match
|
// The display name includes function template arguments. Drop them to match
|
||||||
// MSVC.
|
// MSVC.
|
||||||
StringRef DisplayName = SP->getName().split('<').first;
|
StringRef DisplayName = SP->getDisplayName().split('<').first;
|
||||||
|
|
||||||
const DIScope *Scope = SP->getScope().resolve();
|
const DIScope *Scope = SP->getScope().resolve();
|
||||||
TypeIndex TI;
|
TypeIndex TI;
|
||||||
@ -657,7 +657,7 @@ void CodeViewDebug::emitInlineeLinesSubsection() {
|
|||||||
|
|
||||||
OS.AddBlankLine();
|
OS.AddBlankLine();
|
||||||
unsigned FileId = maybeRecordFile(SP->getFile());
|
unsigned FileId = maybeRecordFile(SP->getFile());
|
||||||
OS.AddComment("Inlined function " + SP->getName() + " starts at " +
|
OS.AddComment("Inlined function " + SP->getDisplayName() + " starts at " +
|
||||||
SP->getFilename() + Twine(':') + Twine(SP->getLine()));
|
SP->getFilename() + Twine(':') + Twine(SP->getLine()));
|
||||||
OS.AddBlankLine();
|
OS.AddBlankLine();
|
||||||
// The filechecksum table uses 8 byte entries for now, and file ids start at
|
// The filechecksum table uses 8 byte entries for now, and file ids start at
|
||||||
@ -759,9 +759,9 @@ void CodeViewDebug::emitDebugInfoForFunction(const Function *GV,
|
|||||||
|
|
||||||
// If we have a display name, build the fully qualified name by walking the
|
// If we have a display name, build the fully qualified name by walking the
|
||||||
// chain of scopes.
|
// chain of scopes.
|
||||||
if (!SP->getName().empty())
|
if (!SP->getDisplayName().empty())
|
||||||
FuncName =
|
FuncName =
|
||||||
getFullyQualifiedName(SP->getScope().resolve(), SP->getName());
|
getFullyQualifiedName(SP->getScope().resolve(), SP->getDisplayName());
|
||||||
|
|
||||||
// If our DISubprogram name is empty, use the mangled name.
|
// If our DISubprogram name is empty, use the mangled name.
|
||||||
if (FuncName.empty())
|
if (FuncName.empty())
|
||||||
|
@ -214,10 +214,6 @@ void GenericDINode::recalculateHash() {
|
|||||||
#define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(CLASS, OPS) \
|
#define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(CLASS, OPS) \
|
||||||
return storeImpl(new (array_lengthof(OPS)) CLASS(Context, Storage, OPS), \
|
return storeImpl(new (array_lengthof(OPS)) CLASS(Context, Storage, OPS), \
|
||||||
Storage, Context.pImpl->CLASS##s)
|
Storage, Context.pImpl->CLASS##s)
|
||||||
#define DEFINE_GETIMPL_STORE_N(CLASS, ARGS, OPS, NUM_OPS) \
|
|
||||||
return storeImpl(new (NUM_OPS) \
|
|
||||||
CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \
|
|
||||||
Storage, Context.pImpl->CLASS##s)
|
|
||||||
|
|
||||||
DISubrange *DISubrange::getImpl(LLVMContext &Context, int64_t Count, int64_t Lo,
|
DISubrange *DISubrange::getImpl(LLVMContext &Context, int64_t Count, int64_t Lo,
|
||||||
StorageType Storage, bool ShouldCreate) {
|
StorageType Storage, bool ShouldCreate) {
|
||||||
@ -453,22 +449,13 @@ DISubprogram *DISubprogram::getImpl(
|
|||||||
IsDefinition, ScopeLine, ContainingType, Virtuality,
|
IsDefinition, ScopeLine, ContainingType, Virtuality,
|
||||||
VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit,
|
VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit,
|
||||||
TemplateParams, Declaration, Variables, ThrownTypes));
|
TemplateParams, Declaration, Variables, ThrownTypes));
|
||||||
SmallVector<Metadata *, 11> Ops = {
|
Metadata *Ops[] = {File, Scope, Name, Name,
|
||||||
File, Scope, Name, LinkageName, Type, Unit,
|
LinkageName, Type, ContainingType, Unit,
|
||||||
Declaration, Variables, ContainingType, TemplateParams, ThrownTypes};
|
TemplateParams, Declaration, Variables, ThrownTypes};
|
||||||
if (!ThrownTypes) {
|
DEFINE_GETIMPL_STORE(DISubprogram, (Line, ScopeLine, Virtuality, VirtualIndex,
|
||||||
Ops.pop_back();
|
ThisAdjustment, Flags, IsLocalToUnit,
|
||||||
if (!TemplateParams) {
|
IsDefinition, IsOptimized),
|
||||||
Ops.pop_back();
|
Ops);
|
||||||
if (!ContainingType)
|
|
||||||
Ops.pop_back();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DEFINE_GETIMPL_STORE_N(DISubprogram,
|
|
||||||
(Line, ScopeLine, Virtuality, VirtualIndex,
|
|
||||||
ThisAdjustment, Flags, IsLocalToUnit, IsDefinition,
|
|
||||||
IsOptimized),
|
|
||||||
Ops, Ops.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DISubprogram::describes(const Function *F) const {
|
bool DISubprogram::describes(const Function *F) const {
|
||||||
|
@ -51,7 +51,7 @@ struct BreakpointPrinter : public ModulePass {
|
|||||||
if (!SP)
|
if (!SP)
|
||||||
continue;
|
continue;
|
||||||
getContextName(SP->getScope().resolve(), Name);
|
getContextName(SP->getScope().resolve(), Name);
|
||||||
Name = Name + SP->getName().str();
|
Name = Name + SP->getDisplayName().str();
|
||||||
if (!Name.empty() && Processed.insert(Name).second) {
|
if (!Name.empty() && Processed.insert(Name).second) {
|
||||||
Out << Name << "\n";
|
Out << Name << "\n";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user