Viewing file: ubsan-1.c (1.19 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */ /* { dg-additional-options "-fsanitize=bounds" } */ /* { dg-require-effective-target alloca } */
#include <stdlib.h> #include "../analyzer-decls.h"
int test_1 (int *arr, int i, int n) { if (i >= n) return 0; return arr[i]; }
int test_2 (int *arr, int i, int n) { if (i >= n) return 0; if (arr[i]) __analyzer_eval (arr[i]); /* { dg-warning "TRUE" } */ else __analyzer_eval (arr[i]); /* { dg-warning "FALSE" } */ return 1; }
int test_3 (int arr[], int i, int n) { if (i >= n) return 0; if (arr[i]) __analyzer_eval (arr[i]); /* { dg-warning "TRUE" } */ else __analyzer_eval (arr[i]); /* { dg-warning "FALSE" } */ return 1; }
void test_4 (int i, int n) { int arr[n]; arr[i] = 42; __analyzer_eval (arr[i] == 42); /* { dg-warning "TRUE" } */ }
void test_5 (int i, int n) { int *arr = malloc (sizeof(int) * n); if (arr) { arr[i] = 42; __analyzer_eval (arr[i] == 42); /* { dg-warning "TRUE" } */ } free (arr); }
int global;
void test_6 (int i, int n) { int arr[n]; int saved = global; arr[i] = 42; __analyzer_eval (saved == global); /* { dg-warning "TRUE" } */ }
|