aboutsummaryrefslogtreecommitdiff
path: root/lib/AST
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-02-17 22:16:19 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-02-17 22:16:19 +0000
commitb7d0844c887a72064b624dc6df12cbe1441f69d0 (patch)
treee8b79d5d3d7d5c681818155cc53122a3a90a1f10 /lib/AST
parent39aa1ed8f9b8d85947a2ef9febe50511362d8ed1 (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.cpp4
-rw-r--r--lib/AST/ExprConstant.cpp4
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());
}