From 2e955d50a928eac736c1e4a6eddc932d3400200a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 9 Nov 2016 16:37:28 +0100 Subject: flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE and SANITIZE_SHIFT_EXPONENT... * flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE and SANITIZE_SHIFT_EXPONENT, change SANITIZE_SHIFT to bitwise or of them, renumber other enumerators. * opts.c (sanitizer_opts): Add shift-base and shift-exponent. * doc/invoke.texi: Document -fsanitize=shift-base and -fsanitize-shift-exponent, document -fsanitize=shift as having those 2 suboptions. c-family/ * c-ubsan.c (ubsan_instrument_shift): Handle split -fsanitize=shift-base and -fsanitize=shift-exponent. testsuite/ * gcc.dg/ubsan/c99-shift-3.c: New test. * gcc.dg/ubsan/c99-shift-4.c: New test. * gcc.dg/ubsan/c99-shift-5.c: New test. * gcc.dg/ubsan/c99-shift-6.c: New test. From-SVN: r242005 --- gcc/opts.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gcc/opts.c') diff --git a/gcc/opts.c b/gcc/opts.c index 2f230ce..d2d6100 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1477,6 +1477,8 @@ const struct sanitizer_opts_s sanitizer_opts[] = SANITIZER_OPT (thread, SANITIZE_THREAD, false), SANITIZER_OPT (leak, SANITIZE_LEAK, false), SANITIZER_OPT (shift, SANITIZE_SHIFT, true), + SANITIZER_OPT (shift-base, SANITIZE_SHIFT_BASE, true), + SANITIZER_OPT (shift-exponent, SANITIZE_SHIFT_EXPONENT, true), SANITIZER_OPT (integer-divide-by-zero, SANITIZE_DIVIDE, true), SANITIZER_OPT (undefined, SANITIZE_UNDEFINED, true), SANITIZER_OPT (unreachable, SANITIZE_UNREACHABLE, false), -- cgit v1.1