re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with...
re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize=undefined and vector types) PR sanitizer/77823 * ubsan.c (ubsan_build_overflow_builtin): Add DATAP argument, if it points to non-NULL tree, use it instead of ubsan_create_data. (instrument_si_overflow): Handle vector signed integer overflow checking. * ubsan.h (ubsan_build_overflow_builtin): Add DATAP argument. * tree-vrp.c (simplify_internal_call_using_ranges): Punt for vector IFN_UBSAN_CHECK_*. * internal-fn.c (expand_addsub_overflow): Add DATAP argument, pass it through to ubsan_build_overflow_builtin. (expand_neg_overflow, expand_mul_overflow): Likewise. (expand_vector_ubsan_overflow): New function. (expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB, expand_UBSAN_CHECK_MUL): Use tit for vector arithmetics. (expand_arith_overflow): Adjust expand_*_overflow callers. * c-c++-common/ubsan/overflow-vec-1.c: New test. * c-c++-common/ubsan/overflow-vec-2.c: New test. From-SVN: r242469
Showing
- gcc/ChangeLog 18 additions, 0 deletionsgcc/ChangeLog
- gcc/internal-fn.c 170 additions, 19 deletionsgcc/internal-fn.c
- gcc/testsuite/ChangeLog 6 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c 144 additions, 0 deletionsgcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
- gcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c 169 additions, 0 deletionsgcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c
- gcc/tree-vrp.c 5 additions, 1 deletiongcc/tree-vrp.c
- gcc/ubsan.c 16 additions, 9 deletionsgcc/ubsan.c
- gcc/ubsan.h 2 additions, 1 deletiongcc/ubsan.h
Loading
Please register or sign in to comment