diff options
author | Martin Liska <mliska@suse.cz> | 2017-07-28 13:56:47 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2017-07-28 11:56:47 +0000 |
commit | 6d7649f8b71f9a16b5e9de0b3f8826c5039fa069 (patch) | |
tree | 813973611a321535c3cd8332ad2c600149d0820b | |
parent | 92e29a5e86c8adc88ee17a483d7284d7bb9e090c (diff) | |
download | gcc-6d7649f8b71f9a16b5e9de0b3f8826c5039fa069.zip gcc-6d7649f8b71f9a16b5e9de0b3f8826c5039fa069.tar.gz gcc-6d7649f8b71f9a16b5e9de0b3f8826c5039fa069.tar.bz2 |
Set DECL_VALUE_EXPR after a debug stmt is generated (PR sanitizer/81340).
2017-07-28 Martin Liska <mliska@suse.cz>
PR sanitizer/81340
* sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
gimple_build_debug_bind.
2017-07-28 Martin Liska <mliska@suse.cz>
PR sanitizer/81340
* g++.dg/asan/pr81340.C: New test.
From-SVN: r250660
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/sanopt.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/asan/pr81340.C | 22 |
4 files changed, 36 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 964fa1c..5aaf585 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-07-28 Martin Liska <mliska@suse.cz> + + PR sanitizer/81340 + * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after + gimple_build_debug_bind. + 2017-07-28 Richard Biener <rguenther@suse.de> PR tree-optimization/81502 diff --git a/gcc/sanopt.c b/gcc/sanopt.c index b845f2f..f6dd14d 100644 --- a/gcc/sanopt.c +++ b/gcc/sanopt.c @@ -916,8 +916,6 @@ sanitize_rewrite_addressable_params (function *fun) IDENTIFIER_POINTER (DECL_NAME (arg))); gcc_assert (!DECL_HAS_VALUE_EXPR_P (arg)); - DECL_HAS_VALUE_EXPR_P (arg) = 1; - SET_DECL_VALUE_EXPR (arg, var); SET_DECL_PT_UID (var, DECL_PT_UID (arg)); @@ -946,6 +944,9 @@ sanitize_rewrite_addressable_params (function *fun) gimple_seq_add_stmt (&stmts, g); clear_value_expr_list.safe_push (arg); } + + DECL_HAS_VALUE_EXPR_P (arg) = 1; + SET_DECL_VALUE_EXPR (arg, var); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 396f0b1..b82e9bd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-07-28 Martin Liska <mliska@suse.cz> + + PR sanitizer/81340 + * g++.dg/asan/pr81340.C: New test. + 2017-07-28 Richard Biener <rguenther@suse.de> PR tree-optimization/81502 diff --git a/gcc/testsuite/g++.dg/asan/pr81340.C b/gcc/testsuite/g++.dg/asan/pr81340.C new file mode 100644 index 0000000..76ac08a --- /dev/null +++ b/gcc/testsuite/g++.dg/asan/pr81340.C @@ -0,0 +1,22 @@ +// { dg-options "-fsanitize=address -O2 -g -Wno-write-strings" } + +class a { + struct b { + b(int, int); + } c; + +public: + int d; + a(char *) : c(0, d) {} +}; +class e { + int f(const int &, const int &, const int &, bool, bool, bool, int, bool); +}; +class g { +public: + static g *h(); + void i(a, void *); +}; +int e::f(const int &, const int &, const int &, bool j, bool, bool, int, bool) { + g::h()->i("", &j); +} |