1// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -DFORCE_ZERO_LABELS -o %t && %run %t
2// RUN: %clang_dfsan %s -o %t && %run %t
3
4#include <sanitizer/dfsan_interface.h>
5
6#include <assert.h>
7
8int function_to_force_zero(int i, int* out) {
9 *out = i;
10 return i;
11}
12
13int main(void) {
14 int i = 1;
15 dfsan_label i_label = 2;
16 dfsan_set_label(label: i_label, addr: &i, size: sizeof(i));
17
18 int out = 0;
19 int ret = function_to_force_zero(i, out: &out);
20
21#ifdef FORCE_ZERO_LABELS
22 assert(dfsan_get_label(out) == 0);
23 assert(dfsan_get_label(ret) == 0);
24#else
25 assert(dfsan_get_label(out) == i_label);
26 assert(dfsan_get_label(ret) == i_label);
27#endif
28
29 return 0;
30}
31

source code of compiler-rt/test/dfsan/force_zero.c