summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-03-02 06:48:47 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-03-02 06:48:47 +0000
commitec4b7341cc27c31dbb09098fc115e5b74f70738c (patch)
treeb70eecbe0db5afc42fe3b3cfcb7b6d4d6e4b42ba
parent5aadde1ecce7dee2c91f4df39d8c701197840e0e (diff)
downloadbcm5719-llvm-ec4b7341cc27c31dbb09098fc115e5b74f70738c.tar.gz
bcm5719-llvm-ec4b7341cc27c31dbb09098fc115e5b74f70738c.zip
[Sema] PR26444 fix crash when alignment value is >= 2**16
Sema allows max values up to 2**28, use unsigned instead of unsiged short to hold values that large. Differential Revision: http://reviews.llvm.org/D17248 Patch by Don Hinton! llvm-svn: 262466
-rw-r--r--clang/lib/CodeGen/CGValue.h2
-rw-r--r--clang/test/Sema/attr-aligned.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGValue.h b/clang/lib/CodeGen/CGValue.h
index 3ccc4cda89f..53a376df645 100644
--- a/clang/lib/CodeGen/CGValue.h
+++ b/clang/lib/CodeGen/CGValue.h
@@ -445,7 +445,7 @@ class AggValueSlot {
// Qualifiers
Qualifiers Quals;
- unsigned short Alignment;
+ unsigned Alignment;
/// DestructedFlag - This is set to true if some external code is
/// responsible for setting up a destructor for the slot. Otherwise
diff --git a/clang/test/Sema/attr-aligned.c b/clang/test/Sema/attr-aligned.c
index 0a2698ec91a..b8d2fc6863d 100644
--- a/clang/test/Sema/attr-aligned.c
+++ b/clang/test/Sema/attr-aligned.c
@@ -3,6 +3,9 @@
int x __attribute__((aligned(3))); // expected-error {{requested alignment is not a power of 2}}
int y __attribute__((aligned(1 << 29))); // expected-error {{requested alignment must be 268435456 bytes or smaller}}
+// PR26444
+int y __attribute__((aligned(1 << 28)));
+
// PR3254
short g0[3] __attribute__((aligned));
short g0_chk[__alignof__(g0) == 16 ? 1 : -1];
OpenPOWER on IntegriCloud