// RUN: %clang -target x86_64-unknown-freebsd --analyze %s #include "Inputs/system-header-simulator.h" #define M_ZERO 0x0100 #define NULL ((void *)0) void *malloc(size_t, void *, int); struct test { }; void foo(struct test *); void test_zeroed() { struct test **list, *t; int i; list = malloc(sizeof(*list) * 10, NULL, M_ZERO); if (list == NULL) return; for (i = 0; i < 10; i++) { t = list[i]; foo(t); } free(list); // no-warning } void test_nonzero() { struct test **list, *t; int i; list = malloc(sizeof(*list) * 10, NULL, 0); if (list == NULL) return; for (i = 0; i < 10; i++) { t = list[i]; // expected-warning{{undefined}} foo(t); } free(list); } void test_indeterminate(int flags) { struct test **list, *t; int i; list = malloc(sizeof(*list) * 10, NULL, flags); if (list == NULL) return; for (i = 0; i < 10; i++) { t = list[i]; // expected-warning{{undefined}} foo(t); } free(list); }