[clang] [Clang][Windows] Preserve natural alignment for vector and x86_fp80 arrays under #pragma pack. (PR #208256)

Zahira Ammarguellat via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 23 07:06:24 PDT 2026


================
@@ -2547,9 +2558,19 @@ TypeInfo ASTContext::getTypeInfoImpl(const Type *T) const {
     const ASTRecordLayout &Layout = getASTRecordLayout(RD);
     Width = toBits(Layout.getSize());
     Align = toBits(Layout.getAlignment());
-    AlignRequirement = RD->hasAttr<AlignedAttr>()
-                           ? AlignRequirementKind::RequiredByRecord
-                           : AlignRequirementKind::None;
+    if (RD->hasAttr<AlignedAttr>()) {
+      AlignRequirement = AlignRequirementKind::RequiredByRecord;
+    } else if (llvm::any_of(RD->fields(), [this](const FieldDecl *FD) {
+                 return getTypeInfo(FD->getType()).AlignRequirement ==
+                        AlignRequirementKind::ResistPragmaPack;
+               })) {
----------------
zahiraam wrote:

Done.

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


More information about the cfe-commits mailing list