diff options
Diffstat (limited to 'clang/lib/Sema/SemaStmtAsm.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaStmtAsm.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaStmtAsm.cpp b/clang/lib/Sema/SemaStmtAsm.cpp index cd8b98c7444e..0438af752a69 100644 --- a/clang/lib/Sema/SemaStmtAsm.cpp +++ b/clang/lib/Sema/SemaStmtAsm.cpp @@ -885,18 +885,19 @@ bool Sema::LookupInlineAsmField(StringRef Base, StringRef Member, for (StringRef NextMember : Members) { const RecordType *RT = nullptr; if (VarDecl *VD = dyn_cast<VarDecl>(FoundDecl)) - RT = VD->getType()->getAs<RecordType>(); + RT = VD->getType()->getAsCanonical<RecordType>(); else if (TypedefNameDecl *TD = dyn_cast<TypedefNameDecl>(FoundDecl)) { MarkAnyDeclReferenced(TD->getLocation(), TD, /*OdrUse=*/false); // MS InlineAsm often uses struct pointer aliases as a base QualType QT = TD->getUnderlyingType(); if (const auto *PT = QT->getAs<PointerType>()) QT = PT->getPointeeType(); - RT = QT->getAs<RecordType>(); + RT = QT->getAsCanonical<RecordType>(); } else if (TypeDecl *TD = dyn_cast<TypeDecl>(FoundDecl)) - RT = Context.getTypeDeclType(TD)->getAs<RecordType>(); + RT = QualType(Context.getCanonicalTypeDeclType(TD)) + ->getAsCanonical<RecordType>(); else if (FieldDecl *TD = dyn_cast<FieldDecl>(FoundDecl)) - RT = TD->getType()->getAs<RecordType>(); + RT = TD->getType()->getAsCanonical<RecordType>(); if (!RT) return true; @@ -944,16 +945,15 @@ Sema::LookupInlineAsmVarDeclField(Expr *E, StringRef Member, /*FirstQualifierFoundInScope=*/nullptr, NameInfo, /*TemplateArgs=*/nullptr); } - const RecordType *RT = T->getAs<RecordType>(); + auto *RD = T->getAsRecordDecl(); // FIXME: Diagnose this as field access into a scalar type. - if (!RT) + if (!RD) return ExprResult(); LookupResult FieldResult(*this, &Context.Idents.get(Member), AsmLoc, LookupMemberName); - if (!LookupQualifiedName(FieldResult, - RT->getOriginalDecl()->getDefinitionOrSelf())) + if (!LookupQualifiedName(FieldResult, RD)) return ExprResult(); // Only normal and indirect field results will work. |
