diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-03-02 06:48:47 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-03-02 06:48:47 +0000 |
commit | ec4b7341cc27c31dbb09098fc115e5b74f70738c (patch) | |
tree | b70eecbe0db5afc42fe3b3cfcb7b6d4d6e4b42ba | |
parent | 5aadde1ecce7dee2c91f4df39d8c701197840e0e (diff) | |
download | bcm5719-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.h | 2 | ||||
-rw-r--r-- | clang/test/Sema/attr-aligned.c | 3 |
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]; |