diff options
author | Marat Zakirov <m.zakirov@samsung.com> | 2014-11-18 08:46:39 +0000 |
---|---|---|
committer | Marat Zakirov <mzakirov@gcc.gnu.org> | 2014-11-18 08:46:39 +0000 |
commit | 9ca0032c9183c20247aa8b16650ad1c26e9cd3fd (patch) | |
tree | fa0e89f662222008a55de589be3b96b6f1bc3ecf /gcc/opts.c | |
parent | 24ebfddf68935c1eee6e91296040edc8a0ebb5d8 (diff) | |
download | gcc-9ca0032c9183c20247aa8b16650ad1c26e9cd3fd.zip gcc-9ca0032c9183c20247aa8b16650ad1c26e9cd3fd.tar.gz gcc-9ca0032c9183c20247aa8b16650ad1c26e9cd3fd.tar.bz2 |
opts.c (finish_options): Disable aggressive opts for sanitizer.
gcc
2014-11-18 Marat Zakirov <m.zakirov@samsung.com>
* opts.c (finish_options): Disable aggressive opts for sanitizer.
(common_handle_option): Move code to finish_options.
gcc/testsuite
2014-11-18 Marat Zakirov <m.zakirov@samsung.com>
* c-c++-common/asan/aggressive-opts.c: New test.
From-SVN: r217690
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -904,6 +904,19 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, if (opts->x_flag_sanitize_recover & SANITIZE_LEAK) error_at (loc, "-fsanitize-recover=leak is not supported"); + + /* When instrumenting the pointers, we don't want to remove + the null pointer checks. */ + if (opts->x_flag_sanitize & (SANITIZE_NULL | SANITIZE_NONNULL_ATTRIBUTE + | SANITIZE_RETURNS_NONNULL_ATTRIBUTE)) + opts->x_flag_delete_null_pointer_checks = 0; + + /* Aggressive compiler optimizations may cause false negatives. */ + if (opts->x_flag_sanitize) + { + opts->x_flag_aggressive_loop_optimizations = 0; + opts->x_flag_strict_overflow = 0; + } } #define LEFT_COLUMN 27 @@ -1622,12 +1635,6 @@ common_handle_option (struct gcc_options *opts, if (code != OPT_fsanitize_) break; - /* When instrumenting the pointers, we don't want to remove - the null pointer checks. */ - if (opts->x_flag_sanitize & (SANITIZE_NULL | SANITIZE_NONNULL_ATTRIBUTE - | SANITIZE_RETURNS_NONNULL_ATTRIBUTE)) - opts->x_flag_delete_null_pointer_checks = 0; - /* Kernel ASan implies normal ASan but does not yet support all features. */ if (opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS) |