aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2015-01-05 20:26:44 +0000
committerBernd Edlinger <edlinger@gcc.gnu.org>2015-01-05 20:26:44 +0000
commit0d5782429515e4abaa95a5e5be87a8998b3d9797 (patch)
treedefef3517c7cbb4f79b6a8c8ece2bde656db1d1c /gcc
parent04a11c01de8e1480ef155329062e78d5c915f943 (diff)
downloadgcc-0d5782429515e4abaa95a5e5be87a8998b3d9797.zip
gcc-0d5782429515e4abaa95a5e5be87a8998b3d9797.tar.gz
gcc-0d5782429515e4abaa95a5e5be87a8998b3d9797.tar.bz2
Enable experimental TSAN support for Ada.
2015-01-05 Bernd Edlinger <bernd.edlinger@hotmail.de> Enable experimental TSAN support for Ada. * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR. From-SVN: r219197
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tsan.c11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ba1d2b..923cea3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-05 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ Enable experimental TSAN support for Ada.
+ * tsan.c (instrument_expr): Handle VIEW_CONVERT_EXPR.
+
2015-01-05 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/64494
diff --git a/gcc/tsan.c b/gcc/tsan.c
index a5e8133..1bc146f 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -212,6 +212,17 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
build_int_cst (TREE_TYPE (expr), bitpos / BITS_PER_UNIT));
expr_ptr = build_fold_addr_expr (expr);
}
+ /* We can't call build_fold_addr_expr on a VIEW_CONVERT_EXPR.
+ This can occur in Ada. */
+ else if (TREE_CODE (expr) == VIEW_CONVERT_EXPR)
+ {
+ align = get_object_alignment (expr);
+ if (align < BITS_PER_UNIT)
+ return false;
+ expr = TREE_OPERAND (expr, 0);
+ gcc_checking_assert (is_gimple_addressable (expr));
+ expr_ptr = build_fold_addr_expr (unshare_expr (expr));
+ }
else
{
align = get_object_alignment (expr);