#include "Inputs/system-header-simulator-cxx.h"
void clang_analyzer_eval(bool);
struct s {
int x;
int y;
};
void a1(void) {
s arr[3];
int x = arr[0].x;
}
void a2(void) {
s arr[3];
int x = arr[1].x;
}
void a3(void) {
s arr[3];
int x = arr[2].x;
}
struct s2 {
int x;
int y = 2;
};
void b1(void) {
s2 arr[3];
clang_analyzer_eval(arr[0].y == 2); int x = arr[0].x;
}
void b2(void) {
s2 arr[3];
clang_analyzer_eval(arr[1].y == 2); int x = arr[1].x;
}
void b3(void) {
s2 arr[3];
clang_analyzer_eval(arr[2].y == 2); int x = arr[2].x;
}
void c1(void) {
{
s2 arr[2];
arr[1].x = 3;
clang_analyzer_eval(arr[1].y == 2); clang_analyzer_eval(arr[1].x == 3); }
{
s2 arr[2];
clang_analyzer_eval(arr[1].y == 2); int x = arr[1].x;
}
}
struct s3 {
int x = 1;
int y = 2;
};
struct s4 {
s3 arr[2];
s sarr[2];
};
void e1(void) {
s4 arr[2];
clang_analyzer_eval(arr[0].arr[0].x == 1); clang_analyzer_eval(arr[0].arr[0].y == 2);
clang_analyzer_eval(arr[0].arr[1].x == 1); clang_analyzer_eval(arr[0].arr[1].y == 2);
clang_analyzer_eval(arr[1].arr[0].x == 1); clang_analyzer_eval(arr[1].arr[0].y == 2);
clang_analyzer_eval(arr[1].arr[1].x == 1); clang_analyzer_eval(arr[1].arr[1].y == 2);
int x = arr[1].sarr[1].x;
}
void f1(void) {
s2 arr[2][2];
clang_analyzer_eval(arr[1][1].y == 2); int x = arr[1][1].x;
}
struct s5 {
static int c;
int x;
s5() : x(c++) {}
};
void g1(void) {
s5::c = 0;
s5 *arr = new s5[4];
new (arr + 1) s5[3];
clang_analyzer_eval(arr[0].x == 0); clang_analyzer_eval(arr[1].x == 4); clang_analyzer_eval(arr[2].x == 5); clang_analyzer_eval(arr[3].x == 6); }
void g2(void) {
s5::c = 0;
s5 arr[4];
clang_analyzer_eval(arr[0].x == 0); clang_analyzer_eval(arr[1].x == 1); clang_analyzer_eval(arr[2].x == 2); clang_analyzer_eval(arr[3].x == 3); }
void g3(void) {
s5::c = 0;
s5 arr[2][2];
clang_analyzer_eval(arr[0][0].x == 0); clang_analyzer_eval(arr[0][1].x == 1); clang_analyzer_eval(arr[1][0].x == 2); clang_analyzer_eval(arr[1][1].x == 3); }
void h1(void) {
s5::c = 0;
s5 a[2][2], b[2][2];
clang_analyzer_eval(a[0][0].x == 0); clang_analyzer_eval(a[0][1].x == 1); clang_analyzer_eval(a[1][0].x == 2); clang_analyzer_eval(a[1][1].x == 3);
clang_analyzer_eval(b[0][0].x == 4); clang_analyzer_eval(b[0][1].x == 5); clang_analyzer_eval(b[1][0].x == 6); clang_analyzer_eval(b[1][1].x == 7); }
void h2(void) {
s a[2][2], b[2][2];
int x = a[1][1].x;
}
void h3(void) {
s a[2][2], b[2][2];
int x = b[1][1].y;
}
struct Base {
int x;
int y;
Base(int x, int y) : x(x), y(y) {}
};
struct Derived : public Base {
int i;
int j;
Derived(int x, int y, int i, int j) : Base(x, y), i(i), j(j) {}
};
void delegate(void) {
Derived arr[2] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
clang_analyzer_eval(arr[0].x == 1); clang_analyzer_eval(arr[0].y == 2); clang_analyzer_eval(arr[0].i == 3); clang_analyzer_eval(arr[0].j == 4);
clang_analyzer_eval(arr[1].x == 5); clang_analyzer_eval(arr[1].y == 6); clang_analyzer_eval(arr[1].i == 7); clang_analyzer_eval(arr[1].j == 8); }
void delegate_heap(void) {
Derived *arr = new Derived[2]{{1, 2, 3, 4}, {5, 6, 7, 8}};
clang_analyzer_eval(arr[0].x == 1); clang_analyzer_eval(arr[0].y == 2); clang_analyzer_eval(arr[0].i == 3); clang_analyzer_eval(arr[0].j == 4);
clang_analyzer_eval(arr[1].x == 5); clang_analyzer_eval(arr[1].y == 6); clang_analyzer_eval(arr[1].i == 7); clang_analyzer_eval(arr[1].j == 8); }
struct Member {
int x;
int y;
};
struct Parent {
Member arr[2];
Parent() : arr{{1, 2}, {3, 4}} {}
};
void member() {
Parent arr[2];
clang_analyzer_eval(arr[0].arr[0].x == 1); clang_analyzer_eval(arr[0].arr[0].y == 2); clang_analyzer_eval(arr[0].arr[1].x == 3); clang_analyzer_eval(arr[0].arr[1].y == 4);
clang_analyzer_eval(arr[1].arr[0].x == 1); clang_analyzer_eval(arr[1].arr[0].y == 2); clang_analyzer_eval(arr[1].arr[1].x == 3); clang_analyzer_eval(arr[1].arr[1].y == 4); }