| // RUN: %clang_analyze_cc1 -triple x86_64-unknown-freebsd %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); | 
 | } |