[clang] 89525cb - [Clang] Add helper method to determine if a nonvirtual base has an entry in the LLVM struct

William S. Moses via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 25 13:32:17 PDT 2022


Author: William S. Moses
Date: 2022-03-25T16:32:12-04:00
New Revision: 89525cbf283f1ffeca1e007a06b29917a9eadc53

URL: https://github.com/llvm/llvm-project/commit/89525cbf283f1ffeca1e007a06b29917a9eadc53
DIFF: https://github.com/llvm/llvm-project/commit/89525cbf283f1ffeca1e007a06b29917a9eadc53.diff

LOG: [Clang] Add helper method to determine if a nonvirtual base has an entry in the LLVM struct

This patch adds a helper method to determine if a nonvirtual base has an entry in the LLVM struct. Such a base may not have an entry
if the base does not have any fields/bases itself that would change the size of the struct. This utility method is useful for other frontends (Polygeist) that use Clang as an API to generate code.

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D122502

Added: 
    

Modified: 
    clang/lib/CodeGen/CGRecordLayout.h

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/CGRecordLayout.h b/clang/lib/CodeGen/CGRecordLayout.h
index 5a3bcdf72f7b6..d5ea74922603b 100644
--- a/clang/lib/CodeGen/CGRecordLayout.h
+++ b/clang/lib/CodeGen/CGRecordLayout.h
@@ -200,6 +200,12 @@ class CGRecordLayout {
     return FieldInfo.lookup(FD);
   }
 
+  // Return whether the following non virtual base has a corresponding
+  // entry in the LLVM struct.
+  bool hasNonVirtualBaseLLVMField(const CXXRecordDecl *RD) const {
+    return NonVirtualBases.count(RD);
+  }
+
   unsigned getNonVirtualBaseLLVMFieldNo(const CXXRecordDecl *RD) const {
     assert(NonVirtualBases.count(RD) && "Invalid non-virtual base!");
     return NonVirtualBases.lookup(RD);


        


More information about the cfe-commits mailing list