mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
034e3da912
DFSan has flags to control flows between pointers and objects referred by pointers. For example, a = *p; L(a) = L(*p) when -dfsan-combine-pointer-labels-on-load = false L(a) = L(*p) + L(p) when -dfsan-combine-pointer-labels-on-load = true *p = b; L(*p) = L(b) when -dfsan-combine-pointer-labels-on-store = false L(*p) = L(b) + L(p) when -dfsan-combine-pointer-labels-on-store = true The question is what to do with p += c. In practice we found many confusing flows if we propagate labels from c to p. So a new flag works like this p += c; L(p) = L(p) when -dfsan-propagate-via-pointer-arithmetic = false L(p) = L(p) + L(c) when -dfsan-propagate-via-pointer-arithmetic = true Reviewed-by: gbalats Differential Revision: https://reviews.llvm.org/D103176 |
||
---|---|---|
.. | ||
Inputs | ||
abilist_aggregate.ll | ||
abilist.ll | ||
args-unreachable-bb.ll | ||
arith.ll | ||
array.ll | ||
atomics.ll | ||
basic.ll | ||
call.ll | ||
callback.ll | ||
custom_fun_callback_attributes.ll | ||
custom_fun_varargs_attributes.ll | ||
debug-nonzero-labels.ll | ||
debug.ll | ||
dont_combine_offset_labels_on_gep.ll | ||
external_mask.ll | ||
fast16labels.ll | ||
load.ll | ||
memset.ll | ||
origin_abilist.ll | ||
origin_cached_shadows.ll | ||
origin_call.ll | ||
origin_load.ll | ||
origin_mem_intrinsic.ll | ||
origin_other_ops.ll | ||
origin_phi.ll | ||
origin_select.ll | ||
origin_store_threshold.ll | ||
origin_store.ll | ||
origin_track_load.ll | ||
phi.ll | ||
prefix-rename.ll | ||
select.ll | ||
shadow-args-zext.ll | ||
store.ll | ||
struct.ll | ||
uninstrumented_local_functions.ll | ||
union-large.ll | ||
union.ll | ||
unordered_atomic_mem_intrins.ll | ||
vector.ll |