[clang] b04a419 - Minor refactororing of ASTContext::getDeclAlign() (NFC) (#72977)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 30 02:12:17 PST 2023
Author: Jonas Paulsson
Date: 2023-11-30T11:12:13+01:00
New Revision: b04a419be1cac5711029b511cfe16e6748a44a4d
URL: https://github.com/llvm/llvm-project/commit/b04a419be1cac5711029b511cfe16e6748a44a4d
DIFF: https://github.com/llvm/llvm-project/commit/b04a419be1cac5711029b511cfe16e6748a44a4d.diff
LOG: Minor refactororing of ASTContext::getDeclAlign() (NFC) (#72977)
Added:
Modified:
clang/lib/AST/ASTContext.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index a7cee3b7ba2b0db..e877f903b34c6bb 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -1627,28 +1627,22 @@ const llvm::fltSemantics &ASTContext::getFloatTypeSemantics(QualType T) const {
CharUnits ASTContext::getDeclAlign(const Decl *D, bool ForAlignof) const {
unsigned Align = Target->getCharWidth();
- bool UseAlignAttrOnly = false;
- if (unsigned AlignFromAttr = D->getMaxAlignment()) {
+ const unsigned AlignFromAttr = D->getMaxAlignment();
+ if (AlignFromAttr)
Align = AlignFromAttr;
- // __attribute__((aligned)) can increase or decrease alignment
- // *except* on a struct or struct member, where it only increases
- // alignment unless 'packed' is also specified.
- //
- // It is an error for alignas to decrease alignment, so we can
- // ignore that possibility; Sema should diagnose it.
- if (isa<FieldDecl>(D)) {
- UseAlignAttrOnly = D->hasAttr<PackedAttr>() ||
- cast<FieldDecl>(D)->getParent()->hasAttr<PackedAttr>();
- } else {
- UseAlignAttrOnly = true;
- }
- }
- else if (isa<FieldDecl>(D))
- UseAlignAttrOnly =
- D->hasAttr<PackedAttr>() ||
- cast<FieldDecl>(D)->getParent()->hasAttr<PackedAttr>();
-
+ // __attribute__((aligned)) can increase or decrease alignment
+ // *except* on a struct or struct member, where it only increases
+ // alignment unless 'packed' is also specified.
+ //
+ // It is an error for alignas to decrease alignment, so we can
+ // ignore that possibility; Sema should diagnose it.
+ bool UseAlignAttrOnly;
+ if (const FieldDecl *FD = dyn_cast<FieldDecl>(D))
+ UseAlignAttrOnly =
+ FD->hasAttr<PackedAttr>() || FD->getParent()->hasAttr<PackedAttr>();
+ else
+ UseAlignAttrOnly = AlignFromAttr != 0;
// If we're using the align attribute only, just ignore everything
// else about the declaration and its type.
if (UseAlignAttrOnly) {
More information about the cfe-commits
mailing list