mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
DI: Simplify DebugInfoFinder::processType(), NFC
Handle `DISubroutineType` up-front rather than as part of a branch for `DICompositeTypeBase`. The only shared code path was looking through the base type, but `DISubroutineType` can never have a base type. This also removes the last use of `DICompositeTypeBase`, since we can strengthen the cast to `DICompositeType`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243159 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0567cb7e1a
commit
24b6acf971
@ -149,20 +149,22 @@ void DebugInfoFinder::processType(DIType *DT) {
|
||||
if (!addType(DT))
|
||||
return;
|
||||
processScope(DT->getScope().resolve(TypeIdentifierMap));
|
||||
if (auto *DCT = dyn_cast<DICompositeTypeBase>(DT)) {
|
||||
if (auto *ST = dyn_cast<DISubroutineType>(DT)) {
|
||||
for (DITypeRef Ref : ST->getTypeArray())
|
||||
processType(Ref.resolve(TypeIdentifierMap));
|
||||
return;
|
||||
}
|
||||
if (auto *DCT = dyn_cast<DICompositeType>(DT)) {
|
||||
processType(DCT->getBaseType().resolve(TypeIdentifierMap));
|
||||
if (auto *ST = dyn_cast<DISubroutineType>(DCT)) {
|
||||
for (DITypeRef Ref : ST->getTypeArray())
|
||||
processType(Ref.resolve(TypeIdentifierMap));
|
||||
return;
|
||||
}
|
||||
for (Metadata *D : DCT->getElements()) {
|
||||
if (auto *T = dyn_cast<DIType>(D))
|
||||
processType(T);
|
||||
else if (auto *SP = dyn_cast<DISubprogram>(D))
|
||||
processSubprogram(SP);
|
||||
}
|
||||
} else if (auto *DDT = dyn_cast<DIDerivedType>(DT)) {
|
||||
return;
|
||||
}
|
||||
if (auto *DDT = dyn_cast<DIDerivedType>(DT)) {
|
||||
processType(DDT->getBaseType().resolve(TypeIdentifierMap));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user