PR sanitizer/77823
commit221900427cddb27fc4ff171aa51dea7cdb4012b7
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2016 08:28:50 +0000 (16 08:28 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2016 08:28:50 +0000 (16 08:28 +0000)
tree9fffaa05cb502bdcbfd169cbadc603c4b6d31f2a
parent397d0e43abb943f1fe57801220e7e46bc6636c7c
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242469 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/internal-fn.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c [new file with mode: 0644]
gcc/tree-vrp.c
gcc/ubsan.c
gcc/ubsan.h