summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-02-22 03:31:23 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-02-22 03:31:23 +0000
commit3f8c01a11029a0c7122426e93c1f9103c60aead3 (patch)
tree8b4039557c5d6a2b51339d5c7d7961844a0d34b1 /clang
parent34ef3057599709cf39c34d5dbac7f9f240408216 (diff)
downloadbcm5719-llvm-3f8c01a11029a0c7122426e93c1f9103c60aead3.tar.gz
bcm5719-llvm-3f8c01a11029a0c7122426e93c1f9103c60aead3.zip
Fix for PR3433: map __alignof__ to preferred alignment. (This was
partially done in r65258.) llvm-svn: 65260
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/ExprConstant.cpp2
-rw-r--r--clang/test/Sema/align-x86.c6
-rw-r--r--clang/test/Sema/attr-aligned.c5
3 files changed, 7 insertions, 6 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index e3c48091b5e..103bc37f4fe 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -960,7 +960,7 @@ unsigned IntExprEvaluator::GetAlignOfType(QualType T) {
// Get information about the alignment.
unsigned CharSize = Info.Ctx.Target.getCharWidth();
- return Info.Ctx.getTypeAlign(Ty) / CharSize;
+ return Info.Ctx.getPreferredTypeAlign(Ty) / CharSize;
}
unsigned IntExprEvaluator::GetAlignOfExpr(const Expr *E) {
diff --git a/clang/test/Sema/align-x86.c b/clang/test/Sema/align-x86.c
new file mode 100644
index 00000000000..df392a2e1e8
--- /dev/null
+++ b/clang/test/Sema/align-x86.c
@@ -0,0 +1,6 @@
+// RUN: clang -triple i386-apple-darwin9 -fsyntax-only -verify %s
+
+// PR3433
+double g1;
+short chk1[__alignof__(g1) == 8 ? 1 : -1];
+short chk2[__alignof__(double) == 8 ? 1 : -1];
diff --git a/clang/test/Sema/attr-aligned.c b/clang/test/Sema/attr-aligned.c
index aa72566c89f..e689c0eaebe 100644
--- a/clang/test/Sema/attr-aligned.c
+++ b/clang/test/Sema/attr-aligned.c
@@ -5,8 +5,3 @@ int x __attribute__((aligned(3))); // expected-error {{requested alignment is no
// PR3254
short g0[3] __attribute__((aligned));
short g0_chk[__alignof__(g0) == 16 ? 1 : -1];
-
-// PR3433
-double g1;
-short chk1[__alignof__(g1) == 8 ? 1 : -1];
-
OpenPOWER on IntegriCloud