forked from OSchip/llvm-project
[ODRHash] Skip more types hashing TypedefType
To get the underlying type for TypedefType's, also skip ElaboratedType's. llvm-svn: 329869
This commit is contained in:
parent
48ee59b6f0
commit
caaccee77d
clang
|
@ -646,9 +646,19 @@ public:
|
|||
AddDecl(T->getDecl());
|
||||
QualType UnderlyingType = T->getDecl()->getUnderlyingType();
|
||||
VisitQualifiers(UnderlyingType.getQualifiers());
|
||||
while (const TypedefType *Underlying =
|
||||
dyn_cast<TypedefType>(UnderlyingType.getTypePtr())) {
|
||||
UnderlyingType = Underlying->getDecl()->getUnderlyingType();
|
||||
while (true) {
|
||||
if (const TypedefType *Underlying =
|
||||
dyn_cast<TypedefType>(UnderlyingType.getTypePtr())) {
|
||||
UnderlyingType = Underlying->getDecl()->getUnderlyingType();
|
||||
continue;
|
||||
}
|
||||
if (const ElaboratedType *Underlying =
|
||||
dyn_cast<ElaboratedType>(UnderlyingType.getTypePtr())) {
|
||||
UnderlyingType = Underlying->getNamedType();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
AddType(UnderlyingType.getTypePtr());
|
||||
VisitType(T);
|
||||
|
|
|
@ -2744,6 +2744,38 @@ struct S3 {
|
|||
#else
|
||||
S3 s3;
|
||||
#endif
|
||||
|
||||
#if defined(FIRST)
|
||||
using A4 = int;
|
||||
using B4 = A4;
|
||||
struct S4 {
|
||||
B4 x;
|
||||
};
|
||||
#elif defined(SECOND)
|
||||
using A4 = int;
|
||||
using B4 = ::MultipleTypedefs::A4;
|
||||
struct S4 {
|
||||
B4 x;
|
||||
};
|
||||
#else
|
||||
S4 s4;
|
||||
#endif
|
||||
|
||||
#if defined(FIRST)
|
||||
using A5 = int;
|
||||
using B5 = MultipleTypedefs::A5;
|
||||
struct S5 {
|
||||
B5 x;
|
||||
};
|
||||
#elif defined(SECOND)
|
||||
using A5 = int;
|
||||
using B5 = ::MultipleTypedefs::A5;
|
||||
struct S5 {
|
||||
B5 x;
|
||||
};
|
||||
#else
|
||||
S5 s5;
|
||||
#endif
|
||||
} // MultipleTypedefs
|
||||
|
||||
namespace DefaultArguments {
|
||||
|
|
Loading…
Reference in New Issue