aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/escaping-1.c
blob: 2dfd02b9ede5f6cb7385758dfa7465759caa6371 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "analyzer-decls.h"

#define NULL ((void *)0)

extern void unknown_fn (void *);

static int only_used_by_test_1;

static void test_1 (void)
{
  int local_1, local_2;
  __analyzer_dump_escaped (); /* { dg-warning "escaped: 0: " } */

  unknown_fn (NULL);
  __analyzer_dump_escaped (); /* { dg-warning "escaped: 0: " } */

  unknown_fn (&local_1);
  __analyzer_dump_escaped (); /* { dg-warning "escaped: 1: 'local_1'" } */

  /* Should be idempotent.  */
  unknown_fn (&local_1);
  __analyzer_dump_escaped (); /* { dg-warning "escaped: 1: 'local_1'" } */

  /* Escape a static global.  */
  unknown_fn (&only_used_by_test_1);
  __analyzer_dump_escaped (); /* { dg-warning "escaped: 2: 'local_1', 'only_used_by_test_1'" } */
}