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:
parent
92e29a5e86
commit
6d7649f8b7
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
22
gcc/testsuite/g++.dg/asan/pr81340.C
Normal file
22
gcc/testsuite/g++.dg/asan/pr81340.C
Normal 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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user