offsetof-64.c revision 1bb8cb5558f46502b84e3b2935b7f5b4c1759d21
11bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu// RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-linux-gnu 21bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu// expected-no-diagnostics 31bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu 41bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu// PR15216 51bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu// Don't crash when taking computing the offset of structs with large arrays. 61bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieuconst unsigned long Size = (1l << 62); 71bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu 81bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieustruct Chunk { 91bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu char padding[Size]; 101bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu char more_padding[1][Size]; 111bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu char data; 121bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu}; 131bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu 141bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieuint test1 = __builtin_offsetof(struct Chunk, data); 151bb8cb5558f46502b84e3b2935b7f5b4c1759d21Richard Trieu 16