[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
This commit is contained in:
David Majnemer 2016-03-02 06:48:47 +00:00
parent 5aadde1ecc
commit ec4b7341cc
2 changed files with 4 additions and 1 deletions

View File

@ -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

View File

@ -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];