aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorMarat Zakirov <m.zakirov@samsung.com>2014-11-18 08:46:39 +0000
committerMarat Zakirov <mzakirov@gcc.gnu.org>2014-11-18 08:46:39 +0000
commit9ca0032c9183c20247aa8b16650ad1c26e9cd3fd (patch)
treefa0e89f662222008a55de589be3b96b6f1bc3ecf /gcc/opts.c
parent24ebfddf68935c1eee6e91296040edc8a0ebb5d8 (diff)
downloadgcc-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.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index d22882b..a83345b 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -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)