blob: 8caaee8a3fd09976692dbc2351bf7baf713d0cc1 [file] [log] [blame]
#include <stdlib.h>
#include "analyzer-decls.h"
extern int foo (int);
int test (int flag, void *ptr, int *p, int n)
{
int result;
int sum = 0;
int i;
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
if (flag)
free (ptr);
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enodes" } */
for (i = 0; i < n; i++)
p[i] = i;
for (i = 0; i < n; i++)
sum += foo (p[i]); /* { dg-bogus "uninitialized" } */
result = sum;
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enodes" } */
if (flag)
free (ptr); /* { dg-warning "double-'free' of 'ptr'" } */
return result;
}
int test_2 (int flag, int *p, int n)
{
int result;
int sum = 0;
int i;
void *ptr = malloc (16);
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
if (flag)
free (ptr);
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enodes" } */
for (i = 0; i < n; i++)
p[i] = i;
for (i = 0; i < n; i++)
sum += foo (p[i]); /* { dg-bogus "uninitialized" } */
result = sum;
__analyzer_dump_exploded_nodes (0); /* { dg-warning "2 processed enodes" } */
free (ptr); /* { dg-warning "double-'free' of 'ptr'" } */
return result;
}