reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/AST/ASTStructuralEquivalence.cpp
  437   if (T1.isNull() || T2.isNull())
  438     return T1.isNull() && T2.isNull();
  440   QualType OrigT1 = T1;
  446     T1 = Context.FromCtx.getCanonicalType(T1);
  446     T1 = Context.FromCtx.getCanonicalType(T1);
  450   if (T1.getQualifiers() != T2.getQualifiers())
  453   Type::TypeClass TC = T1->getTypeClass();
  455   if (T1->getTypeClass() != T2->getTypeClass()) {
  458     if (T1->getTypeClass() == Type::FunctionProto &&
  461     else if (T1->getTypeClass() == Type::FunctionNoProto &&
  471     if (cast<BuiltinType>(T1)->getKind() != cast<BuiltinType>(T2)->getKind())
  477                                   cast<ComplexType>(T1)->getElementType(),
  485                                   cast<AdjustedType>(T1)->getOriginalType(),
  492                                   cast<PointerType>(T1)->getPointeeType(),
  499                                   cast<BlockPointerType>(T1)->getPointeeType(),
  506     const auto *Ref1 = cast<ReferenceType>(T1);
  519     const auto *MemPtr1 = cast<MemberPointerType>(T1);
  531     const auto *Array1 = cast<ConstantArrayType>(T1);
  542     if (!IsArrayStructurallyEquivalent(Context, cast<ArrayType>(T1),
  548     const auto *Array1 = cast<VariableArrayType>(T1);
  561     const auto *Array1 = cast<DependentSizedArrayType>(T1);
  574     const auto *DepAddressSpace1 = cast<DependentAddressSpaceType>(T1);
  587     const auto *Vec1 = cast<DependentSizedExtVectorType>(T1);
  599     const auto *Vec1 = cast<DependentVectorType>(T1);
  614     const auto *Vec1 = cast<VectorType>(T1);
  627     const auto *Proto1 = cast<FunctionProtoType>(T1);
  656     const auto *Function1 = cast<FunctionType>(T1);
  669                                   cast<UnresolvedUsingType>(T1)->getDecl(),
  676                                   cast<AttributedType>(T1)->getModifiedType(),
  680             Context, cast<AttributedType>(T1)->getEquivalentType(),
  686     if (!IsStructurallyEquivalent(Context, cast<ParenType>(T1)->getInnerType(),
  693             Context, cast<MacroQualifiedType>(T1)->getUnderlyingType(),
  699     if (!IsStructurallyEquivalent(Context, cast<TypedefType>(T1)->getDecl(),
  706             Context, cast<TypeOfExprType>(T1)->getUnderlyingExpr(),
  713                                   cast<TypeOfType>(T1)->getUnderlyingType(),
  720             Context, cast<UnaryTransformType>(T1)->getUnderlyingType(),
  727                                   cast<DecltypeType>(T1)->getUnderlyingExpr(),
  733     if (!IsStructurallyEquivalent(Context, cast<AutoType>(T1)->getDeducedType(),
  739     const auto *DT1 = cast<DeducedTemplateSpecializationType>(T1);
  752     if (!IsStructurallyEquivalent(Context, cast<TagType>(T1)->getDecl(),
  758     const auto *Parm1 = cast<TemplateTypeParmType>(T1);
  772     const auto *Subst1 = cast<SubstTemplateTypeParmType>(T1);
  785     const auto *Subst1 = cast<SubstTemplateTypeParmPackType>(T1);
  798     const auto *Spec1 = cast<TemplateSpecializationType>(T1);
  814     const auto *Elab1 = cast<ElaboratedType>(T1);
  829     const auto *Inj1 = cast<InjectedClassNameType>(T1);
  839     const auto *Typename1 = cast<DependentNameType>(T1);
  852     const auto *Spec1 = cast<DependentTemplateSpecializationType>(T1);
  872                                   cast<PackExpansionType>(T1)->getPattern(),
  878     const auto *Iface1 = cast<ObjCInterfaceType>(T1);
  887     const auto *Obj1 = cast<ObjCTypeParamType>(T1);
  903     const auto *Obj1 = cast<ObjCObjectType>(T1);
  919     const auto *Ptr1 = cast<ObjCObjectPointerType>(T1);
  928     if (!IsStructurallyEquivalent(Context, cast<AtomicType>(T1)->getValueType(),
  934     if (!IsStructurallyEquivalent(Context, cast<PipeType>(T1)->getElementType(),