diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-02-17 22:16:19 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-02-17 22:16:19 +0000 |
commit | b7d0844c887a72064b624dc6df12cbe1441f69d0 (patch) | |
tree | e8b79d5d3d7d5c681818155cc53122a3a90a1f10 /lib/AST | |
parent | 39aa1ed8f9b8d85947a2ef9febe50511362d8ed1 (diff) |
Eek! getDeclAlign sometimes returned alignment in bits.
- Renamed to getDeclAlignInBytes since most other query functions
work in bits.
- Fun to track down as isIntegerConstantExpr was getting it right,
but Evaluate() was getting it wrong. Maybe we should assert they
compute the same thing when they succeed?
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64828 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST')
-rw-r--r-- | lib/AST/ASTContext.cpp | 4 | ||||
-rw-r--r-- | lib/AST/ExprConstant.cpp | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index c87b08627d..4a3f00f356 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -263,7 +263,7 @@ const llvm::fltSemantics &ASTContext::getFloatTypeSemantics(QualType T) const { /// getDeclAlign - Return a conservative estimate of the alignment of the /// specified decl. Note that bitfields do not have a valid alignment, so /// this method will assert on them. -unsigned ASTContext::getDeclAlign(const Decl *D) { +unsigned ASTContext::getDeclAlignInBytes(const Decl *D) { // FIXME: If attribute(align) is specified on the decl, round up to it. if (const ValueDecl *VD = dyn_cast<ValueDecl>(D)) { @@ -275,7 +275,7 @@ unsigned ASTContext::getDeclAlign(const Decl *D) { while (isa<VariableArrayType>(T) || isa<IncompleteArrayType>(T)) T = cast<ArrayType>(T)->getElementType(); - return getTypeAlign(T); + return getTypeAlign(T) / Target.getCharWidth(); } return 1; diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index 7b3e64908a..ad83e372b4 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -981,10 +981,10 @@ unsigned IntExprEvaluator::GetAlignOfExpr(const Expr *E) { // alignof decl is always accepted, even if it doesn't make sense: we default // to 1 in those cases. if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E)) - return Info.Ctx.getDeclAlign(DRE->getDecl()); + return Info.Ctx.getDeclAlignInBytes(DRE->getDecl()); if (const MemberExpr *ME = dyn_cast<MemberExpr>(E)) - return Info.Ctx.getDeclAlign(ME->getMemberDecl()); + return Info.Ctx.getDeclAlignInBytes(ME->getMemberDecl()); return GetAlignOfType(E->getType()); } |