aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-04-30 10:52:39 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-04-30 10:52:39 +0200
commitabc27962b81152a9c68108b2e11e8a90129a46e9 (patch)
tree8a3d7a7b22017e4955b031f6a31a1e1e9053d05f /gcc
parenta46d0aff5ed746e3f8c6c8b94cd86e3a29918300 (diff)
downloadgcc-abc27962b81152a9c68108b2e11e8a90129a46e9.zip
gcc-abc27962b81152a9c68108b2e11e8a90129a46e9.tar.gz
gcc-abc27962b81152a9c68108b2e11e8a90129a46e9.tar.bz2
re PR sanitizer/57104 (ICE: in expand_expr_addr_expr_1, at expr.c:7594 with -fsanitize=thread and hardreg variable)
PR tree-optimization/57104 * tsan.c (instrument_expr): Don't instrument accesses to DECL_HARD_REGISTER VAR_DECLs. * gcc.dg/pr57104.c: New test. From-SVN: r198445
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr57104.c12
-rw-r--r--gcc/tsan.c4
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 62248a6..236a905 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57104
+ * tsan.c (instrument_expr): Don't instrument accesses to
+ DECL_HARD_REGISTER VAR_DECLs.
+
2013-04-30 Richard Biener <rguenther@suse.de>
* function.h (loops_for_fn): New inline function.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 56f3ac8..77183fe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57104
+ * gcc.dg/pr57104.c: New test.
+
2013-04-29 Uros Bizjak <ubizjak@gmail.com>
PR target/44578
diff --git a/gcc/testsuite/gcc.dg/pr57104.c b/gcc/testsuite/gcc.dg/pr57104.c
new file mode 100644
index 0000000..3a7013b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr57104.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/57104 */
+/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */
+/* { dg-options "-fsanitize=thread" } */
+
+register int r asm ("r14");
+int v;
+
+int
+foo (void)
+{
+ return r + v;
+}
diff --git a/gcc/tsan.c b/gcc/tsan.c
index 79b8bc3..a3b6565 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -128,7 +128,9 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
return false;
}
- if (TREE_READONLY (base))
+ if (TREE_READONLY (base)
+ || (TREE_CODE (base) == VAR_DECL
+ && DECL_HARD_REGISTER (base)))
return false;
if (size == 0