Commit 6d7649f8 by Martin Liska Committed by Martin Liska

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
parent 92e29a5e
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> 2017-07-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/81502 PR tree-optimization/81502
......
...@@ -916,8 +916,6 @@ sanitize_rewrite_addressable_params (function *fun) ...@@ -916,8 +916,6 @@ sanitize_rewrite_addressable_params (function *fun)
IDENTIFIER_POINTER (DECL_NAME (arg))); IDENTIFIER_POINTER (DECL_NAME (arg)));
gcc_assert (!DECL_HAS_VALUE_EXPR_P (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)); SET_DECL_PT_UID (var, DECL_PT_UID (arg));
...@@ -946,6 +944,9 @@ sanitize_rewrite_addressable_params (function *fun) ...@@ -946,6 +944,9 @@ sanitize_rewrite_addressable_params (function *fun)
gimple_seq_add_stmt (&stmts, g); gimple_seq_add_stmt (&stmts, g);
clear_value_expr_list.safe_push (arg); clear_value_expr_list.safe_push (arg);
} }
DECL_HAS_VALUE_EXPR_P (arg) = 1;
SET_DECL_VALUE_EXPR (arg, var);
} }
} }
......
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> 2017-07-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/81502 PR tree-optimization/81502
......
// { 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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment