aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-08-27 15:21:28 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-08-27 13:21:28 +0000
commit47c3496bf898e9dfe12799ef6e31ae9b9211c63d (patch)
treea380f3ec58ab3725fe955cde6665f72ac5fa7692
parent6b60ee204f80649803dc78c24ab9c94ff8f51789 (diff)
downloadgcc-47c3496bf898e9dfe12799ef6e31ae9b9211c63d.zip
gcc-47c3496bf898e9dfe12799ef6e31ae9b9211c63d.tar.gz
gcc-47c3496bf898e9dfe12799ef6e31ae9b9211c63d.tar.bz2
Sanopt: ignore params with DECL_HAS_VALUE_EXPR_P (PR sanitizer/86962).
2018-08-27 Martin Liska <mliska@suse.cz> PR sanitizer/86962 * sanopt.c (sanitize_rewrite_addressable_params): Ignore params with DECL_HAS_VALUE_EXPR_P. 2018-08-27 Martin Liska <mliska@suse.cz> PR sanitizer/86962 * gcc.dg/asan/pr86962.c: New test. From-SVN: r263882
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/sanopt.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/asan/pr86962.c13
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6c79e41..6a04712 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-08-27 Martin Liska <mliska@suse.cz>
+ PR sanitizer/86962
+ * sanopt.c (sanitize_rewrite_addressable_params): Ignore
+ params with DECL_HAS_VALUE_EXPR_P.
+
+2018-08-27 Martin Liska <mliska@suse.cz>
+
* config/i386/i386.c (ix86_expand_set_or_movmem): Dump
selected expansion strategy.
diff --git a/gcc/sanopt.c b/gcc/sanopt.c
index 223c06a..082f936 100644
--- a/gcc/sanopt.c
+++ b/gcc/sanopt.c
@@ -1165,13 +1165,15 @@ sanitize_rewrite_addressable_params (function *fun)
gimple_add_tmp_var (var);
+ /* We skip parameters that have a DECL_VALUE_EXPR. */
+ if (DECL_HAS_VALUE_EXPR_P (arg))
+ continue;
+
if (dump_file)
fprintf (dump_file,
"Rewriting parameter whose address is taken: %s\n",
IDENTIFIER_POINTER (DECL_NAME (arg)));
- gcc_assert (!DECL_HAS_VALUE_EXPR_P (arg));
-
SET_DECL_PT_UID (var, DECL_PT_UID (arg));
/* Assign value of parameter to newly created variable. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6e6ffd8..4f49ffd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-08-27 Martin Liska <mliska@suse.cz>
+ PR sanitizer/86962
+ * gcc.dg/asan/pr86962.c: New test.
+
+2018-08-27 Martin Liska <mliska@suse.cz>
+
* gcc.dg/tree-prof/val-prof-10.c: New test.
2018-08-27 Martin Liska <mliska@suse.cz>
diff --git a/gcc/testsuite/gcc.dg/asan/pr86962.c b/gcc/testsuite/gcc.dg/asan/pr86962.c
new file mode 100644
index 0000000..7a8cfa9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/pr86962.c
@@ -0,0 +1,13 @@
+/* PR sanitizer/86962 */
+/* { dg-do compile } */
+
+extern int dummy (int *);
+
+void foo(int i)
+{
+ int j=i;
+
+ void bar() { int x=j, y=i; }
+
+ dummy(&i);
+}