Home | History | Annotate | Download | only in Sema
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-linux-gnu
      2 
      3 // PR15216
      4 // Don't crash when taking computing the offset of structs with large arrays.
      5 const unsigned long Size = (1l << 60);
      6 
      7 struct Chunk1 {
      8   char padding[Size];
      9   char more_padding[1][Size];
     10   char data;
     11 };
     12 
     13 int test1 = __builtin_offsetof(struct Chunk1, data);
     14 
     15 struct Chunk2 {
     16   char padding[Size][Size][Size];  // expected-error 2{{array is too large}}
     17   char data;
     18 };
     19 
     20 // FIXME: Remove this error when the constant evaluator learns to
     21 // ignore bad types.
     22 int test2 = __builtin_offsetof(struct Chunk2, data);  // expected-error{{initializer element is not a compile-time constant}}
     23