| // RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core -verify %s |
| |
| typedef unsigned long size_t; |
| #define BIGINDEX 65536U |
| |
| size_t check_VLA_overflow_sizeof(unsigned int x) { |
| if (x == BIGINDEX) { |
| // We expect here that size_t is a 64 bit value. |
| // Size of this array should be the first to overflow. |
| size_t s = sizeof(char[x][x][x][x]); // expected-warning{{Declared variable-length array (VLA) has too large size [core.VLASize]}} |
| return s; |
| } |
| return 0; |
| } |
| |
| void check_VLA_overflow_typedef() { |
| unsigned int x = BIGINDEX; |
| typedef char VLA[x][x][x][x]; // expected-warning{{Declared variable-length array (VLA) has too large size [core.VLASize]}} |
| } |
| |
| void check_VLA_no_overflow() { |
| unsigned int x = BIGINDEX; |
| typedef char VLA[x][x][x][x - 1]; |
| typedef char VLA1[0xffffffffu]; |
| } |