re PR sanitizer/59333 (ICE with long long and -m32 -fsanitize=undefined)
authorMarek Polacek <polacek@redhat.com>
Thu, 5 Dec 2013 18:03:44 +0000 (18:03 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 5 Dec 2013 18:03:44 +0000 (18:03 +0000)
commit1769415d4a5b8da1a07ad91bb073c5ae50cebabd
treed6c513523dadd6906703a923781d3f66bc4ebeee
parent8fde427f4fa132c7d86197c6273c1ef4729f3ae5
re PR sanitizer/59333 (ICE with long long and -m32 -fsanitize=undefined)

PR sanitizer/59333
PR sanitizer/59397
* ubsan.c: Include rtl.h and expr.h.
(ubsan_encode_value): Add new parameter.  If expanding, assign
a stack slot for DECL_RTL of the temporary and call expand_assignment.
Handle BOOLEAN_TYPE and ENUMERAL_TYPE.
(ubsan_build_overflow_builtin): Adjust ubsan_encode_value call.
* ubsan.h (ubsan_encode_value): Adjust declaration.
* internal-fn.c (ubsan_expand_si_overflow_addsub_check): Move
ubsan_build_overflow_builtin above expand_normal call.  Surround this call
with push_temp_slots and pop_temp_slots.
(ubsan_expand_si_overflow_neg_check): Likewise.
(ubsan_expand_si_overflow_mul_check): Likewise.
testsuite/
* c-c++-common/ubsan/pr59333.c: New test.
* c-c++-common/ubsan/pr59397.c: New test.

From-SVN: r205714
gcc/ChangeLog
gcc/internal-fn.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/ubsan/pr59333.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/ubsan/pr59397.c [new file with mode: 0644]
gcc/ubsan.c
gcc/ubsan.h