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
This commit is contained in:
Martin Liska 2017-07-28 13:56:47 +02:00 committed by Martin Liska
parent 92e29a5e86
commit 6d7649f8b7
4 changed files with 36 additions and 2 deletions

View File

@ -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

View File

@ -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);
}
}

View File

@ -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

View File

@ -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);
}