brintos

brintos / llvm-project-archived public Read only

0
0
Text · 757 B · 692698f Raw
23 lines · c
1// RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-linux-gnu2 3// PR152164// Don't crash when taking computing the offset of structs with large arrays.5const unsigned long Size = (1l << 58);6 7struct Chunk1 {8  char padding[Size]; // expected-warning {{folded to constant}}9  char more_padding[1][Size]; // expected-warning {{folded to constant}}10  char data;11};12 13unsigned long test1 = __builtin_offsetof(struct Chunk1, data);14 15struct Chunk2 {16  char padding[Size][Size][Size];  // expected-error {{array is too large}}17  char data;18};19 20// FIXME: Remove this error when the constant evaluator learns to21// ignore bad types.22int test2 = __builtin_offsetof(struct Chunk2, data);  // expected-error{{initializer element is not a compile-time constant}} 23