aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2017-06-28 09:59:23 +0200
committerMartin Liska <marxin@gcc.gnu.org>2017-06-28 07:59:23 +0000
commit6dc61b4533d9b58c10a57761378701e2f9d1b9c0 (patch)
treed60813334f2635c212881c64cdbfa4f43714df77 /gcc
parent576f123b8342072609eb78e6d36736c2e469cda0 (diff)
downloadgcc-6dc61b4533d9b58c10a57761378701e2f9d1b9c0.zip
gcc-6dc61b4533d9b58c10a57761378701e2f9d1b9c0.tar.gz
gcc-6dc61b4533d9b58c10a57761378701e2f9d1b9c0.tar.bz2
Bail out HARD_REGISTER vars in asan (PR sanitizer/81224).
2017-06-28 Martin Liska <mliska@suse.cz> PR sanitizer/81224 * asan.c (instrument_derefs): Bail out inner references that are hard register variables. 2017-06-28 Martin Liska <mliska@suse.cz> PR sanitizer/81224 * gcc.dg/asan/pr81224.c: New test. From-SVN: r249728
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/asan.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/asan/pr81224.c11
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ff71efa..a70b03d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-28 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/81224
+ * asan.c (instrument_derefs): Bail out inner references
+ that are hard register variables.
+
2017-06-28 Jakub Jelinek <jakub@redhat.com>
PR target/81175
diff --git a/gcc/asan.c b/gcc/asan.c
index e730530..3f81481 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1875,6 +1875,9 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
|| bitsize != size_in_bytes * BITS_PER_UNIT)
return;
+ if (VAR_P (inner) && DECL_HARD_REGISTER (inner))
+ return;
+
if (VAR_P (inner)
&& offset == NULL_TREE
&& bitpos >= 0
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f2f9a3e..178b236 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-28 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/81224
+ * gcc.dg/asan/pr81224.c: New test.
+
2017-06-28 Eric Botcazou <ebotcazou@adacore.com>
* gcc.dg/tree-prof/val-profiler-threads-1.c (main): Fix 2nd argument
diff --git a/gcc/testsuite/gcc.dg/asan/pr81224.c b/gcc/testsuite/gcc.dg/asan/pr81224.c
new file mode 100644
index 0000000..def5cb6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/pr81224.c
@@ -0,0 +1,11 @@
+/* PR sanitizer/80659 */
+/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-additional-options "-msse2" } */
+
+int a;
+int
+b ()
+{
+ register __attribute__ ((__vector_size__ (4 * sizeof (int)))) int c asm("xmm0");
+ return c[a];
+}