aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/strcpy-3.c
blob: a7b324fc445eacd22a602b298dd95643e8ebc584 (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
28
29
30
31
#include <string.h>
#include "analyzer-decls.h"

void test_1 (void)
{
  char str[] = "Hello";
  char buf[6];
  char *result = strcpy (buf, str);
  __analyzer_describe (1, result); /* { dg-warning "region_svalue.*?'buf'" } */
  __analyzer_eval (result == buf); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[0] == 'H'); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[1] == 'e'); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[2] == 'l'); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[3] == 'l'); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[4] == 'o'); /* { dg-warning "TRUE" } */
  __analyzer_eval (buf[5] == 0); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[0] == 'H'); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[1] == 'e'); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[2] == 'l'); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[3] == 'l'); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[4] == 'o'); /* { dg-warning "TRUE" } */
  __analyzer_eval (result[5] == 0); /* { dg-warning "TRUE" } */
  __analyzer_eval (strlen (result) == 5); /* { dg-warning "TRUE" } */
}

void test_2 (void)
{
  char buf[16];
  __builtin_strcpy (buf, "abc");
  __analyzer_eval (strlen (buf) == 3); /* { dg-warning "TRUE" } */
}