diff options
| author | Matheus Izvekov <mizvekov@gmail.com> | 2025-08-27 06:20:14 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-27 06:20:14 -0300 |
| commit | 88438ba1f37fa4e0c2db203cd5556e52c9c34c08 (patch) | |
| tree | 7fb96d5778f8b5f6c6bc258182c1f743a2f0d5da /clang/lib/CodeGen/CGExprCXX.cpp | |
| parent | f6d2fcc7a64250d3a6fe2365f0b2d600f0ece887 (diff) | |
[clang] AST: fix getAs canonicalization of leaf types (#155028)
Diffstat (limited to 'clang/lib/CodeGen/CGExprCXX.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExprCXX.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGExprCXX.cpp b/clang/lib/CodeGen/CGExprCXX.cpp index 810a2ab8c1fc..1e4c72a210f9 100644 --- a/clang/lib/CodeGen/CGExprCXX.cpp +++ b/clang/lib/CodeGen/CGExprCXX.cpp @@ -1234,9 +1234,10 @@ void CodeGenFunction::EmitNewArrayInitializer( // If we have a struct whose every field is value-initialized, we can // usually use memset. if (auto *ILE = dyn_cast<InitListExpr>(Init)) { - if (const RecordType *RType = ILE->getType()->getAs<RecordType>()) { - const RecordDecl *RD = RType->getOriginalDecl()->getDefinitionOrSelf(); - if (RD->isStruct()) { + if (const RecordType *RType = + ILE->getType()->getAsCanonical<RecordType>()) { + if (RType->getOriginalDecl()->isStruct()) { + const RecordDecl *RD = RType->getOriginalDecl()->getDefinitionOrSelf(); unsigned NumElements = 0; if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) NumElements = CXXRD->getNumBases(); |
