|  | // RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-linux-gnu | 
|  |  | 
|  | // PR15216 | 
|  | // Don't crash when taking computing the offset of structs with large arrays. | 
|  | const unsigned long Size = (1l << 60); | 
|  |  | 
|  | struct Chunk1 { | 
|  | char padding[Size]; | 
|  | char more_padding[1][Size]; | 
|  | char data; | 
|  | }; | 
|  |  | 
|  | int test1 = __builtin_offsetof(struct Chunk1, data); | 
|  |  | 
|  | struct Chunk2 { | 
|  | char padding[Size][Size][Size];  // expected-error 2{{array is too large}} | 
|  | char data; | 
|  | }; | 
|  |  | 
|  | // FIXME: Remove this error when the constant evaluator learns to | 
|  | // ignore bad types. | 
|  | int test2 = __builtin_offsetof(struct Chunk2, data);  // expected-error{{initializer element is not a compile-time constant}} |