summaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CGExprCXX.cpp
diff options
context:
space:
mode:
authorMatheus Izvekov <mizvekov@gmail.com>2025-08-27 06:20:14 -0300
committerGitHub <noreply@github.com>2025-08-27 06:20:14 -0300
commit88438ba1f37fa4e0c2db203cd5556e52c9c34c08 (patch)
tree7fb96d5778f8b5f6c6bc258182c1f743a2f0d5da /clang/lib/CodeGen/CGExprCXX.cpp
parentf6d2fcc7a64250d3a6fe2365f0b2d600f0ece887 (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.cpp7
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();