[PATCH] D109387: [AIX] Check for typedef properly when getting preferred type align
Steven Wan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 7 12:55:48 PDT 2021
stevewan created this revision.
stevewan requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
The current check for typedef is naive and doesn't deal with any convoluted cases. This patch makes use of the new 'AlignRequirement' enum field from 'TypeInfo' to determine whether or not this is an 'aligned' attribute on a typedef.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D109387
Files:
clang/lib/AST/ASTContext.cpp
Index: clang/lib/AST/ASTContext.cpp
===================================================================
--- clang/lib/AST/ASTContext.cpp
+++ clang/lib/AST/ASTContext.cpp
@@ -2497,8 +2497,10 @@
const RecordDecl *RD = RT->getDecl();
// When used as part of a typedef, or together with a 'packed' attribute,
- // the 'aligned' attribute can be used to decrease alignment.
- if ((TI.isAlignRequired() && T->getAs<TypedefType>() != nullptr) ||
+ // the 'aligned' attribute can be used to decrease alignment. Note that the
+ // 'packed' case is already taken into consideration when computing the
+ // alignment, we only need to handle the typedef case here.
+ if (TI.AlignRequirement == AlignRequirementKind::RequiredByTypedef ||
RD->isInvalidDecl())
return ABIAlign;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D109387.371159.patch
Type: text/x-patch
Size: 811 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210907/884bd714/attachment-0001.bin>
More information about the cfe-commits
mailing list