[llvm] [libc] [libcxx] [flang] [clang] [compiler-rt] [clang-tools-extra] [Clang] Generate the GEP instead of adding AST nodes (PR #73730)

Yeoul Na via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 12 01:04:23 PST 2023


================
@@ -876,31 +876,26 @@ CodeGenFunction::emitFlexibleArrayMemberSize(const Expr *E, unsigned Type,
   }
 
   // Get the flexible array member Decl.
-  const ValueDecl *FAMDecl = nullptr;
+  const RecordDecl *OuterRD = nullptr;
   if (const auto *ME = dyn_cast<MemberExpr>(Base)) {
     // Check if \p Base is referencing the FAM itself.
-    if (const ValueDecl *MD = ME->getMemberDecl()) {
-      const LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel =
-          getLangOpts().getStrictFlexArraysLevel();
-      if (!Decl::isFlexibleArrayMemberLike(
-              Ctx, MD, MD->getType(), StrictFlexArraysLevel,
-              /*IgnoreTemplateOrMacroSubstitution=*/true))
-        return nullptr;
-
-      FAMDecl = MD;
-    }
+    if (const ValueDecl *VD = dyn_cast<FieldDecl>(ME->getMemberDecl()))
----------------
rapidsna wrote:

Did you mean `if (const FieldDecl *VD = dyn_cast<FieldDecl>(ME->getMemberDecl()))`? Or is there a reason you do `dyn_cast<FieldDecl>` and then assign it back to `ValueDecl *`?

https://github.com/llvm/llvm-project/pull/73730


More information about the cfe-commits mailing list